Criar ClientDataSet em memória
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
Curtidas 0
Respostas
Woinch
17/06/2009
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:
Espero ter ajudado.
Exemplo:
with DataSet1.FieldDefs do begin Add(´CODIGO´, ftInteger, 0, false); Add(´VALOR´, ftString, 30, false); CreateDataSet; Open; end;
Espero ter ajudado.
GOSTEI 0
Paulo
17/06/2009
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.
GOSTEI 0
Emerson Nascimento
17/06/2009
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;
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;
GOSTEI 0