Форум: "Базы";
Поиск по всему сайту: 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.028 c
6-32935           Hawk                  2001-11-14 21:54  2002.04.11  
Опять поднимаю вопрос, как определить в Delphi IP адрес полученный от проваёдера?


6-32912           Димка-1200            2002-01-28 04:43  2002.04.11  
Плз, помогите! Как работать с HTTPGet через прокси ?


3-32685           Seri                  2002-03-21 09:06  2002.04.11  
SQL Insert и Boolean


3-32656           OlegE                 2002-03-20 09:26  2002.04.11  
Создание EXCEPTIONS в хранимой процедуре


4-33029           MCi                   2002-02-07 09:19  2002.04.11  
Как получить права на действия в W2k