Jump to content

INSERT INTO 2 Tables


startuga
 Share

Recommended Posts

É possível sim. Na realidade isso é feito na maioria das bases de dados, principalmente quando temos duas tabela relacionadas e queremos inserir um registo numa e relacionar esse registo a outro novo registo de uma outra tabela.

Existe vários métodos, mas para o Access posso te indicar 2:

1- Criar uma consulta baseada na relação entre as tabelas, e depois usa a instrução INSERT INTO para essa consulta.

2- No mesmo procedimento VBA, inseres registos numa tabela e depois noutra usando o objecto DAO.Recordset.

E claro que podes usar o segundo método com a consulta do primeiro.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

ola,

E nao seria mais facil, só existir uma tabela, com o campo TD e o campo TE, e os restantes campos ? qual o objectivo de 2 tabelas ?

de qualquer forma :

1 - no formulario de entrada de dados, a origem de registos do formulario, devera ser "unbound", ou seja retiras o que la estiver. Cada control no form tambem nao devera estar associado a nenhum campo.

2 - no formulario de entrada de dados, crias um botao que podes chamar inserir dados

3 - Considerei o nome de cada control inserindo o prefixo txt (ex: campo maquina na tabela é uma caixa de texto no formulario com nome txtMaquina. tens de adaptar cada control em conformidade)

4 - No editor de VBA (alt+f11), adicionas a referencia DAO360

5 - No botao que mencionei no ponto 2 colocarias um codigo deste tipo ( NAO testado)

Dim db as Database
Dim rstTabela1 as recordset
Dim rstTabela2 as recordset

Set Db = CurrentDb()
Set rstTabela1 = Db.OpenRecordset("tblTabela1",dbopendynaset)
Set rstTabela2 = Db.OpenRecordset("tblTabela2",dbopendynaset)

With rstTabela1
.AddNew
!Maquina= Me.txtMaquina
!Molde = Me.txtMolde
!Peso_arranque=txtPeso_arranque
' Aqui continuas com os outros campos da tua tabela1
.Update
End With


With rstTabela2
.AddNew
!Maquina= Me.txtMaquina
!Molde = Me.txtMolde
!Peso_arranque=txtPeso_arranque
' Aqui continuas com os outros campos da tua tabela
.Update
End With

rstTabela1.close
set rstTabela1=nothing
rstTabela2.close
set rstTabela2=nothing
Link to comment
Share on other sites

https://s4.postimg.cc/4kbz3yvv1/tavke.jpg

Boas,

Nessas 2 tabelas.

Molde e data são (Chaves)

Eu já tentei fazer um insert into nas duas aos mesmo tempo mas não consegui. 😞

É necessario criar algum relacionamento entre ambas?

As tabelas são idênticas, só muda mesmo é o nome. Isso é contrário a uma boa estruturação da base de dados.

Por isso sou da opinião do Carlos em que deves considerar a criação de uma única tabela.

Se for realmente necessário a existência dessas duas tabelas, para fazeres como indiquei tens de ter chaves primárias nas duas tabelas e de preferência formadas por apenas um campo.

Chaves primárias formadas por mais de um campo são complicadas de manter, e na minha opinião nem deviam existir, apenas deveria existir a possibilidade de múltiplos campos em chaves únicas(exclusivas).

Uma consulta que reúna campos de várias tabelas, para que possa ser usada para editar e inserir registos tem de usar JOIN entre as diversas tabelas por meio de chaves primárias, onde os campos usados para relacionamento serão considerados como um único.

Uma consulta deste tipo pode facilmente ser usada como Origem de Registos num formulário ou relatório.

O caminho mais curto para conseguir fazer muitas coisas é fazer uma de cada vez. Samuel Smiles

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.