【问题标题】:How to autopopulate the field of a table in MS Access with a Identity created in seperate table如何使用在单独表中创建的身份自动填充 MS Access 中表的字段
【发布时间】:2017-06-29 21:17:56
【问题描述】:

我正在使用链接的 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)

出现错误 Run-time error '3464' Data type mismatch in criteria expression。

这是我第一次真正涉足 MS Access,我已经在网上搜索了解决方案。任何帮助将不胜感激。

【问题讨论】:

  • 您的条件表达式WHERE EV_ID = " & para & ";" 的数据类型是否可能不匹配?也许它不期待一个字符串?无论如何,您最好通过 Access 设计 gui 设置默认值。
  • 谢谢。为了测试它,我将查询更改为硬值并且它有效。虽然输入是一个数字,即 55231,但 ODBC 表中的数据类型是 VarChar,所以我希望字符串可以工作。是否有更可能匹配的不同数据类型?
  • 我还尝试使用 Access 中的参数构建查询,然后使用“SELECT * FROM qrySELECT_MINIMUM_ID”,但它出错,预期 1 参数为 0,有没有办法使用输入框设置参数或否则呢?

标签: database vba ms-access


【解决方案1】:

我设法使用不同的方法实现了我正在尝试的目标,并认为我会发布以供将来有人发现有用的东西。

为了解决数据类型不一致的问题,我使用查询来运行 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-05
    • 1970-01-01
    相关资源
    最近更新 更多