Как выполнить «копирование» / «вставку» для конкретной записи таблицы и ее дочерних узлов? - PullRequest
0 голосов
/ 14 ноября 2018

Есть таблица базы данных. (MS Access)
На основе таблицы формируется дерево.

поле ID - автоинкремент (формируется из базы данных).

Сценарий:
1. Пользователь. Выбирает узел для копирования;
2. Пользователь. Выбирает узел, куда копировать;
3. Программа. Получает строку узла для копирования;
4. Программа. Копирует строку «2 1 0 AA Node Level_2» и связанные строки как дочерние линии (узлы) в узел «16 13 2 CC Node Level_2», который указан как «получатель»;
5. Программа. Обновляет таблицу базы данных на основе изменений в DataTable.

Вопрос.
Как программно «скопировать» и «вставить» для конкретной записи таблицы (DataTable) и ее дочерних узлов (строк) с любой вложенностью узлов?
Вопрос означает, как выполнить пункт 3, пункт 4?

В результате в исходной таблице должны появиться дополнительные записи.
ID // PrID // сортировка // NodeName // field_1 // field_2 // field_3
18 16 0 Узел AA Level_2
19 18 0 Узел AAA Level_3
20 19 0 AAAA Node Level_4
21 19 1 Узел AAAB Level_4
23 19 2 Узел AAAC Level_4_Изм_3

Дерево на основе исходной таблицы
Tree based on source table

public void connect()
        {
            string catBD = @"c:\test\visualStudio\csharp\01\01.accdb";
            string conBD = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", catBD);

            OleDbConnection connection = new OleDbConnection(conBD);

            connection.Open();

            string query1 = "SELECT * FROM TableTreeView_12_0";
            OleDbCommand cmd1 = new OleDbCommand(query1, connection);


            dt = new DataTable();

            adapter = new OleDbDataAdapter(cmd1);
            cb = new OleDbCommandBuilder(adapter);

            adapter.Fill(dt);

        }

Исходная таблица
ID // PrID // сортировка // NodeName // field_1 // field_2 // field_3
1 0 0 A Узел Level_1_изм_2
2 1 0 Узел AA Level_2
3 2 0 Узел AAA Level_3
4 3 0 Узел AAAA Level_4
5 3 1 Узел AAAB Level_4
6 3 2 Узел AAAC Level_4_Изм_3
7 1 1 AB Узел Level_2
8 1 2 AC Node Level_2
9 0 1 B Узел Уровень_1
10 9 0 BA Node Level_2
11 9 1 BB Узел Level_2
12 9 2 г. до н.э. Узел Уровень_2
13 0 2 C Узел Уровень_1
14 13 0 CA Node Level_2
15 13 1 CB Узел Level_2
16 13 2 CC Node Level_2
17 13 3 CD Node Level_2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...