Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
7-1080203192
ламерламер
2004-03-25 11:26
2004.05.09
динамическое создание формы


6-1079090068
webmaster
2004-03-12 14:14
2004.05.09
HTML форма ??????


1-1082357849
WondeRu
2004-04-19 10:57
2004.05.09
TCheckBox.State


4-1079599813
b0bi
2004-03-18 11:50
2004.05.09
Как получить Handle


4-1079581149
StPu
2004-03-18 06:39
2004.05.09
Мастера подскажите как убрать кнопку "Развернуть"





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