ClientDataSet - Em memória

Delphi

18/02/2009

estou usando o Delphi 5 e preciso colocar os campos selecionados de um grid dentro de um cds. Porem não quero que este cds esteja ligado à alguma tabela, mas que ele armazenasse tudo em memória e depois descarregasse em outra tabela, obedecendo regras já estabelicidas. Eu cliquei com o botão direito do mouse e não veio a opção MyBase e etc.. do cds. Como faria isso? Criaria campos agregados? Gostaria que no momento que eu desselecionasse no grid, no cds aquele(s) campo(s) fosse deletado também. Tô apanhando.


Paulo

Paulo

Curtidas 0

Respostas

Paulo

Paulo

18/02/2009

Fiz assim, mas não está funcionando. Não entra no laço For. Sei que está errado e gostaria de ajuda dos colegas para resolver mais este.

var
contador: Integer;
bkm: TBookmarkList;
bkm_str: TBookmarkStr;
begin
  bkm_str := qryProd.Bookmark;
  bkm     := grdProd.SelectedRows;

  if not cdsProd.Active then
        cdsProd.Open;

  //With Grid do
    for contador:= 0 to pred(bkm.Count) do
    Begin
      qryProd.BookMark := bkm[contador];
      cdsProd.Append;
      cdsProd.FieldByName(´NUM_Chamado´).AsString := copy(Grid.Fields[1].AsString,Pos(´-´,Grid.Fields[1].AsString)-1,255);
      cdsProd.FieldByName(´Cod_Crise´).AsString := Grid.Fields[3].AsString;
      cdsProd.FieldByName(´Materia´).AsString := Grid.Fields[4].AsString;
      cdsProd.FieldByName(´Qtd_Materia´).AsString := Copy(Grid.Fields[4].AsString,1,3);
      cdsProd.FieldByName(´Comunicado´).AsString := Grid.Fields[13].AsString;
      cdsProd.Post;
    end;
  end;



GOSTEI 0
Ivanh

Ivanh

18/02/2009

Nos componentes Jedi, tem um chamado [b:d9fd7686c9]TJvMemoryDataset[/b:d9fd7686c9], eh fácil de usar.


GOSTEI 0
Paulo

Paulo

18/02/2009

Eu conheço o componente, mas eu não posso usar Jedi aqui. Aliás, componente nenhum de terceiros. A solução tem que ser aquela disponivel no delphi, mas valeu pela dica!!!


GOSTEI 0
Paullsoftware

Paullsoftware

18/02/2009

Bom dia!

você não pode setar o seu CDS para um arquivo XML não? tipo:

cds.filename:=´c:\cdsTemp.xml´;
cds.CreateDataSet;
....
//Instruções a serem realizadas


ou por outra crie seu CDs em Run-Time para que ele fique totalmente em memória usando a mesma lógica que te passei!
espero ter ajudado :wink:


GOSTEI 0
POSTAR