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

Вниз

TClientDataSet.ApplyUpdates(0) & TClientDataSet.Refresh   Найти похожие ветки 

 
31512 ©   (2004-04-14 14:40) [0]

В моём приложении почему-то 3 одинаковых ClientDataSet ведут себя по разному.

Ситуация такова.
Приятно, когда где-то на форме лежит кнопка "Сохранить". Я такую и сделал для каждой из 3х форм редактирования 3х разных справочников.

При нажатии на эту кнопку у всех трёх форм исполняется один и тот же код:


procedure T...Form.SaveToolButtonClick(Sender: TObject);
begin
SaveChanges(DataModule1.ORGANISATIONS_CDS, DBGrid1)
end;


В другом модуле описана эта функция


function SaveChanges(ClientDataSet : TClientDataSet; Grid : TDBGrid = nil) : boolean;
begin
 if (ClientDataSet.ChangeCount > 0) then
    begin
      ClientDataSet.ApplyUpdates(0);
      ClientDataSet.Refresh;
      Result := True;
    end
 else Result := False;
 if Grid<>nil then TDBGrid(Grid).Refresh;
end;


По идее изменения должны тут же отобразиться на DBGride.
Но это происходит только в одной из форм.
При этом все ClientDataSetы одинаковые (разница только в том, что поставляют данные из разных таблиц, т.е. список полей разный, Providerы разные), а
DBGridы абсолютно одинаковые.
На серверной стороне TDataSetProviderы одинаковые (отличаются DataSetами).

При удалении тоже самое. Почему это может быть?


 
31512 ©   (2004-04-14 14:40) [0]

В моём приложении почему-то 3 одинаковых ClientDataSet ведут себя по разному.

Ситуация такова.
Приятно, когда где-то на форме лежит кнопка "Сохранить". Я такую и сделал для каждой из 3х форм редактирования 3х разных справочников.

При нажатии на эту кнопку у всех трёх форм исполняется один и тот же код:


procedure T...Form.SaveToolButtonClick(Sender: TObject);
begin
SaveChanges(DataModule1.ORGANISATIONS_CDS, DBGrid1)
end;


В другом модуле описана эта функция


function SaveChanges(ClientDataSet : TClientDataSet; Grid : TDBGrid = nil) : boolean;
begin
 if (ClientDataSet.ChangeCount > 0) then
    begin
      ClientDataSet.ApplyUpdates(0);
      ClientDataSet.Refresh;
      Result := True;
    end
 else Result := False;
 if Grid<>nil then TDBGrid(Grid).Refresh;
end;


По идее изменения должны тут же отобразиться на DBGride.
Но это происходит только в одной из форм.
При этом все ClientDataSetы одинаковые (разница только в том, что поставляют данные из разных таблиц, т.е. список полей разный, Providerы разные), а
DBGridы абсолютно одинаковые.
На серверной стороне TDataSetProviderы одинаковые (отличаются DataSetами).

При удалении тоже самое. Почему это может быть?


 
31512 ©   (2004-04-14 14:45) [1]

И почему на серверной строне у источников данных обязательно свойство Active должно быть False, чтобы всё вышеописанное работало нормально?


 
31512 ©   (2004-04-14 14:45) [1]

И почему на серверной строне у источников данных обязательно свойство Active должно быть False, чтобы всё вышеописанное работало нормально?


 
Nikolay M. ©   (2004-04-14 14:46) [2]

1)

> SaveChanges(DataModule1.ORGANISATIONS_CDS, DBGrid1)

В точности ЭТОТ код исполняется в 3 разных случаях? И CDS один и тот же?

2)

> Grid : TDBGrid = nil

...

> if Grid<>nil then TDBGrid(Grid).Refresh

Зачем приведение и рефреш ГРИДа?


 
Nikolay M. ©   (2004-04-14 14:46) [2]

1)

> SaveChanges(DataModule1.ORGANISATIONS_CDS, DBGrid1)

В точности ЭТОТ код исполняется в 3 разных случаях? И CDS один и тот же?

2)

> Grid : TDBGrid = nil

...

> if Grid<>nil then TDBGrid(Grid).Refresh

Зачем приведение и рефреш ГРИДа?


 
serge35   (2004-04-14 16:40) [3]

Поставь точку останова внутри функции и посмотри, заходит ли программа в эту фунуцию или нет.
С какими параметрами ты запускаешь функцию из остальных форм?


 
serge35   (2004-04-14 16:40) [3]

Поставь точку останова внутри функции и посмотри, заходит ли программа в эту фунуцию или нет.
С какими параметрами ты запускаешь функцию из остальных форм?


 
31512 ©   (2004-04-15 11:06) [4]

Ага, спасибо всем! Разобрался!


 
31512 ©   (2004-04-15 11:06) [4]

Ага, спасибо всем! Разобрался!



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

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

Наверх




Память: 0.46 MB
Время: 0.046 c
7-1079529307
Dastin
2004-03-17 16:15
2004.05.09
Определение буквы CD


6-1079116891
KyRo
2004-03-12 21:41
2004.05.09
В чем ошибка конекта в WinSock


14-1082392754
Mim1
2004-04-19 20:39
2004.05.09
Linux vs Windows


3-1081963079
tERRORist
2004-04-14 21:17
2004.05.09
Обновление данных на SQL-сервере из Access-базы


1-1082963644
Hint
2004-04-26 11:14
2004.05.09
TComboBox &amp; TStringGrid





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