Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nandoluizpm

[Resolvido] ClientDataSet.Open/.Close

Recommended Posts

Pessoal, sou iniciante em Delphi e estou gostando muito da linguagem. Porém eu tenho uma dúvida e resolvi compartilhar com vocês:

 

Quais são as funcionalidades do Open e do Close em um ClientDataSet? Eu sei que o Close fecha o DataSet e tudo que está dentro dele, se tiver vínculo com alguma base de dados, também é excluído. Um DataSet fechado não tem registro.

Mas se eu fechá-lo, precisarei abri-lo para reutilizar? E o que o Open faz? Por que algumas ações são restritas aos DataSet's fechados?

 

Tenho uma ideia superficial do assunto e eu gostaria de conteúdo para ler sobre essas propriedades, mas na internet eu não consegui achar links satisfatórios. Me ajudem aí!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você fechar, como você disse, todos os dados e o vínculo com o banco é excluído. Logo, não faz sentido você efetuar ações em um dataset que trabalha em memória que está fechado, sem nenhum registro nele. Talvez você não saiba, mas o ClientDataSet, é um DataSet que trabalha apenas em memória; você pode incluir/alterar/excluir dados sem vínculo com o banco. Depois que você ter efetuado suas operações, você aplica todas as mudanças feitas em memória para o banco executando um método dele chamado ApplyUpdates.

 

Então se você fechar, mas precisar trabalhar com ele, você terá que abri-lo novamente antes. É por isso que algumas operações são restritas ao ClientDataSet fechado.

 

A maioria das pessoas que usam o ClientDataSet, utilizam também os componentes do DBExpress junto com ele, contudo, há outros que também podem ser utilizados. Sinceramente, nem eu sei especificamente sobre eles, e utilizo diariamente, kkkkkkkkkk. Mas se você está curioso, talvez este link pode ajudar você. Há também este, ele é quase a mesma coisa que o anterior, porém com algumas informações a mais (na parte inferior do site, tem uma aba escrito posts em sequência, e lá você pode ir acompanhando os posts sequencialmente).

 

Mas simplificando, se não me engano, o ClientDataSet solicita um pacote de dados pro DataSetProvider, e este passa pro componente que irá executar alguma operação no banco, seja de seleção, inserção, etc. Um exemplo é o TSQLDataset ou TSQLQuery do DBExpress. Sendo uma seleção de dados, haverá um caminho inverso com os dados retornados, até que chegue ao ClientDataSet, ou seja, o TSQLQuery executou uma query no banco, passou pro DataSetProvider, e este passou pro ClientDataSet. Com os dados retornados em memória, você efetua suas operações sobre eles e depois aplica essas mudanças simplesmente executando ApplyUpdates. É por este motivo que muita gente que trabalha com isso quase não sabe SQL, pois nem precisam se preocupar com query de INSERT, UPDATE ou DELETE.

 

Boa sorte! :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.