Форум: "Базы";
Текущий архив: 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.039 c