Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
6-76058
sergey2
2003-01-05 22:21
2003.02.24
Что здесь неправильно?


14-76169
Yarmak_Sergey
2003-02-08 15:17
2003.02.24
Помогите выбрать программу


1-75883
Alex Krotov
2003-02-14 00:39
2003.02.24
на каком языке написана


9-75739
Drunken Cat
2002-09-12 19:05
2003.02.24
DelphiX, обработка сообщений в не активном приложении...


14-76100
Nox
2003-02-09 22:28
2003.02.24
IP по UIN у





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский