访问VBA代码以插入两个不同的表

时间:2015-12-07 10:09:18

标签: sql vba access-vba

我有一个用户表单插入" user"表和"组织者"表 当我点击一个按钮时,用户数据插入没有问题,但组织者表数据没有。它给我一个错误,说" ms访问集1由于类型转换失败而归档为null"

注意:user_id是用户表中的主键和组织表中的外键。 它的数据类型是长整数。

我将不胜感激任何帮助

Private Sub InsertSqlIntoOrgTable()

   Dim orgUserId As Long, sqlOrgInsertUsrId As String

   orgUserId = getLastUserId()

   sqlOrgInsertUsrId = "INSERT INTO ORGANIZER (USER_ID) VALUES ('&orgUserId&')"

   DoCmd.RunSQL sqlOrgInsertUsrId

End Sub

此函数获取插入的最后一个user_id,以便在上面的代码中将其插入到管理器表中

Private Function getLastUserId() As Long

    Dim lastUserId As Long

    getLastUserId = DMax("USER_ID", "USER")

    getLastUserId = lastUserId

End Function

编辑:

我的类型转换失败错误已通过将我的sql语句修改为

来解决
 sqlOrgInsertUsrId = "INSERT INTO ORGANIZER (USER_ID) VALUES (" & orgUserId & ")"

现在我要添加" organization_name"它取自同一个用户,进入"组织者"表。 在上面的同一个Sub中,我添加了这样做的东西,但是它促使我在一个小的对话框中再次输入值(organization_name),然后又给了我一个错误说" ms访问设置一行为null因验证规则违规"

注意:我没有为" organization_name"提供任何验证规则。任何地方

Private Sub InsertSqlIntoOrgTable()
   Dim orgName As String, SqlOrgNameInsert As String

   orgName = txtOrgName.Value  'takes the value from text field
   SqlOrgNameInsert = "INSERT INTO ORGANIZER (ORG_NAME)     VALUES (" & orgName & ") "

   DoCmd.RunSQL SqlOrgNameInsert

End Sub

任何帮助?

2 个答案:

答案 0 :(得分:0)

你的getLastUserID函数是错误的。尝试:

Private Function getLastUserId() As Long

    Dim lastUserId As Long

    lastUserId = DMax("USER_ID", "USER")

    getLastUserId = lastUserId

End Function

如果没有解决问题,那么在分配SQL后向我们展示sqlOrgInsertUsrId的内容

答案 1 :(得分:0)

你的连接是错误的。一定是

sqlOrgInsertUsrId = "INSERT INTO ORGANIZER (USER_ID) VALUES (" & orgUserId & ")"

负责type conversion failure,然后通过 cboden 进行更正。