Fórum Criar ClientDataSet em memória #371319

17/06/2009

0

Tentei pesquisar se há ou não esse tópico, mas está retornando erro. Preciso criar um CDS que armazene em memória alguns dados provenientes de outra tabela, para eu poder carregar outra tabela no meu banco, seria como se fosse um ´DE-PARA´, não é um DE-PARA, apenas a idéia do mesmo. Como eu faço mesmo um CDS em memória sem estar ligado a nenhum banco?


Paulo

Paulo

Responder

Posts

17/06/2009

Woinch

Adicione os campos na propriedade FieldsDefs e da um CreateDataSet, logo após efetue um Open desse dataSet. Lembro que se efetuar o Close você precisará criá-lo novamente.

Exemplo:

  with DataSet1.FieldDefs do
  begin
    Add(´CODIGO´, ftInteger, 0, false);
    Add(´VALOR´, ftString, 30, false);
    CreateDataSet;
    Open;
  end;


Espero ter ajudado.


Responder

Gostei + 0

18/06/2009

Paulo

Fiz um dataset, mas não em run time. Coloquei o componente, criei meus campos e com o botão direito eu dei um createdataset. Acontece que se eu não ativá-lo em design time e tento fazer isso em run time, me dá o erro de Missing Data Packet. Se eu ativo em design não me dá o erro. Acontece que eu preciso zerar sempre ele depois de eu carregar minhas tabelas no banco e carregar outras. Ele é para mim um De-Para, ou seja, carrego os campos de um arqyuivo XLS, como esses campos são diferentes da tabela para onde será gravados, eu faço esse De-Para com ele para carregar minhas tabelas do banco. A pergunta é: Como eu zero ele a cada vez que eu vou carregar as tabelas? Já dei um close e não funcionou. Se inicio ele Active = False, ele dá o erro supra citado. Espero ajuda de você, obrigado.


Responder

Gostei + 0

18/06/2009

Emerson Nascimento

você pode fazer toda a definição em design-time, porém deverá fechar o cds antes de compilar o programa.
depois, em tempo de execução, basta executar o createdataset.

createdataset - cria o dataset em memória
emptydataset - limpa o conteúdo do dataset
close - fecha o dataset (também pode ser usado para limpar, porém é preciso executar novamente o createdataset).

note que para funcionar o cds não pode estar apontado para um datasetprovider.

[b:8821d54f55]para ´criar´:[/b:8821d54f55]
if ClientDataset1.Active then ClientDataset1.Close; // caso esqueça aberto
ClientDataset1.ProviderName := ´´; // indicação de provider
ClientDataset1.DataSetField := nil; // indicação de aninhamento
ClientDataset1.RemoteServer := nil; // indicação do servidor remoto
ClientDataset1.ConnectionBroker := nil; // indicação do agente de conexão
ClientDataset1.CreateDataset; // cria. não precisa abrir; ao criar ele já é aberto

[b:8821d54f55]para limpar:[/b:8821d54f55]
ClientDataset1.EmptyDataset;
ou
ClientDataset1.Close;
ClientDataset1.CreateDataset;


Responder

Gostei + 0

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

Aceitar