0

我们需要使用用户 ID (NBK) 更新表。带有 NBK 的表也有用户状态 (0 - 1),一次只有一个用户有 1。挑战是#1 捕获活动用户#2 用用户 NBK 更新另一个表。我希望下面的代码只有一个我找不到的简单语法错误?

Dim nb As String
Dim NBK As String

nb = [Employees]![NBK] & "' WHERE "
nb = nb & " " & [Employees]![Status] = '1'
NBK = " Update tbl_DateTracking SET NBK = "
NBK = NBK & "'" & nb & "' WHERE "
NBK = NBK & "CaseId = '" & CaseId & "' AND OCC_Scenario = '" & OCC_Scenario & "' ;"

DoCmd.RunSQL nb
DoCmd.RunSQL NBK
4

1 回答 1

0

这里有几个注意事项:

  1. 您应该使用参数化查询而不是字符串连接。这可以防止/包含 SQL 注入和其他有关格式错误的输入的问题。
  2. 理想情况下,您应该规范化数据库,以便“活动用户”不是用户表上的字段。当数据库中有两个用户设置为“活动”时会发生什么?

但是,使用这个给定的模式,您将需要使用子选择查询。前任:

UPDATE tbl_DateTracking SET NBK=(SELECT NBK FROM Employees WHERE Status=1 LIMIT 1) WHERE CaseID=? AND OOC_Scenario=?然后传入CaseIdOOC_Scenario作为参数。

请注意,我不熟悉 VB 或它如何与 SQL 交互;以上只是一个示例,您必须将其应用于您的应用程序并对其进行更改以使其工作。您构建和运行嵌套查询的方式看起来也行不通,因为您的第一个查询不包含命令(您可能想要SELECT,我认为。VB 是否使用[]![]语法自动执行此操作?),以及何时您将它嵌套在第二个查询中,它没有被(). 如果您将第一个查询作为子查询包含在第二个查询中,则单独运行第一个查询也没有任何效果。

于 2012-09-07T15:17:05.053 回答