Форум: "Базы";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];
Вниз
редактирование результатов join-запроса (ADO, MS SQL) Найти похожие ветки
← →
nikkie (2003-02-05 00:00) [0]Есть основная таблица (T) + справочник (D). В справочнике пара полей - CODE + NAME. В основной таблице есть ссылка на справочник (CODE). Данные отбираются join-запросом и показываются в DBGrid.
select T.*, D.NAME from T left outer join D on T.CODE = D.CODE
Программа добавляет новую запись с помощью Insert + Post. Пользователь заполняет поля T.*, в том числе T.CODE. Соответствующий NAME я подтягиваю. Хотелось бы отобразить NAME для новой записи в гриде. Однако, изменение поля NAME в dataset приводит к изменению поля в справочнике D, что нежелательно.
Через BDE все вероятно решилось бы с помощью TUpdateSQL. Что можно сделать через ADO?
← →
sniknik (2003-02-05 01:12) [1]ADOCommand
← →
Snake (2003-02-05 04:31) [2]На Королевстве есть такая фича, как ваще работать с ADO и с объединениями в том числе, вот:
http://www.delphikingdom.com/helloworld/ado02.htm
← →
stone (2003-02-05 09:54) [3]Если уж ты вносишь изменения напрямую, то лучше выбирать только Т.* , а D.NAME подставить как Lookup поле
← →
nikkie (2003-02-05 18:54) [4]2 sniknik
Будьте добры объяснить, как использование ADOCommand может здесь помочь.
2 Snake
Спасибо огромное, эта и следующая (ado03.htm) статьи дали вариант решения проблемы. Выставление св-ва Update Resync, как написано в статье не помогает - видимо здесь разница между Access и MS SQL. Помогает только одновременное выставление всех трех св-в Update Resync, Unique Table и Resync Command.
Кстати, только что пришло в голову - как Resync Command будет работать если у меня в primary key более одного поля? Надо проверить, скорее всего работать не будет...
2 stone
Lookup мне кажется не удачным решением. Что делать если справочник не маленький? Перетаскивать его полностью на клиента и искать в нем на клиенте? Для каждой записи в датасете запускать запрос на сервер?
>Если уж ты вносишь изменения напрямую...
Необязательно. Я готов и руками написать insert, update, delete. Я только хочу видеть изменения сразу в dataset (refresh и close/open не предлагать).
Если у кого-нибудь есть еще идеи реализации редактирования данных - напишите.
← →
sniknik (2003-02-05 19:00) [5]TUpdateSQL нет можно только эмулировать через ADOCommand - insert, update, delete
← →
nikkie (2003-02-05 19:34) [6]2 sniknik
Так как эмулировать-то? Я могу сделать insert, только это никак не отобразится на датасете.
← →
sniknik (2003-02-05 19:47) [7]> Через BDE все вероятно решилось бы с помощью TUpdateSQL. Что можно сделать через ADO?
я так понял, что именно с апдейтом проблемы.
← →
nikkie (2003-02-05 19:50) [8]нет, проблема в том, что
>Хотелось бы отобразить NAME для новой записи в гриде
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.02.24;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c