Главная страница
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.013 c
3-75750
T{}r(l-l
2003-02-05 15:18
2003.02.24
Процедура на T-SQL


1-76010
vogus
2003-02-12 19:17
2003.02.24
Почему MDIChild сначала появляется, а потом разворачивается


3-75748
Романов Р.В.
2003-02-05 10:54
2003.02.24
Delete from table


14-76120
KonstVD
2003-02-06 09:26
2003.02.24
Кто я?


1-76015
umkanedo
2003-02-13 12:03
2003.02.24
OnClick всегда срабатывает при DblClick?