【问题标题】:SQL UPDATE statement always updates first row in table Microsoft AccessSQL UPDATE 语句总是更新表 Microsoft Access 中的第一行
【发布时间】:2018-05-18 05:06:41
【问题描述】:

我有两个复选框,用户必须从中选择一个选项。然后,他们单击一个按钮,使用他们提供的信息更新表格。它使用选定的信息进行更新非常好,但由于某种原因它总是更新表格的第一行,我不明白为什么。清单 19 包含订单号,它采用字符串的形式。所有这些字符串的格式都是 xxxx-xx,其中 x 是数字。 List29 包含五个字符串选项之一,这与字段 [OrderStatus] 的 5 个选项相同。这是我的按钮代码。

Private Sub Command21_Click()
Dim x, y, z As String
Dim db As Database
Set db = CurrentDb
x = List19.Value
y = List29.Value
z = "UPDATE orders SET [OrderStatus] = " & Chr$(34) & y & Chr$(34) & " WHERE [OrderNumber] = " & Chr$(34) & x & Chr$(34) & ";"
db.Execute z

I ran the code and added a message box that displays what the update statement is and this is the what I got:

【问题讨论】:

  • 你应该发布更多数据,比如 List19 和 List29 中的数据
  • 我编辑以添加更多信息,但是如果你看一下我发布的图片,我在消息框右侧的框中的字符串出现在我的 SQL 语句中,但无论我选择什么订单号,它也总是更新第一行条目。
  • 提示:你不需要& Chr$(34) & - 你可以直接使用单引号。您还应该使用参数而不是连接字符串来形成 SQL,否则您将面临 SQL 注入攻击 - 或者发现包含引号的字符串,如 "O'Reilly" 会导致事情中断。
  • 这听起来很奇怪,但您确定它不起作用吗?看起来您正在使用子表单,但您没有重新查询表单,因此如果我没记错的话,您可能看不到当前信息。另外,orders 是我们在屏幕截图中查看的表格吗?
  • @Jiggles32 子窗体独立于复选框和按钮,仅用于使用左上角的搜索框进行搜索。但它确实显示了订单表,其中只有这 5 个条目。当我点击它时,子表单会重新更新,所以我确定它不起作用。当我查看选项表时,更改也会保存。

标签: sql ms-access vba


【解决方案1】:

我想通了。原来 List29 绑定到订单表中的 [OrderStatus],控制源是 [OrderStatus],不太确定它们是否相同。我删除了控制源,它意外地停止更新第一行。感谢大家的帮助。

【讨论】:

  • 很高兴您发现了这个问题。来自我的 +1。
猜你喜欢
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 2023-03-20
  • 2011-03-04
  • 2019-07-10
  • 2017-09-02
  • 2021-04-13
  • 2012-02-22
相关资源
最近更新 更多