【问题标题】:Using Variables in a MSAccess Function with SQL通过 SQL 在 MSAccess 函数中使用变量
【发布时间】:2022-01-04 10:59:22
【问题描述】:

我正在努力在所有表格上输入自定义 ID 号以将所有记录链接在一起,尝试标准化。

我有一个 EmployeeDetails 表和一个 LoginDetails 表。我的理解是,我需要一个名为 EmployeeID 的字段,并且我可以使用 SQL 选择代码,我必须像在其他表单上一样提取数据。 Username 也是 LoginDetails 表中的字段名称,txt_Username 是登录页面上的用户名文本框。

目前我只是将它放在登录屏幕上进行故障排除,但最终会在创建新员工时调用它。唯一的问题是我对如何在 SQL 行中包含变量的知识,即:

Function newID(frm As Form)

    Dim db As DAO.Database
    Set db = CurrentDb

    index = 12345
         
    db.Execute "UPDATE LoginDetails " & "SET EmployeeID = index " & "WHERE Username = frm.txt_username.Value;"

End Function

我已经尝试了大约 2-3 天,可能在这里和那里几个小时才能让它发挥作用,但我开始失去动力。我设法编写了一行 SQL,它有一个静态值作为 EmployeeID,但是一旦你在混合中添加了 VB 变量,它就不喜欢它了。

谁能帮帮我?

【问题讨论】:

  • Username = '" & frm.txt_username.Value & "';"
  • "UPDATE LoginDetails SET EmployeeID =" & index & " WHERE Username = '" & frm.txt_username.Value & "'"

标签: sql vba ms-access variables


【解决方案1】:

将 SQL 行视为包含 SQL 命令的字符串。

SQL 部分(表名、列名)是静态的,您需要连接通过访问它获得的变量。所以你的行是:

db.Execute "UPDATE LoginDetails SET EmployeeID = " & index & " WHERE Username = '" & frm.txt_username.Value & "';"

另外,在连接时最好在 SQL 关键字前留一个空格(防止执行时出现问题)。

【讨论】:

  • 您在用户名中缺少&...
  • 非常感谢。我知道VBA,但不太了解SQL。你能告诉我为什么我需要将 textbox.value 放在两个引号中吗?一个用于文本框,另一个用于 SQL?
  • 该值为字符串类型
  • 单引号是 SQL 中字符串的标识符。它们(大部分)与 VBA 中的双引号具有相同的用途。
  • 如果连接的值本身包含',请注意错误。使用 SQL 连接变量时使用参数或使用 Gustav 的CSql() function。
【解决方案2】:

db.Execute "UPDATE LoginDetails " & "SET EmployeeID = " & index & " WHERE Username = '" & frm.txt_username.Value &"'; "

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 2015-05-31
    • 1970-01-01
    • 2015-02-11
    • 2021-09-16
    • 2011-07-24
    相关资源
    最近更新 更多