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

Вниз

Изменения в связанных таблицах   Найти похожие ветки 

 
Abu   (2002-06-04 10:41) [0]

Есть ADODataSet1 c CommandText, н-р,
CommandText="SELECT A.BData Data, B.SName Nam FROM Basa1 A FULL JOIN Basa2 B ON A.ID_B2=B.ID"

Теперь если надо поменять значение в поле "Nam" DataSet-a - в базе меняется не A.ID_B2, а B.SName - поле справочника.
Если поменять значение поля A.ID_B2 через ADOCommand, то как обновить данные в DataSet-e? Ведь присваивание ADODataSet1.FieldByName("Nam").Value="..."
опять пытается изменить значение в справочнике.


 
Abu   (2002-06-04 12:09) [1]

Ребят, что все так безнадежно? Или не понятно?


 
Johnmen ©   (2002-06-04 12:21) [2]

Не очень понятно....
Какие компоненты (Data-Aware) используются ?


 
Abu   (2002-06-04 12:55) [3]

Попробую сначала. Есть таблицы:
Base2 - (справочник)
ID SName
1 что-то1
2 что-то2
3 что-то3

и Base1 (использующая его)
BData ID_B2
01.01.01 1
02.01.01 3
05.05.02 1

В ADODataSet1 выбираются данные из Base1, но вместо ID_B2 подставляются значения SName из Base2:
ADODataSet1.CommandText="SELECT A.BData Data, B.SName Nam FROM Basa1 A FULL JOIN Basa2 B ON A.ID_B2=B.ID" (1)

Теперь что делать, если хочу изменить значение поля ID_B2 в Base1. Если меняешь соответствующее значение в ADODataSet1 (хоть программно, хоть вручную) - Delphi пытается поменять не ID_B2 в Base1, а SName в Base2. Если поменять значение в БД через запрос, с пом.ADOCommand н-р, то как обновить именно это значение в ADODadaSet1, или обязательно снова повторять выполнение запроса (1)?

А может я, вообще, неправильно делаю?



 
Johnmen ©   (2002-06-04 13:02) [4]

>>>Если меняешь соответствующее значение в ADODataSet1 (хоть программно,...

А как меняешь то ?...


 
wicked ©   (2002-06-04 13:13) [5]

2 Abu
скорей всего, неправильно... ;) подвязывай справочник не через full join, а средствами dataset, то есть через lookup-поля... с ними-то, надеюсь, умеешь работать?...


 
Abu   (2002-06-04 13:14) [6]

ADODataSet1.FieldByName("Nam").Value :=ComboBoxK.Text;



 
Johnmen ©   (2002-06-04 13:27) [7]

да, похоже тебе надо lookup-поля, см.wicked © (04.06.02 13:13)


 
Abu   (2002-06-04 14:04) [8]

Спасибо.

>wicked ©
уже умею :)



Страницы: 1 вся ветка

Текущий архив: 2002.06.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
1-88871
j_onion
2002-06-14 10:19
2002.06.27
Создание форм


3-88766
Perec
2002-06-05 09:56
2002.06.27
Изменение наименования поля таблицы через системные таблыцы


4-89073
Sirus
2002-04-30 07:31
2002.06.27
Как изменить текущее разрешение экрана и цвет рабочего стола


1-88873
Alex is Fecit
2002-06-13 20:32
2002.06.27
SpinEdit!!!


3-88695
IC
2002-06-01 13:00
2002.06.27
Стандартный TDBLookupComboBox