MDF_REIS 0 Denunciar post Postado Fevereiro 23, 2010 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
itepi 0 Denunciar post Postado Fevereiro 23, 2010 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
MDF_REIS 0 Denunciar post Postado Fevereiro 24, 2010 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
MDF_REIS 0 Denunciar post Postado Fevereiro 24, 2010 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