Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.24;
Скачать: CL | DM;

Вниз

редактирование результатов 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
1-75946
happyboy
2003-02-11 18:31
2003.02.24
PopupMenu и спец. фонты


6-76054
mady
2002-12-24 23:50
2003.02.24
БЕЗ ПИВА НЕ ПИШЕТСЯ КАК СЧИТАТЬ ТРАФИК (ПОМОГИТЕ)


14-76131
AlexZ
2003-02-06 07:51
2003.02.24
Не загружаются дайджесты


3-75742
BlackTiger
2003-02-04 15:10
2003.02.24
DevExpress Grid4: Как правильно раскрашивать ячейки по условию?


14-76127
zzet
2003-02-06 16:38
2003.02.24
brcc32.exe resource.rc