Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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
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
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
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
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 tryObserverm 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
Lembrando que select @@identity só serve no sql, para o oracle deve ser :nomedasequence.currval
>
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!
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