我正在使用链接的ODBC表在MS Access中构建一个表单,这将成为我们某些团队的一个大输入基础。我已经完成了大部分工作但是我正在尝试为主表自动生成主ID并填充文本框,以便代理不必。在SQL中有效地构建自动编号。
我在ODBC表中进行了生成和滚动编辑,并且只是将生成的代码放到相关字段中。我在按钮单击时使用宏,并具有以下代码:
Private Sub cmdSubmitDetails_Click()
Dim strSQL As String
Dim rst As Recordset
Dim db As Database
Dim para As String
para = InputBox("Please Enter Your User ID:")
strSQL = "SELECT Min([P_ID]) AS ID FROM QA_IDS WHERE EV_ID = " & para & ";"
Set db = CurrentDb
Set rst = db.OpenRecordset(strSQL)
Me.ID.Text = rst!ID
rst.Close
Set rst = Nothing
Set db = Nothing
End Sub
Me.ID是我试图填充的字段。这是错误的行
Set rst = db.OpenRecordset(strSQL)
错误运行时错误'3464'标准表达式中的数据类型不匹配。
这是我在MS Access中的第一次真正涉猎,我在网上搜索了解决方案。任何帮助将不胜感激。
答案 0 :(得分:0)
我设法实现了我尝试使用不同的方法,并认为我会发布给某人在将来找到有用的东西。
为了解决数据类型不一致的问题,我使用查询来运行SQL(包括输入用户ID),并将其附加到新表中。然后使用DLookup从该表中提取信息,然后清除该表。我最终得到了以下代码。
Private Sub cmdSubmitDetails_Click()
Dim x As String
Dim y As String
Dim z As String
DoCmd.SetWarnings False
DoCmd.OpenQuery ("AppendID")
x = DLookup("[ID]", "[TempID]")
Me.ID = x
y = DLookup("[EV_ID]", "[TempID]")
Me.EVALUATOR_ID = y
DoCmd.OpenQuery ("qryDELETE_TEMP_ID")
DoCmd.OpenQuery ("qryAddNextCallID")
DoCmd.OpenQuery ("qryDELETE_MINIMUM_ID")
DoCmd.SetWarnings True
End Sub