Ir para conteúdo

POWERED BY:

Arquivado

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

MDF_REIS

[Resolvido] Consulta TClientDataSet

Recommended Posts

Olá Galera.

 

Criei um ClientDataSet para exibir uma consulta feito no meu banco, porém não consigo localizar informações já gravadas. vou adicionar o codigo.

 

>>

cdsConsula.Close;

cdsConsulta.FieldDefs.Clear;//Limpamos campos

cdsConsulta.FieldDefs.Add('Maquina',ftString,10,false);//adicionamos campos

cdsConsulta.CreateDataSet; {Cria dataset em memoria}

cdsConsulta.Open;

 

{Grava os Dados}

cdsConsulta.DisableControls;

While not qryMaster.Eof do //Arquivo Master

begin

pCodvix:=qryMaster.FieldValues['Gobase'];

{verifica se a maquina já existe }

if not cdsConsulta.Locate('Maquina',pCodvix,[]) then

begin

cdsConsulta.Append;

cdsConsulta.FieldValues['Maquina']:=pCodvix;

cdsConsulta.Post;

end

else {se já existir a maquina apenas grava as horas}

begin

cdsConsulta.edit;

cdsConsulta.FieldValues[pCodeve]:=cdsValue+pValue;

cdsConsulta.Post;

end;

qryDetails.Next;

end;

qryMaster.Next;

end;

cdsConsulta.EnableControls;

 

o problema é que o locate não localiza o codigo já gravado e grava de novo.

 

Sds.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, estou sem o delphi aqui para testar, mas acredito que você não pode desabilitar o Controls do clienteDataSet, pois ao desabilitar você impede a navegação do cursor, por isso ele não consegue navegar pra procurar o registro, tente remover a linha : cdsConsulta.DisableControls;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já tentei, busquei exemplos, mas nada funciona.

 

Ex.

 

//Pecorre toda a tabela de Master

 

oCodigo:=qryMaster.FieldValues['Codigo'];

oValor :=qryMaster.FieldValues['Valor'];

 

if cdsConsulta.Locate('Codigo',oCodigo,[]) then

begin

aValor:=cdsConsulta.FieldValues['Valor']; //Pega o valor atual do Field

cdsConsulta.Edit;

cdsConsulta.FieldValues['Valor']:=aValor + oValor;

cdsConsulta.Post;

end

Else

Begin

cdsConsulta.Append;

cdsConsulta.FieldValues['Codigo']:=oCodigo;

cdsConsulta.FieldValues['Valor']:=oValor;

cdsConsulta.Post;

End;

 

Obs.

Ele não consegue localizar registro já gravado.

 

sds.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá galera;

 

Consegui resolver o proplema do TClientDataSet.

Na Realidade o erro não estava no Locate() e sim nessa linha: "cdsValue:=cdsConsulta.FieldValues[pCodeve]" ai substituir para "cdsValue:=cdsConsulta.FieldByName(pCodeve).asFloat".

Ai funcionou, vai entender isso.

 

Rsss

 

Sds.

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.