2010-04-09 1 views
2

У меня есть 2 adoconnections и 2 datatables в каждом соединении (Local Table1_master Table1_Detail) (Network Table1_master Table1_Detail). Я показываю их в DBgrid, и теперь я хотел бы обновить (Local Table1_master Table1_Detail) из таблиц в таблице (Таблица Table1_master Table1_Detail). Как я могу обновить выбранные записи?Как обновить выбранную запись в наборе данных и обновить другую дату в другом Adoconnection?

Я пробовал много способов, но обычно он вставляет больше записей и не обновляет запись.

Я использую базу данных .MDB.

ответ

1

Вы можете использовать старый мастер -> новый подход мастера. Верните оба набора данных, отсортированные одинаково, и пропустите каждый список одновременно. если table1.key> table2.key, то у вас есть запись в таблице2, которая не существует в таблице1 ... вы можете удалить запись в таблице2 или увеличить курсор. Если table1.key < table2.key, то вам не хватает записи в таблице2, поэтому вставьте новую запись. если table1.key = table2.key, то вы можете выполнить свою логику обновления. если table1 заканчивается, а table2 - нет, тогда остальная таблица2 не существует в таблице1 (возможно, удаляется). Если ваш в конце таблицы2, но не в конце таблицы1, то остальные таблицы1 являются вставками.

Приятная вещь в этом подходе заключается в том, что вы только каждый раз проходите каждую таблицу и ее в том же цикле.

+0

для меня попробовать много вещей, но, возможно, это работает, это лучший способ сделать это для таблицы мастеров и деталей? есть код, который я могу ИЗУЧЕНИЕ .. Спасибо TableMaster (metria_Sub_Sub) numeracao_sub долго AUTO numeracao долго Foto1 текст (50) Foto2 текст (50) Analisefoto1 текст (50) Observações памятка Y Obra текст (250) Designação_equipamento текст (250) DetailTable длиной numeracao_sub_EQ АВТО numeracao_sub длиной Designação_equipamento текст (250) Tensão текст (50) Potencia текст (50) Tipo_equipamento текст (50) Localização текст (50) Foto_PontosMed текст (50) InterruptorDiferencial текст (50) –