Форум: "Базы";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
ВнизADOStoreProc и DBGrid Найти похожие ветки
← →
gizar (2003-05-05 08:33) [0]Здравствуйте Уважаемые!
Вопрос в следующем:
Исходные: Таблица А с primary key Id и foreigan key Id_B, и скажем полем FieldA; таблица B c primary key Id и полем FieldB. Обе таблице реализованы в SQL 7.0.
Вопрос:
Я пытаюсь организовать вывод и редактирование данных в DBGrid через ADO компоненты (ADO connection, ADO stored procedure). Сохраненная процедура имеет следующий вид:
select A.FieldA, B.FieldB from A, B
where A.Id_b = B.Id
т.е. мы пытаемся редактировать таблицу A.
Все хорошо отражается, но НЕ РЕДАКТИРУЕТСЯ.
При отображениии результатов ADOStoredProc в DBGrid мы получаем подстановку вместо ключа значений из поля FieldB. Соответственно при редактировании в данном изложении Таблицы A таблица B соответсвенно тоже редактируется.
Как с этим бороться? Т.е. как отображать с подстановкой значений из таблицы B, а редактировать только таблицу A соответсвенно подставляя в поле Id_B значение ключа , а не поля FieldB.
С уважением
← →
Соловьев (2003-05-05 10:00) [1]
> select A.FieldA, B.FieldB from A, B
> where A.Id_b = B.Id
> т.е. мы пытаемся редактировать таблицу A.
> Все хорошо отражается, но НЕ РЕДАКТИРУЕТСЯ.
> При отображениии результатов ADOStoredProc в DBGrid мы получаем
> подстановку вместо ключа значений из поля FieldB.
ну и за чем тебе SP?
ADODataSet и забудь пока про SP.
← →
Соловьев (2003-05-05 10:11) [2]
> Все хорошо отражается, но НЕ РЕДАКТИРУЕТСЯ.
не внимательно я посмотрел, у тебя же соединение 2-х таблиц, так оно редактируется только через ADoQuery или ADOCommand
← →
gizar (2003-05-05 13:15) [3]нет вроде у меня работает все через ADOStoredProc работает...
А что через ADODataSet..., есть вариант?
← →
jocko (2003-05-05 13:57) [4]я конечно не спесиалист, но
> select A.FieldA, B.FieldB from A, B
кажется называется декартовым произведением, интересно и что же тут вообще можно редактировать?
select A.FieldA, B.FieldB from A inner join B on A.Id_b = B.Id
кажется более осмысленным, однако, редактирование опять таки будет возможным только если связи таблиц одна к одной, иначе будет ругаться, типа что запись была изменена и т.д.
А какой компонент используется ADoQuery или ADODataSet не имеет значения - они суть одно и то же.
Вывод - использовать для upd и ins хран. процедуру. и лукап поля.
← →
gizar (2003-05-05 15:16) [5]
-А какой компонент используется ADoQuery или ADODataSet не
-имеет значения - они суть одно и то же.
-Вывод - использовать для upd и ins хран. процедуру. и лукап
-поля.
А нельзя ли поподробнее ?
А поповоду редактирования: радектировать нужно таблицу A отображая при этом в гриде вместо A.id_b B.FieldB...
← →
jocko (2003-05-05 16:19) [6]Вариантов много, по аглицки это пишется lookup можно посмотреть в хелпе :)
В приведенном варианте кажется можно ничего и не связывать в селекте а просто выполнить отдельно 2 запроса (основной А + справочник В) и потом или в набор А добавить поле lookup, либо вообще можно использовать dbLookupComboBox - еще проще.
а потом выполнять сохранение на сервере с помощью хран процедуры, в которую передавать в кач. параметров значения полей А.
← →
gizar (2003-05-06 08:29) [7]--и потом или в набор А добавить поле lookup,
в смысле добавить поле lookup, в хелпе написано что lookup осуществляет поиск...?
не совсем понятно ...
← →
gizar (2003-05-06 12:34) [8]И все же может кто подскажет...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c