Главная страница
    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.46 MB
Время: 0.055 c
8-1075969776
nike
2004-02-05 11:29
2004.05.09
winamp (in_mp3.dll, out_wave.dll) + delphi


14-1082201835
VMcL
2004-04-17 15:37
2004.05.09
Расшифровки ^)


3-1081795892
Ну вобщем это мой ник
2004-04-12 22:51
2004.05.09
Господа, Простите мою наглость, не могли ли бы вы накидать ссылок


3-1081770754
Урмат
2004-04-12 15:52
2004.05.09
связь между таблицами


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