Close de DataSet
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.
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
Curtidas 0
Respostas
Rômulo Barros
22/02/2005
[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.
GOSTEI 0
Pedih
22/02/2005
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:
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:
GOSTEI 0
Paulo_amorim
22/02/2005
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:
Isso deve funcionar. Caso dê erro postae que a gente tenta ajudar
Espero que ajude
Até+
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é+
GOSTEI 0
Pedih
22/02/2005
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:
Isso deve funcionar. Caso dê erro postae que a gente tenta ajudar
Espero que ajude
Até+
cds1.Open; with TDataSetProvider.Create(Self) do begin DataSet := cds1; cds2.Data := Data; Free; end;
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.
GOSTEI 0