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