Ir para conteúdo

POWERED BY:

Arquivado

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

dilonghi

Recuperar Id após um insert

Recommended Posts

Ola pessoal, ja revirei o forum para tentar descobirar como recuperar o Id de um registro que acabei de dar um Insert.

 

O que preciso fazer é o seguinte, em um form tenho alguns dados, d'ados pessoais', e 'dados de acesso'.

Entao na postagem os 'dados pessoais' devem ser inseridos na tabela clientes e os 'dados de acesso' na tabela ACESSO.

 

Entao após inserir os dados em Clientes, preciso recuperar o ID deste cadastro, para inserir e vincular os 'dados de acesso' em ACESSO.

 

Podem me ajudar?

Abaixo o codigo de insert que estou usando

 

sub cadastrar(obj as object, e as eventargs)	Dim comando As New SqlCommand ("Insert into CLIENTE (SIGLA, Telefone_Central_Guias, Nome_Central_Guias, Localizacao, Nome, DATA_CADASTRO) Values ('"& Sigla.text &"', '"& Telefone.text &"', '"& NomeGuias.text &"', '"& Localizacao.text &"', '"& Nome.text &"', '"& dDataAtual &"')", conexao )				try		conexao.Open()		comando.ExecuteNonQuery()	catch ex as Exception		lblMessage.text = "Erro ao acessar a base"	end try	conexao.Close()										lblMessage.text = "<br><font color=#006600>  Associado <strong>"& Nome.Text &"</strong> foi cadastrado com sucesso<br></font>"					end sub

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o banco de dados utilizado? No PostgreSQL eu usava uma instrução SQL assim para campos do tipo auto-numeração:

 

SELECT currval('public."tabela_Campo_seq"')

Mas, provavelmente isso só deve servir para o PostgreSQL.

 

Abraços,

 

Graymalkin

Compartilhar este post


Link para o post
Compartilhar em outros sites

To usando SQL server.. olha só, no ASP fazia uma consulta na tabela q inseri, usando como parametro os dados que acabei de inserir, pegava o ID e fazia o novo insert na outra tabela com este ID.. mas em ASP.NET não sei como fazer

Compartilhar este post


Link para o post
Compartilhar em outros sites

O que eu acho que seria interessante e mais rápido em termos de performance é você criar uma Procedure no Banco de Dados que faça esse Insert e já te retorne o ID do registro, no .Net você só chamaria essa Procedure passando os parâmetros dela e já teria o ID dela

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bah Boa ideia, cara so bem iniciante em ASP.NET... tu tem um exemplo desse codigo para me passar, ou algum tutorial por ai que fale disso?agilizaria o processo.. hehheAgradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui o que eu queria com um parceiro, vou postar aqui caso alguem tenha a mesma dúvida:

 

Recuperar ID após insert

 

 

Insert:

 

Dim comando As New SqlCommand ("Insert into TABELA (SIGLA, Telefone, NomeGuias, Localizacao, Nome, DATA_CADASTRO) "& _"Values ('"& Sigla.text &"', '"& Telefone.text &"', '"& NomeGuias.text &"', '"& Localizacao.text &"', '"& Nome.text &"', '"& dDataAtual &"') select @@identity", conexao)Dim retorno as object					try			conexao.Open()		retorno = comando.ExecuteScalar()	catch ex as Exception		lblMessage.text = "Erro ao acessar a base"	end try
Observerm no código o " select @@identity ", isso recupera o id baseado na chave.

a parte " retorno = comando.ExecuteScalar() " é responsável por executar o insert e retornar o ID armazendo em 'retorno'.

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui o que eu queria com um parceiro, vou postar aqui caso alguem tenha a mesma dúvida:

 

Recuperar ID após insert

 

 

Insert:

 

<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>Dim comando As New SqlCommand ("Insert into TABELA (SIGLA, Telefone, NomeGuias, Localizacao, Nome, DATA_CADASTRO) "& _

"Values ('"& Sigla.text &"', '"& Telefone.text &"', '"& NomeGuias.text &"', '"& Localizacao.text &"', '"& Nome.text &"', '"& dDataAtual &"') select @@identity", conexao)

 

Dim retorno as object

 

try

conexao.Open()

retorno = comando.ExecuteScalar()

catch ex as Exception

lblMessage.text = "Erro ao acessar a base"

end try

</div>

 

Observerm no código o " select @@identity ", isso recupera o id baseado na chave.

a parte " retorno = comando.ExecuteScalar() " é responsável por executar o insert e retornar o ID armazendo em 'retorno'.

 

Abraços

 

Correto, estou com o mesmo problema e gostaria de uma dica... como declarou o procedimento ExecuteScalar()?

Obrigado!

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.