Pegar valor do campo
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:
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]
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
Curtidas 0
Respostas
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:
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.
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
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.
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
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?
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
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:
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]
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´]);
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