![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TClientDataSet.ApplyUpdates(0) & TClientDataSet.Refresh
31512 © (2004-04-14 14:40:00)В моём приложении почему-то 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-15 11:06:00) [1]Ага, спасибо всем! Разобрался!
serge35 (2004-04-14 16:40:00) [2]Поставь точку останова внутри функции и посмотри, заходит ли программа в эту фунуцию или нет.
С какими параметрами ты запускаешь функцию из остальных форм?
Nikolay M. (2004-04-14 14:46:00) [3]1)
> SaveChanges(DataModule1. ORGANISATIONS_CDS, DBGrid1)
В точности ЭТОТ код исполняется в 3 разных случаях? И CDS один и тот же?
2)
> Grid : TDBGrid = nil
...
> if Grid<>nil then TDBGrid(Grid).Refresh
Зачем приведение и рефреш ГРИДа?
31512 (2004-04-14 14:45:00) [4]И почему на серверной строне у источников данных обязательно свойство Active должно быть False, чтобы всё вышеописанное работало нормально?