Fórum Como capturar valor de um campo???? #325870
22/07/2006
0
Deixa ver se consigo me expressar!
Eu tenho uma tabela com o campo cod_cliente,certo.
Eu gostaria de pegar o ultimo valor deste campo colocar em uma variavel, somar 1 e adicionar no novo registro, tipo um campo autoincremento.
A tabela e TabClientes, utilizo ClienteDataSet, SQLDataSet, DataSetProvider e DataSet.
Antes com paradox era:
ModuloDados.TabClientes.FieldValue......., ou coisa parecida.
Agora não sei como fazer!
Muito obrigado por qualquer dica :lol:
Marcelo_j.
Curtir tópico
+ 0Post mais votado
22/07/2006
var prox: integer; begin prox:=0; qry.Close; qry.SQL.Clear; qry.SQL.Add(´select Max(cod_cliente) Codigo´); qry.SQL.Add(´from cliente´); qry.Open; if not qry.IsEmpty then prox:=qryCOD_CLIENTE.Value; Inc(prox); qry.Close; tblCliente.Insert; tblClienteCOD_CLIENTE.Value:=prox;
Acho que funciona, não testei...
Marcio.theis
Gostei + 1
Mais Posts
23/07/2006
Marco Salles
funcionar pode ate funcionar , porque ja é um codigo bem conhecido. Mas veja que o amigo ja usa a tecnologia mIDAS.
O ´MAIS MENOS´ Recomendável para o caso é usar os campos Agregados do Proprio ClientDataSet.
Eu digo ´MAIS MENOS´ , e explico
MAIS de usar o campo agregados x uma requisão ao servidor (consulta sql)... Usar campo agregados voce não sobrecarrega nada e mais rapido emfimmmm
MENOS , porque isto so ira funcionar em aplicaçoes Loces o que é desanconselhavel para aplicaçoes Cliente Servidor..
Criar um campo Agregado e fãicl e rápido
[b:b704734432]Para pegar o valor , faça[/b:b704734432]
Var MaxCodigo;Integer; Begin MaxCodigo:=ClientDataset1NomeDoNovoCampo.AsInteger;
Gostei + 0
30/07/2006
Marcelo_j.
Eu fiz exatamente como o colega falou.
Criei o campo agregado, e no evento do botão inserir coloquei o seguinte codigo:
Var
somar:Integer;
begin
Somar:=Buscar_Dados.CDSClienteCalculado.AsInteger;
Somar:=Somar+1;
Buscar_Dados.CDSClienteCOD_CLIENTES.AsInteger:=Somar;
Buscar_Dados.CDSCliente.ApplyUpdates(-1);
end;
Ai me da a menssagem de erro:
Project ... raised exception class EDatabaseError with message ´Cannot acces field Calculado as type Integer´.Process stopped. UseStep or Rum to continue.
Gostei + 0
31/07/2006
Marco Salles
bem , eu não sei se esta faltando algum detalhe na configuração desse campo.. Estou sem o delphi aqui para testar....
[b:4d6ec5709b]Se alguem souber aonde esta o possivel erro por favor que se manifeste[/b:4d6ec5709b].
Porem voce pode fazer o seguinte :
Criei o campo agregado, e no evento do botão inserir coloquei o seguinte codigo:
Var somar:Integer; begin if TryStrToInt(Buscar_Dados.CDSClienteCalculado.AsString,Somar) then Somar:=strtoint(Buscar_Dados.CDSClienteCalculado.AsString)+1 else Somar:=1; Buscar_Dados.CDSCliente.Append; Buscar_Dados.CDSClienteCOD_CLIENTES.AsInteger:=Somar; end;
Que certamente irá funcionar.....
[b:4d6ec5709b]Outro detalhe importante .... No Cds Existe a opção da criação de um Campo Calculado [/b:4d6ec5709b]
[b:4d6ec5709b]Post aqui os resultados [/b:4d6ec5709b], igual voce fez agora , pq eu mesmo assim que der vou testar sua ´experiencia´ , ja que esto ´resabiada´ com ela...
Gostei + 0
31/07/2006
Cabelo
Por isso o erro...
vc deve fazer a seguinte consistância..
if Trim(Buscar_Dados.CDSClienteCalculado.AsString) = ´´ then begin Somar := 1; end else begin Inc(Somar); end;
Acredito que deva funcionar...
Gostei + 0
31/07/2006
Marco Salles
Cabelo , o problema aqui não é só isso. [b:791092570c]No inicio pensei que fosse.[/b:791092570c]
O problema aqui é que [b:791092570c]Buscar_Dados.CDSClienteCalculado.AsInteger [/b:791092570c], retorna um tipo inválido....Eu não sei porque ???? :?: :?: :?:
Resolver o problema ja esta resolvido , usando o
[b:791092570c]Buscar_Dados.CDSClienteCalculado.AsString[/b:791092570c] no Lugar e fazendo as devidas conversões.
Var somar:Integer; begin if TryStrToInt(Buscar_Dados.CDSClienteCalculado.AsString,Somar) then Somar:=strtoint(Buscar_Dados.CDSClienteCalculado.AsString)+1 else Somar:=1; Buscar_Dados.CDSCliente.Append; Buscar_Dados.CDSClienteCOD_CLIENTES.AsInteger:=Somar; end;
Gostei + 0
05/08/2006
Marcelo_j.
Eu estudo Delphi atravez de livros, e uso este Site para tirar duvidas.
Eu vou torrar os meus neuronios com os livros aqui para descobrir o erro, e se eu conseguir eu retorno.
Obrigado pela Atenção, ate mais.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)