Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
3-83373
Inkotex
2003-05-05 19:34
2003.05.26
Многопользовательность в БД


3-83372
Raduga
2003-05-06 10:43
2003.05.26
Недостаток физической памяти


14-83650
Dimaz-z
2003-05-02 20:48
2003.05.26
Как уменьшить размер оперативной памяти, занимаемый программой?


1-83495
EugeneL
2003-05-15 12:14
2003.05.26
Передача параметров из Microsoft ScriptControl


11-83430
Jazzy$
2002-08-20 15:36
2003.05.26
Listview + ImageList





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский