Форум: "Базы";
Поиск по всему сайту: 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.024 c
1-32871           skovorodka            2002-03-29 14:20  2002.04.11  
Помогите, как потаскать форму за выступающие части кроме синей полоски ?


3-32706           Борис                 2002-03-22 08:31  2002.04.11  
Копирование строки из DBGrid в буфер


1-32775           Andron                2002-03-31 13:49  2002.04.11  
Как присвоить канву TChart а канве TBitmap a ?


6-32936           Leopold               2002-01-25 15:32  2002.04.11  
FTP через Proxy


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