如何使用在单独的表中创建的标识在MS Access中自动填充表的字段

时间:2017-06-28 15:30:29

标签: database vba ms-access

我正在使用链接的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中的第一次真正涉猎,我在网上搜索了解决方案。任何帮助将不胜感激。

1 个答案:

答案 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
相关问题