Fórum Duvidas com clientdataset e streams #284538

13/06/2005

0

Colegas, alguém poderia me dizer se tem alguma coisa errada no código abaixo?

procedure TfrmEnviaComando.Button2Click(Sender: TObject);
var Temp: TMemoryStream;
begin
Temp := TMemoryStream.Create;
temp.Clear;
temp.Size := ClientDataSet1.DataSize;
ClientDataSet1.Open;
ClientDataSet1.Savetostream(temp);
//temp.SaveToFile(´temp.xml´);
with frmretorno do
begin
//cdsRetorno.LoadFromFile(´temp.xml´);
//cdsRetorno.SaveToStream(temp);
cdsretorno.LoadFromStream(temp);
cdsretorno.Open;
ShowModal;
end;
end;

Meu objetivo: Salvar um stream com um clientdataSet usando savetostream, e dpois abrir com outro clientdataset usando loadfromstream.

Objetivo 2: tenho um clientdataset ligado a um provider que vai me mostrar o resultado de uma consulta de uma tabela qualquer. Preciso pegar esse resultado (do clientdataset) e salvar numa MemoryStream pra jogar num campo blob de uma tabela do interbase. Essa seria a minha tabela de log de consultas feitas. Depois preciso pegar um outro stream, carregar nele os dados da stream gravada no campo blob. Depois de carregada eu quero visualizar esses dados usando: OutroClientDataSetIndependente.loadFromStream(minhaStream)

fiz com arquivo xml e deu certíssimo, mas eu queria usar streams pr não ter que usar arquivos temporarios, o que eu faço?


Vitor Rubio

Vitor Rubio

Responder

Post mais votado

18/06/2005

Tenta copiando o pacote de dados, ex.:

function TForm1.ObtemCopiaClientDataSet(Original: TClientDataSet): TClientDataSet;
var
Copia: TClientDataSet;
begin
Copia := TClientDataSet.Create(Self);
[b:d1f6ecc31b] Copia.Data := Original.Data;[/b:d1f6ecc31b]
Result := Copia;
end;

Acho q tem outra maneira tb tipo isso q tentou ou via assign, mas nao lembro agora..


Bon Jovi

Bon Jovi
Responder

Gostei + 1

Mais Posts

20/06/2005

Vitor Rubio

Oi Bon Jovi, eu agradeço a sua sugestão, é uma ótima idéia, mas eu não queria retornar um clientdataset, gostaria de retornar uma stream pra poder gravar num blob do interbase, na web, para outra pessoa ver, um segundo depois, em outro computador, em outro lugar, a consulta que foi feita.

Funciona assim: eu tenho um bd, fulano tem outro bd, ambos locais. Os dois também se conectam num mesmo banco na web. Fulano faz uma consulta no banco de dados dele, essa consulta vai pra um clientdataset ligado um providar ligado num ibdataset. O clientdataset salva essa consulta numa stream em formato xml, e grava essa stream num campo blob de um registro de uma tabela dakele bd na web, aí eu consulto o bd na web, pego essa stream e jogo num clientdataset ligado numa grid pra ver os dados. Eu não consigo carregar o meu clientdataset direto da stream que eu puxei do bd, eu tenho que salvar um arquivo xml primeiro e depois pegar o cds e puxar os dados desse arquivo.

Se fosse direto, não teria a necessidade de usar esse arquivo temporario, entendeu?


Responder

Gostei + 0

20/06/2005

Vitor Rubio

Oi Bon Jovi, eu agradeço a sua sugestão, é uma ótima idéia, mas eu não queria retornar um clientdataset, gostaria de retornar uma stream pra poder gravar num blob do interbase, na web, para outra pessoa ver, um segundo depois, em outro computador, em outro lugar, a consulta que foi feita.

Funciona assim: eu tenho um bd, fulano tem outro bd, ambos locais. Os dois também se conectam num mesmo banco na web. Fulano faz uma consulta no banco de dados dele, essa consulta vai pra um clientdataset ligado um providar ligado num ibdataset. O clientdataset salva essa consulta numa stream em formato xml, e grava essa stream num campo blob de um registro de uma tabela dakele bd na web, aí eu consulto o bd na web, pego essa stream e jogo num clientdataset ligado numa grid pra ver os dados. Eu não consigo carregar o meu clientdataset direto da stream que eu puxei do bd, eu tenho que salvar um arquivo xml primeiro e depois pegar o cds e puxar os dados desse arquivo.

Se fosse direto, não teria a necessidade de usar esse arquivo temporario, entendeu?


Se tiver outra sugestão.... valew.... de qualquer forma...

Obrigadão mesmo assim :) ^^


Responder

Gostei + 0

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

Aceitar