Pegar valor do campo

Delphi

05/05/2009

Tenho um banco mdb que dentro dele tem uma tabela Usuario, a tabela uduário tem um campo que se chama IdUser do tipo Auto numeração.

dentro do programa tenho uma função com o seguinte código:

  QryConjunto.Close;
  QryConjunto.SQL.Clear;
  QryConjunto.SQL.Add(´insert into Usuario(NomeUser,LoginUser,DptoUser) ´+
                      ´values(:Nome, :Login, :Departamento)´);

  QryConjunto.Parameters.ParamByName(´Nome´).Value := EdtNomeUser.Text;
  QryConjunto.Parameters.ParamByName(´Login´).Value := EdtLoginUser.Text;
  QryConjunto.Parameters.ParamByName(´Departamento´).Value := CmbDptoUser.Text;
  QryConjunto.ExecSQL;

  EdtNSComp.Text := IntToStr(QryConjunto.FieldValues[´IdUser´]);


Está inserindo perfeitamente, só gostaria de pegar o Id que foi gerado automaticamente pelo Access.

tentei da forma abaixo, mas nada!!! Alguém tem alguma ideia?
[b:e7a40f44ba]EdtNSComp.Text := IntToStr(QryConjunto.FieldValues[´IdUser´]);[/b:e7a40f44ba]


Luiz_aquino

Luiz_aquino

Curtidas 0

Respostas

Woinch

Woinch

05/05/2009

Nunca trabalhei com query, mas deve ser o mesmo princípio dos outros componentes.

Para pegar valores dos campos voce não pode utilizar o ExecSQL, pois esse comando envia instruções direto para o banco. Faça a seguinte alteração:

  QryConjunto.Close; 
  QryConjunto.SQL.Clear; 
  QryConjunto.SQL.Add(´select * from Usuario´); 
  QryConjunto.Open;
  QryConjunto.Insert; 
  QryConjunto.FieldValues[´Nome´].Value := EdtNomeUser.Text; 
  QryConjunto.FieldValues[´Login´].Value := EdtLoginUser.Text; 
  QryConjunto.FieldValues[´Departamento´].Value := CmbDptoUser.Text; 
  QryConjunto.Post; 

  EdtNSComp.Text := IntToStr(QryConjunto.FieldValues[´IdUser´]);


PS: Repito que nunca utilizei esses componentes. Nem sei se as propriedades são essas. Apenas estou te indicando um caminho de como pode ser feito. No meu caso utilizo a propriedade FieldByName(´NOME_DO_CAMPO´).AsString por exemplo.

Espero ter ajudado.


GOSTEI 0
Luiz_aquino

Luiz_aquino

05/05/2009

Então,

eu até tentei fazer da forma que vc falo, mas não tem essa função!

Não informei qual componente usei, estou usando o ADO Query.


GOSTEI 0
Luiz_aquino

Luiz_aquino

05/05/2009

Desculpa novamente, tem a função FieldByName porém não funciona, ele fala que naõ encontra o campo IdUser.

o componente estou usando somente para inserir, não sei se tem como eu pegar o campo por não ser um select?


GOSTEI 0
Devmedia

Devmedia

05/05/2009

Tenho um banco mdb que dentro dele tem uma tabela Usuario, a tabela uduário tem um campo que se chama IdUser do tipo Auto numeração. dentro do programa tenho uma função com o seguinte código:
  QryConjunto.Close;
  QryConjunto.SQL.Clear;
  QryConjunto.SQL.Add(´insert into Usuario(NomeUser,LoginUser,DptoUser) ´+
                      ´values(:Nome, :Login, :Departamento)´);

  QryConjunto.Parameters.ParamByName(´Nome´).Value := EdtNomeUser.Text;
  QryConjunto.Parameters.ParamByName(´Login´).Value := EdtLoginUser.Text;
  QryConjunto.Parameters.ParamByName(´Departamento´).Value := CmbDptoUser.Text;
  QryConjunto.ExecSQL;

  EdtNSComp.Text := IntToStr(QryConjunto.FieldValues[´IdUser´]);
Está inserindo perfeitamente, só gostaria de pegar o Id que foi gerado automaticamente pelo Access. tentei da forma abaixo, mas nada!!! Alguém tem alguma ideia? [b:5e4850d36a]EdtNSComp.Text := IntToStr(QryConjunto.FieldValues[´IdUser´]);[/b:5e4850d36a]


Olá luiz_aquino, tudo bom contigo?

Agora que vi este tópico, entendi o porque deste [url]http://forum.devmedia.com.br/viewtopic.php?t=100378[/url]

Pela minha resposta eu acho que irá responder sua dúvida.
Tipo, ao final da sua [b:5e4850d36a]QryConjunto[/b:5e4850d36a] voce pode colocar isso:

QryConjunto.Close;
  QryConjunto.SQL.Clear;
  QryConjunto.SQL.Add(´select * from Usuario´);
  QryConjunto.Open;
  QryConjunto.Insert;
  QryConjunto.FieldValues[´Nome´].Value := EdtNomeUser.Text;
  QryConjunto.FieldValues[´Login´].Value := EdtLoginUser.Text;
  QryConjunto.FieldValues[´Departamento´].Value := CmbDptoUser.Text;
  QryConjunto.Post;

  //ALTEREI AQUI
  QryConjunto.Refresh;
  QryConjunto.Last;

  EdtNSComp.Text := IntToStr(QryConjunto.FieldByName[´IdUser´].AsInteger);
  //FIM DA ALTERAÇÃO.



[b:5e4850d36a]´Funfa´[/b:5e4850d36a] ... ai pra gente !!!

Abraço.


GOSTEI 0
POSTAR