我有一个用户表单插入" 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
任何帮助?
答案 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 进行更正。