RECUPERAR O ULTIMO ID GRAVADO COM BANCO MYSQL
Boa tarde galera,
Estou gravando registros em 2 tabelas e preciso recuperar o id da primeira tabela para gravar na segunda tabela para a mesma seção. Alguém pode me ajudar???
Estou gravando registros em 2 tabelas e preciso recuperar o id da primeira tabela para gravar na segunda tabela para a mesma seção. Alguém pode me ajudar???
é so pesquisar.. tipo..
SELECT LAST_INSERT_ID() AS vULTIMO from NOMEDASUATABELA group by vULTIMO[Ô]
SELECT LAST_INSERT_ID() AS vULTIMO from NOMEDASUATABELA group by vULTIMO[Ô]
XXANGELSXXX
eu esqueci de comentar que estou usando o vb 2010 express, esse comando tb funciona nele?
eu esqueci de comentar que estou usando o vb 2010 express, esse comando tb funciona nele?
claro uai, isso é como pesquisar no mysql, ou seja, a sintaxe para pesquisar no banco é essa.!
Use, após o insert (execute)
Set rsEmpresa = CONN.Execute(sSQL)
rsEmpresa.Open ([Ô]SELECT @@IDENTITY FROM cadempresa[Ô])
int_Pesquisa_grid = rsEmpresa(0)
Pelo fórum, suponho o uso da ADO. Para retornar o último ID, o MySQL mantém o @@identity , que deve ser consultado pelo mesmo Command que acabou de efetuar a inclusão. Algo mais ou menos assim:
Dim Rs As ADO.Recordset
Dim i As Long
...
cm.CommandText = [Ô]INSERT INTO tabela (campoum,campodois,campotrês) VALUES ([ô]TESTE[ô],[ô]TESTANDO[ô],[ô]TESTADO[ô])[Ô]
cm.Execute
cm.CommandText = [Ô]SELECT @@IDENTITY[Ô]
Set Rs = cm.Execute
i = Rs.Fields(0).value
Se estiver utilizando o próprio recordset conectado para a atualização / inclusão, basta coletar o valor do campo de auto-numeração, como em:
Dim identidade As Long
...
mRs.AddNew()
mRs([Ô]CampoDois[Ô]) = [Ô]Teste[Ô]
mRs([Ô]CampoTres[Ô]) = [Ô]Testando[Ô]
mRs([Ô]CampoQuatro[Ô]) = #19/10/1966#
mRs.Update
identidade = mRs([Ô]CampoAutonum[Ô])
...
Em ambos os casos, o ID é retornado, e com ele você grava os dados da tabela-filhote.
P.S.: Isso é no Sun/Oracle MySQL. No Microsoft® SQL Server, ao invés de usar o @@Identity, utilize a SCOPE_IDENTITY(), para não correr o risco de retornar o último ID gerado por outro usuário que esteja acessando com a mesma seção do pool. O @@Identity, ainda que não seja um padrão efetivo, funciona também no SQL SERVER CE, no MS-Access etc etc.
Dim Rs As ADO.Recordset
Dim i As Long
...
cm.CommandText = [Ô]INSERT INTO tabela (campoum,campodois,campotrês) VALUES ([ô]TESTE[ô],[ô]TESTANDO[ô],[ô]TESTADO[ô])[Ô]
cm.Execute
cm.CommandText = [Ô]SELECT @@IDENTITY[Ô]
Set Rs = cm.Execute
i = Rs.Fields(0).value
Se estiver utilizando o próprio recordset conectado para a atualização / inclusão, basta coletar o valor do campo de auto-numeração, como em:
Dim identidade As Long
...
mRs.AddNew()
mRs([Ô]CampoDois[Ô]) = [Ô]Teste[Ô]
mRs([Ô]CampoTres[Ô]) = [Ô]Testando[Ô]
mRs([Ô]CampoQuatro[Ô]) = #19/10/1966#
mRs.Update
identidade = mRs([Ô]CampoAutonum[Ô])
...
Em ambos os casos, o ID é retornado, e com ele você grava os dados da tabela-filhote.
P.S.: Isso é no Sun/Oracle MySQL. No Microsoft® SQL Server, ao invés de usar o @@Identity, utilize a SCOPE_IDENTITY(), para não correr o risco de retornar o último ID gerado por outro usuário que esteja acessando com a mesma seção do pool. O @@Identity, ainda que não seja um padrão efetivo, funciona também no SQL SERVER CE, no MS-Access etc etc.
Valeu pessoal consegui.
Obrigado
Obrigado
finalize o topico, e pontue quem te ajudou.!
Tópico encerrado , respostas não são mais permitidas