GARANTIR DESCONTO

Fórum Close de DataSet #269715

22/02/2005

0

Amigos, boa noite.
li varios topicos aqui sobre clocar dataset.

funcionou,
porem, vejam o detalhe:

tenho um dataset.

cdsCloneItens.CloneCursor(cdsItens, True, True);

=>clonou perfeitamente

so que.
se eu fechar este cdsCloneItens, automaticamente, ele fecha o dataset de Origem, o cdsItens.

Nao posso fechar o dataset de origem, mas preciso fechar o dataset que recebeu a clonagem.


abaixo, vejam parte do codigo que digitei para testes
cdsCloneItens.CloneCursor(frmMenuCatalogo.cdsItens, True, True);

cdsCloneItens.DisableControls;
cdsCloneItens.First;
Forn := ´----´;
i := 0;
Memo1.Clear;
while not cdsCloneItens.Eof do
begin
if cdsCloneItensPRCODFORN.AsString <> Forn then
begin
Inc(i);
Forn := cdsCloneItensPRCODFORN.AsString;
memo1.Lines.Add(cdsCloneItensPRNOMEFORN.AsString);
end;
cdsCloneItens.Next;
end;

cdsCloneItens.EnableControls;
cdsCloneItens.EmptyDataSet;
cdsCloneItens.Close;

{aqui, ele ja fechou e zerou o dataset de Origem}
nas 3 linhas acima que está o problema.

Alguma ideia ou é assim mesmo ?
se for assim mesmo, nao vi objetivo na clonagem do dataset.

obrigado a todos.


Pedih

Pedih

Responder

Posts

22/02/2005

Rômulo Barros

[u:2a77b8483b][color=red:2a77b8483b][b:2a77b8483b]Veja[/b:2a77b8483b][/color:2a77b8483b][/u:2a77b8483b]
Shares the data belonging to another client dataset. Delphi syntax: procedure CloneCursor(Source :TCustomClientDataSet; Reset: Boolean; KeepSettings: Boolean = False); virtual; C++ syntax: virtual void __fastcall CloneCursor(TCustomClientDataSet* Source, bool Reset, bool KeepSettings = false); Description Call CloneCursor to share the data belonging to another client dataset. Source indicates another BDE client dataset whose data is to be shared. If Source is not a TBDEClientDataSet instance, CloneCursor raises an exception. Reset and KeepSettings determine how to set the values of the following properties and events: Filter, Filtered, FilterOptions, and OnFilterRecord IndexName MasterSource and MasterFields ReadOnly If Reset and KeepSettings are both false, the values of the properties listed above are all set to match the source dataset. If Reset is true, the properties listed above are all cleared. If Reset is false and KeepSettings is true, the properties listed above are not changed. In this case, the application must ensure that existing indexes, providers, and so on are compatible with the cloned data. After calling CloneCursor, the data for the client dataset is the same as the data for Source. Edits performed by either client dataset are reflected in the data of both datasets. Note:Because cloned cursors are shared, changing properties that affect the cursor affect both datasets. For example, setting the ReadOnly property of either dataset will make both datasets read-only.



Responder

Gostei + 0

23/02/2005

Pedih

Ainda nao resolvi meu problema

Preciso Clonar um ClientDataSet (os registros) e manter os datasets distintos.

tipo:
clientdataset1 -> clonar paara clientdataset2.

se eu fizer uma alteracao no clientdataset2, a mesma alteracao nao reflete no clientdataset1..

Obrigado. :roll:


Responder

Gostei + 0

23/02/2005

Paulo_amorim

Olá

Se você quer DataSet´s distintos, CloneCursor não resolve teu problema, pois cria dois ponteiros para o mesmo ResultSet compartilhado

Nesse caso, pode-se copiar através de um DataSetProvider:

cds1.Open;
with TDataSetProvider.Create(Self) do
begin
  DataSet := cds1;
  cds2.Data := Data;
  Free;
end;


Isso deve funcionar. Caso dê erro postae que a gente tenta ajudar

Espero que ajude
Até+


Responder

Gostei + 0

24/02/2005

Pedih

Olá Se você quer DataSet´s distintos, CloneCursor não resolve teu problema, pois cria dois ponteiros para o mesmo ResultSet compartilhado Nesse caso, pode-se copiar através de um DataSetProvider:
cds1.Open;
with TDataSetProvider.Create(Self) do
begin
  DataSet := cds1;
  cds2.Data := Data;
  Free;
end;
Isso deve funcionar. Caso dê erro postae que a gente tenta ajudar Espero que ajude Até+




Paulo Amorin,
bom dia.
olha, nao deu certo.

detalhe:
nao to usando datasetprovider.

o cds1, é temporario (tá apenas em memoria), assim como o cds2 também.

O que sugere ?

Obrigado pela atencao.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar