Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.09;
Скачать: CL | DM;

Вниз

Передача данных в 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.032 c
14-1103667264
vecna
2004-12-22 01:14
2005.01.09
в продолжении темы профи/не профи...


4-1101255335
Dmitry_04
2004-11-24 03:15
2005.01.09
Раскладка клавиатуры


6-1098110070
L.evil
2004-10-18 18:34
2005.01.09
Локальная сеть


4-1100953541
DeScriptor
2004-11-20 15:25
2005.01.09
Дочернее окно


3-1102603979
Dimedrol
2004-12-09 17:52
2005.01.09
MySQL 4.1.7 текст храниться в unicode - как искать ?