访问 VBA 中的 DoCmd.RunSQL

DoCmd.RunSQL in access VBA

提问人:kronos8111 提问时间:10/19/2023 最后编辑:June7kronos8111 更新时间:10/19/2023 访问量:72

问:

我在私人潜艇中有以下内容,但我不知道为什么我无法让它工作。任何帮助将不胜感激。

Me.FirstRecordL 和 Me.LastRecordL 是命令按钮执行 sql 的相同形式的标签。如果我运行以下命令,它可以工作:(但它删除了整个表。 我只想删除 Me.FirstRecordL 和 Me.LastRecordL 之间的记录范围)

Private Sub RunSQL_Click()
DoCmd.RunSQL ("delete * from CTRTable")
End Sub

所以,我猜问题出在“ ' ”和 &,他们正在杀死我。我尝试了多种组合,但没有运气。

Private Sub RunSQL_Click()
DoCmd.RunSQL ("delete * from CTRTable where '[ctr #] >= & Me.FirstRecordL'" & "'[CTR #] <= & Me.LastRecordL'")
End Sub

我在多个论坛上尝试过,但没有运气。如果有人能帮我解决这个问题,我会很高兴的。

SQL VBA MS-ACCESS

评论

1赞 June7 10/19/2023
FirstRecordL 和 LastRecordL 实际上是文本框,而不是标签吗?
2赞 Craig 10/19/2023
看看你是如何构造你的字符串的,并找出命令无法正确执行的原因。如果你不能通过查看代码来解决这个问题,那么只需将该串联的字符串输出到一个消息框中,阅读它,然后你应该能够找出命令失败的原因

答:

2赞 June7 10/19/2023 #1

串联搞砸了。请记住,所有文字文本都在引号之间,变量在引号外连接。

还缺少 AND 运算符。

DoCmd.RunSQL ("DELETE FROM CTRTable " & _
              "WHERE [ctr #] >='" & Me.FirstRecordL & "' AND [CTR #] <='" & Me.LastRecordL & "'")

DoCmd.RunSQL ("DELETE FROM CTRTable " & _
              "WHERE [ctr #] BETWEEN '" & Me.FirstRecordL & "' AND '" & Me.LastRecordL & "'")

要避免弹出警告,请执行以下操作:

DoCmd.SetWarnings False
DoCmd.RunSQL ...
DoCmd.SetWarnings True

或使用:

CurrentDb.Execute "DELETE FROM CTRTable " & _
              "WHERE [ctr #] BETWEEN '" & Me.FirstRecordL & "' AND '" & Me.LastRecordL & "'"

如果 [ctr #] 是数字字段,请不要使用撇号分隔符。

强烈建议不要在命名约定中使用空格或标点符号/特殊字符。最好是 CtrNum

评论

0赞 kronos8111 10/19/2023
您好,感谢您的及时回复。我仍然收到运行时错误 438 对象不支持此属性或方法。可能会发生什么?
0赞 kronos8111 10/19/2023
此外,[CTR #] 是一个数字。那么我应该删除哪个撇号“或双撇号”?
0赞 June7 10/19/2023
单号是撇号,双号是引号。
0赞 kronos8111 10/19/2023
我仍然收到运行时错误 438 对象不支持此属性或方法。可能会发生什么?
0赞 June7 10/19/2023
SQL对我有用。FirstRecordL 和 LastRecordL 是文本框?我在其他评论中问过他们,你还没有回答。你的叙述说它们是标签,这没有意义。