Форум: "Базы";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
ВнизПередача данных в ClientDataSet. Найти похожие ветки
← →
Nikola-2 (2004-11-29 08:03) [0]При попытке передать данные или журнал изменений из одного ClientDataSet в другой,
ClientDataSet приёмник - остаётся пустым.
ClientDataSet1.Data:=ClientDataSet2.Data;
ClientDataSet1.Data:=ClientDataSet2.Delta;
Мне надо, чтобы работал, следующий код:
var DataPacket: OleVariant;
if ClientDataSet2.ChangeCount>0 begin
DataPacket:=ClientDataSet2.Delta;
ClientDataSet1.Data:=DataPacket;
end;
Всем спасибо.
← →
Nikolay M. © (2004-11-29 09:56) [1]Смотри в хелпе пример "Data, DataRequest, OnDataRequest Example".
← →
Nikola-2 (2004-11-29 18:15) [2]Так не работает!
← →
Nikolay M. © (2004-11-30 09:39) [3]
> Так не работает!
Тема секса не раскрыта.
Что не работает? Как именно не работает?
← →
Nikola-2 (2004-12-01 21:06) [4]Николай, я не понял какое отношение DataRequest имеет к Delta.
И каким образом можно просматривать Delta используя DataRequest.
← →
Nikolay M. © (2004-12-02 10:24) [5]Повторю
> Тема секса не раскрыта.
Ты сам-то понимаешь, что пытаешься спросить?
Сначала:
> передать данныеили
журнал изменений из одного ClientDataSet
> в другой
и
> ClientDataSet1.Data:=ClientDataSet2.Data;
> ClientDataSet1.Data:=ClientDataSet2.Delta;
Потом просто:
> Так не работает
И в завершение:
> каким образом можно просматривать Delta
Полный бардак. Могу посоветовать еще посмотреть в сторону CloneCursor, CloneSource, хотя я уже окончательно потерял суть проблемы.
← →
Nikola-2 (2004-12-05 18:21) [6]Вопрос один.
Если вопрос не понятен, то чё умничать?
Повторяю: почему не работает код:
ClientDataSet1.Data:=ClientDataSet2.Data;
или этот код:
ClientDataSet1.Data:=ClientDataSet2.Delta;
Который мог бы дать возможность просматривать журнал изменений в гриде.
И очередной совет: повторю какое отношение CloneCursor и CloneSource имеет к Delta.
← →
Nikolay M. © (2004-12-05 20:56) [7]Удалено модератором
Примечание: личная переписка (обмен любезностями почтой)
← →
Nikola-2 (2004-12-05 21:15) [8]Удалено модератором
Примечание: личная переписка (обмен любезностями почтой)
← →
Nikola-2 (2004-12-07 20:21) [9]Нашёл в хелпе данную тему.
Цитата из хелпа:
Assigning data directly
You can use the client dataset"s Data property to assign data to a client dataset from another dataset. Data is a data packet in the form of an OleVariant. A data packet can come from another client dataset or from any other dataset by using a provider. Once a data packet is assigned to Data, its contents are displayed automatically in data-aware controls connected to the client dataset by a data source component.
When you open a client dataset that represents server data or that uses an external provider component, data packets are automatically assigned to Data.
When your client dataset does not use a provider, you can copy the data from another client dataset as follows:
ClientDataSet1.Data := ClientDataSet2.Data;
Note
When you copy the Data property of another client dataset, you copy the change log as well, but the copy does not reflect any filters or ranges that have been applied. To include filters or ranges, you must clone the source dataset"s cursor instead.
If you are copying from a dataset other than a client dataset, you can create a dataset provider component, link it to the source dataset, and then copy its data:
TempProvider := TDataSetProvider.Create(Form1);
TempProvider.DataSet := SourceDataSet;
ClientDataSet1.Data := TempProvider.Data;
TempProvider.Free;
Note
When you assign directly to the Data property, the new data packet is not merged into the existing data. Instead, all previous data is replaced.
If you want to merge changes from another dataset, rather than copying its data, you must use a provider component. Create a dataset provider as in the previous example, but attach it to the destination dataset and instead of copying the data property, use the ApplyUpdates method:
TempProvider := TDataSetProvider.Create(Form1);
TempProvider.DataSet := ClientDataSet1;
TempProvider.ApplyUpdates(SourceDataSet.Delta, -1, ErrCount);
TempProvider.Free;
Код ClientDataSet1.Data := ClientDataSet2.Data; не работает, т. е. ClientDataSet1 остаётся пустым.
Проверил код:
TempProvider := TDataSetProvider.Create(Form1);
TempProvider.DataSet := SourceDataSet;
ClientDataSet1.Data := TempProvider.Data;
TempProvider.Free;
тоже не работает.
← →
Nikola-2 (2004-12-10 08:34) [10]Проблема решена.
Для ClientDataSet1 забыл удалять файл: DeleteFile(ClientDataSet1.FileName);
Приведённый ниже код, теперь работает.
if cdsSourse.ChangeCount>0 then
begin
DeleteFile(ClientDataSet1.FileName);
DataPac:=ClientDataSet2.Delta;
ClientDataSet1.Data:=DataPac;
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c