您可以在表单的插入事件之前或之后执行 INSERT 语句。如果您的表单有一个名为 txtID 的文本框绑定到表单记录源中的 ID 字段:
Private Sub Form_AfterInsert()
Dim db As DAO.Database
Set db = CurrentDb
db.Execute "INSERT INTO Table2 (ID) VALUES (" & Me.txtID & ");", dbFailOnError
db.Execute "INSERT INTO Table3 (ID) VALUES (" & Me.txtID & ");", dbFailOnError
db.Execute "INSERT INTO Table4 (ID) VALUES (" & Me.txtID & ");", dbFailOnError
Set db = Nothing
End Sub
该方法假定这些表中除 ID 字段之外的所有字段都将接受 Null 值(在表设计视图中,Required 属性为 No)。
但最好从插入事件之前执行此操作,如果任何其他插入失败,则取消当前表单的插入。在这种情况下,您可能还想回滚任何其他成功的插入 --- 这很容易变得更复杂。
编辑:我给了你一个非常粗略的大纲。既然您收到的参数消息太少,建议您按照这些行修改它,以便查看您要求数据库引擎执行的确切 INSERT 语句。
Private Sub Form_AfterInsert()
Dim db As DAO.Database
Dim strSql As String
Set db = CurrentDb
strSql = "INSERT INTO Table2 (ID) VALUES (" & Me.txtID & ");"
Debug.Print strSql
db.Execute strSql, dbFailOnError
strSql = "INSERT INTO Table3 (ID) VALUES (" & Me.txtID & ");"
Debug.Print strSql
db.Execute strSql, dbFailOnError
strSql = "INSERT INTO Table4 (ID) VALUES (" & Me.txtID & ");"
Debug.Print strSql
db.Execute strSql, dbFailOnError
Set db = Nothing
End Sub
您可以在立即窗口中查看这些 Debug.Print 语句的输出。 (您可以使用 Ctrl+g 进入即时窗口)您还可以通过从即时窗口复制这些语句,然后将其粘贴到新查询的 SQL 视图中来测试其中的任何语句。
Edit2:如果 Record_Num 是文本(例如 R98609)而不是数字数据类型,请在构建 INSERT 语句时在值周围添加引号。
strSql = "INSERT INTO Table2 (ID) VALUES ('" & Me.txtID & "');"