Verificar fields preenchidos

Delphi

22/03/2012

Olá a todos!
Eu criei um componente ClientDataSet com alguns recursos. Eu preciso saber se existe alguma forma de identificar se houve algum field no ClientDataSet que foi preenchido. Eu não preciso saber quais, só preciso saber se existe algum, tipo um count de fields preenchidos. Eu estou usando o SqlDataSet / DataSetProvider / ClientDataSet.

Grato.
Gilmar Fernandes

Gilmar Fernandes

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

22/03/2012

Verifique o seguinte código:

var
i, cont:integer;
begin
cont:=0;
for i := 0 to Pred(ClientDataSet1.FieldCount) do
if not ClientDataSet1.Fields[i].IsNull then
Inc(cont);

Ao final, cont deverá ser a quantidade de campos não nulos (isso para o registro atual).

Boa sorte.
GOSTEI 0
Gilmar Fernandes

Gilmar Fernandes

22/03/2012

Eu havia pensado nisso, criar um contador, mas eu queria saber se existe alguma propriedade no clientdataset que já me dê essa informação direto, porque existem algumas tabelas que são grandes (possui muitos fields), com isso poderia ficar pesado o processamento.
GOSTEI 0
Gustavo Bretas

Gustavo Bretas

22/03/2012

Brezolini,

Pense na seguinte lógica, se vc permitir q a gravação do registro seja feita quando pelo menos um Field estiver preenchido, vc garante que em todos os registro, pelo menos um field estará preenchido, se vc não precisa saber qual, acredito que isso já resolva seu problema, pois o simples fato de existir o registro será prova de que um dos field esta preenchido, e então vc pode usar o código que o Joel postou para fazer a verificação.

Mas vc disse tipo um count de fields preenchidos, se isso for realmente necessário, vc pode criar mais um Field no ClientDataset e informar a quantidade de fields preenchidos no post do registro!

Espero ter ajudado!
GOSTEI 0
Gilmar Fernandes

Gilmar Fernandes

22/03/2012

Brezolini,

Pense na seguinte lógica, se vc permitir q a gravação do registro seja feita quando pelo menos um Field estiver preenchido, vc garante que em todos os registro, pelo menos um field estará preenchido, se vc não precisa saber qual, acredito que isso já resolva seu problema, pois o simples fato de existir o registro será prova de que um dos field esta preenchido, e então vc pode usar o código que o Joel postou para fazer a verificação.

Mas vc disse tipo um count de fields preenchidos, se isso for realmente necessário, vc pode criar mais um Field no ClientDataset e informar a quantidade de fields preenchidos no post do registro!

Espero ter ajudado!


Obrigado Bretas, pela atenção... mas o que acontece, é o seguinte, eu criei um recurso de pesquisa no meu ClientDataSet, onde eu posso fazer um filtro (pesquisa) no meu formulário de manutenção (tabela) informando qualquer valor, isto é, o usuário pode realizar uma pesquisa informando qualquer campo da tabela, para isso eu faço uma varredura em todos os fields da tabela e verifico se foi informado algum dado, este processo funciona perfeitamente, porém quando a tabela possui um volume muito grande de colunas (fields), este processo fica um pouco demorado, pelo fato de varrer todos os fields, então eu preciso que essa varredura seja feita somente se o usuário realmente estiver preenchido algum campo para pesquisa. Então eu só preciso saber se existe alguma propriedade no ClientDataSet que me informe se há algum field preenchido, alguma coisa que me fale se teve ou não algum campo preenchido, ou o número de fields preenchidos, ou se houve alteração no seu conteúdo, qualquer coisa que me diga se houve ou não algum field preenchido ou alterado.
Grato pela sua atenção!
GOSTEI 0
Leonardo Xavier

Leonardo Xavier

22/03/2012

Ja vi funções assim, mas para sistemas específicos, se você esta fazendo um sistema para gerenciamento de empresas ou algo assim, você terá um login e senha para cada usuário, bom de posse destas informações você poderia criar uma outra tabela chamada Ordem de Serviço ou algo que a identifique como sendo de alterações em registros de suas tabelas, informando na mesma campos como nome do usuário que alterou aquele registro com post no momento da edição e com campos dizendo quais campos e quais dados foram alterados, trabalhei um bom tempo em uma empresa de abastecimento de água e la funcionava assim, todas alterações ficavam registradas no banco de dados ou voc~e pode criar um outro bd...(daria mais trabalho), para verificar se as alterações foram feitas para melhor ou foram indevidas poderiam ser restauradas, Realizando isso você poderia saber quais dados foram alterados, quando foram alterados e os dados antigos destes campos.
GOSTEI 0
Gilmar Fernandes

Gilmar Fernandes

22/03/2012

Olá pessoal..obrigado pela ajuda de todos, mas já descobri. Existe uma propriedade do ClientDataSet o ChangeCount, que retorna o número de fields que foram alterados no dataset.

Fica aí a dica.
GOSTEI 0
Marco Salles

Marco Salles

22/03/2012

Desculpe rezolini , mas o changecount não retorna o número de fiedls que foi alterado. Ela retorna o mumero
de alteraçõs no Log do conjunto de dados .
GOSTEI 0
POSTAR