为了账号安全,请及时绑定邮箱和手机立即绑定

管理和调试MS Access中的SQL查询

管理和调试MS Access中的SQL查询

郎朗坤 2019-06-06 13:18:06
管理和调试MS Access中的SQL查询MSAccess管理原始SQL查询的能力有限:编辑器非常糟糕,没有语法突出显示,它将原始SQL重新格式化为长字符串,不能插入注释。调试复杂的SQL查询也是一件痛苦的事情:要么您必须将其拆分为许多在模式更改时变得难以管理的较小的查询,要么您将最终得到一个巨大的查询,这是调试和更新的噩梦。如何在MS Access中管理复杂的SQL查询以及如何调试这些查询?编辑目前,我主要是用记事本+用于某些语法着色和SQL漂亮打印机用于合理地重新格式化Access中的原始SQL。使用外部存储库是有用的,但是保持这两个版本不同步的风险总是存在的,在尝试访问查询之前,您仍然需要删除注释.
查看完整描述

3 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

为了调试,我在一个单独的文本编辑器中编辑它们,使我能够明智地格式化它们。当我发现需要进行更改时,我会在文本编辑器中编辑版本,并将其粘贴回Access,而不会在Access中编辑版本。

还是个大皮塔。


查看完整回答
反对 回复 2019-06-06
?
慕慕森

TA贡献1856条经验 获得超17个赞

我有一些技巧是针对VBA中的SQL的。

将SQL代码与字符串变量放在一起。我以前是这样做的:

DoCmd.RunSQL "SELECT ..."

这是很难管理的。而是这样做:

strSQL = "SELECT ..."DoCmd.RunSQL strSQL

通常,除非您看到正在运行的内容,否则无法修复查询。为此,在执行之前将SQL转储到即时窗口:

strSQL = "SELECT ..."Debug.Print strSQL
Stop
DoCmd.RunSQL strSQL

将结果粘贴到Access的标准查询生成器(必须使用SQL视图)。现在您可以测试最终版本,包括代码处理的变量。

当将长查询准备为字符串时,拆分代码:

strSQL = "SELECT wazzle FROM bamsploot" _      & vbCrLf & "WHERE plumsnooker = 0"

我第一次学会使用vbCrLf当我想美化给用户的长消息时。后来,我发现它使SQL在编码时更加可读性,并且改进了Debug.Print..(其他微小的好处:每行末尾不需要空间。))的新行语法。)

(注意:您可能认为这将允许您在SQL行的右侧添加注释。(为失望做好准备。)

正如这里其他地方所说,到文本编辑器的旅行是一种节省时间的方法。一些文本编辑器提供了比官方VBA编辑器更好的语法突出显示。(见鬼,StackOverflow做得更好。)它还可以有效地删除WHERE子句中的访问CRUFT,例如多余的表引用和大量括号。

解决严重问题的工作流程:

VBA Debug.Print >       (capture query during code operation)
  query builder   >     (testing lab to find issues)
     Notepad++      >   (text editor for clean-up and review)
  query builder   >     (checking, troubleshooting) VBA

当然,解决问题通常是降低查询的复杂性,直到您能够隔离问题(或者至少使其消失!)。然后你可以把它建回你想要的杰作。因为解决一个棘手的问题可能需要几个周期,所以您可能会重复使用这个工作流。


查看完整回答
反对 回复 2019-06-06
  • 3 回答
  • 0 关注
  • 618 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信