Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];




Вниз

Уважаемые ГУРУ! Помогите чайнику немытому связать два датасета - II 


ZDN   (2002-03-20 10:17) [0]

Уважаемые ГУРУ! Помогите чайнику немытому связать два датасета, пожалуйста -
II

Это уже обсуждалось здесь:
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1016175548&n=1
Спасибо всем, кто помог, но проблема оказалась намного сложнее чем я
предполагал.

Сходная ситуация вот здесь
http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1016295466&n=1
/кэширование данных связанных таблиц/

Краткое описание проблемы:

Создал 2 IBDataSet"а: ClientDataSet и CarsDataSet, написал для них все
запросы InsertSQL, DeleteSQL и т.п. SelectSQL: SELECT * FROM CARS
WHERE IDCLIENT=:CLIENT.IDCLIENT;
InsertSQL: INSERT INTO CARS (IDCLIENT, MARKA) VALUES (:IDCLIENT,
:MARKA)
ModifySQL: UPDATE CARS SET MARKA=:MARKA WHERE IDCARS=:Old_IDCARS
ClientDataSet - главный, CarsDataSet -подчиненный, DataSource для
CarsDataSet сделал равным ClientSource
Включил кэширование. Для навигации по записям использую 2 DBNavigator"a.
При вставке новой записи в CarsDataSet делаю так:

procedure TDM.CarsDataSetAfterInsert(DataSet: TDataSet);
begin
if CarsSource.State=dsInsert then
begin
CarsQuery.Open;
DataSet.FieldValues["IDCARS"]:=CarsQuery.Fields[0].asInteger;

DataSet.FieldValues["IDCLIENT"]:=DM.ClientDataSet.FieldValues["IDCLIENT"];
CarsQuery.Close;
end;
end;

Проблема в следующем: вношу изменения в CarsDataSet. Если по нажатию кнопки
не сохраняю данные на сервере,
Try
DM.UnalDB.ApplyUpdates([DM.CarsDataSet]);
Except
MessageDlg("Изменения не сохранены", mtError, [mbOK], 0);
DM.CarsDataSet.CancelUpdates;
End;
то при навигации, вставке новой записи в СlientDataSet теряются
кэшированные данные в CarsDataSet.
Здесь http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1016295466&n=1
предлагалось "перед перемещениием по master реши - сохранять или сбрасывать
изменения в detail"
А по другому нельзя?
Думаю дискуссия по этой проблеме будет интересна многим.



Alexandr   (2002-03-20 10:19) [1]

а какая тут дискуссия? Однозначно, изменения надо сохранять при перемещении по мастеру, т.к. при этот datail переоткрывается и несохраненные изменения теряются.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.02 c
6-32916           j21                   2002-01-26 18:37  2002.04.11  
Inet


3-32640           Malder                2002-03-15 20:45  2002.04.11  
Ограничение полномочий пользователей...


1-32742           dimonf                2002-03-29 09:39  2002.04.11  
Народ, подскажите, как мне вывести на печать TConvas Panel-и?


6-32922           Ghost.                2002-01-27 00:20  2002.04.11  
Инфа по Winsock


1-32748           cok                   2002-03-29 20:51  2002.04.11  
Explorer.exe