CHAVE PRIMARIA E CHAVE ESTRANGEIRA

EDINALDOLA 25/08/2011 17:16:50
#382504
Amigos, tenho um sistema que desenvolvi no Access2000. Gostaria de saber como faço para, após gravar os dados em uma tabela capturar o ID do registro gravado (chave primário com campo autonumérico) para poder graver este número como chave estrangeira em outra tabela. Estava utilizando o recurrso de capturar o último registro gravado, mas não tá dando muito certo.
Grato
LLAIA 25/08/2011 18:02:26
#382507
Resposta escolhida
logo após a inserção, faça uma consulta assim:



cnx.Execute [Ô]insert into suaTabela ...[Ô]

Set rs = cnx.Execute([Ô]select @@identity from suaTabela[Ô])
MsgBox rs(0)

Esse foi com ADO, mas com DAO também funciona.
EDINALDOLA 26/08/2011 08:04:39
#382524
Preciso declarar a variável cnx. Esta variável seria de que tipo. Tentei declarar como sendo do tipo connection, mas não funcionou. A concexão que faço é com DAO. Poderia me dar um exemplo mais completo? Grato.
VELDRAME 26/08/2011 10:33:32
#382541
Após gravar todas as informações e antes de fechar o rs faça:
Exemplo:

lblCódigo= rs!id


LLAIA 26/08/2011 14:12:59
#382570
Eu tive que ser rápido no post ontem e esqueci de perguntar como vc tá adicionando na tabela. Bom vejo já sei vc tá usando DAO.

Se estiver usando um objeto Recordset pra inserir os dados, faça como o VELDRAME postou. Se não, faça:

Set outroObjetoRecordset = seuObjetoDatabase.OpenRecordset([Ô]select @@identity from suaTabela[Ô],dbOpenSnapshot)
EDINALDOLA 26/08/2011 16:30:15
#382586
Amigos, ainda não consegui capturar o Id da Tabela1 para gravar na tabela2 , segue abaixo a estrutura que estou usando, será que vocês poderiam me ajudar? Agradeço

Dim db As DAO.Database
Dim RS As DAO.Recordset
Set db = DBEngine.Workspaces(0).Databases(0)

Set RS = db.OpenRecordset([Ô]TabelaUm[Ô])
RS.AddNew
RS!Campo1 = txtNome
[ô]Outros campos......
RS.Update

[ô]Feito o Update, preciso capturar o Id desta tabela para salvar na tabela dois (Chave estrangeira). De maneira que eu possa gravar
Set RS = db.OpenRecordset([Ô]TabelaDois[Ô])
RS.AddNew
RS!CodTabelaDois = IdTabela1
RS.Update
RS.Close
Set RS=Nothing
Set db=nothing



LLAIA 26/08/2011 19:37:19
#382596
Crie uma variável com escopo acessível ou coloque a informação em algum controle propício. Exemplo com variável:



Dim db As DAO.Database
Dim RS As DAO.Recordset
Set db = DBEngine.Workspaces(0).Databases(0)

Set RS = db.OpenRecordset([Ô]TabelaUm[Ô])
RS.AddNew
RS!Campo1 = txtNome
[ô]Outros campos......

[txt-color=#e80000]nIdTabelaCriado = rs([Ô]campoAutoNum[Ô])[/txt-color]
RS.Update

[ô]Feito o Update, preciso capturar o Id desta tabela para salvar na tabela dois (Chave estrangeira). De maneira que eu possa gravar
Set RS = db.OpenRecordset([Ô]TabelaDois[Ô])
RS.AddNew
[txt-color=#e80000]RS!CodTabelaDois = nIdTabelaCriado[/txt-color]
RS.Update
RS.Close
Set RS=Nothing
Set db=nothing
Tópico encerrado , respostas não são mais permitidas