Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 如何阻止MS Access更改我的SQL代码?_Ms Access - Fatal编程技术网

Ms access 如何阻止MS Access更改我的SQL代码?

Ms access 如何阻止MS Access更改我的SQL代码?,ms-access,Ms Access,我在MS Access中编写了一个SQL查询,Access把它弄得一团糟,结果显示它是“图形化的”。 如何阻止它这样做?如果将SQL保存为QueryDef对象(即使用图形查询编辑器),则无法阻止Access更改SQL。您(至少)还有两个选择: 在VBA中生成查询 将查询存储在专用于查询的表中,使用备注字段存储SQL(这还需要一些VBA来获取SQL并执行它或将其分配给临时querydef,等等) 如果需要,您仍然可以使用QBE(示例查询)窗口最初生成SQL 此外,如果您有一个非Jet后端(例如MS

我在MS Access中编写了一个SQL查询,Access把它弄得一团糟,结果显示它是“图形化的”。
如何阻止它这样做?

如果将SQL保存为QueryDef对象(即使用图形查询编辑器),则无法阻止Access更改SQL。您(至少)还有两个选择:

  • 在VBA中生成查询
  • 将查询存储在专用于查询的表中,使用备注字段存储SQL(这还需要一些VBA来获取SQL并执行它或将其分配给临时querydef,等等)
  • 如果需要,您仍然可以使用QBE(示例查询)窗口最初生成SQL


    此外,如果您有一个非Jet后端(例如MS SQL Server),则可以编写传递查询。您失去了图形界面,但获得了在所选后端编写SQL的所有功能。Access不会重新排列传递查询的格式。

    这里有一个肮脏的把戏:在查询末尾附加一个
    联合,该联合始终为FALSE

    SELECT field_1, field_2 
    FROM my_table
    UNION select field_1, field_2 FROM my_table WHERE False = True;
    

    这太可怕了,我为做这样的事情感到羞耻,但它确实有效。

    +1说得好。一个小问题:建议您从“本地表”中删除本地。链接表对于多个数据库共享相同的SQL语句非常有用。这一点很好!我自己不使用表中查询方法(我用VBA生成大多数查询)。不过,我没有考虑使用链接表的方法。这是我将来必须考虑的事情。我喜欢你的想法!是的,我玩过。但是对于表中的查询,我使用了另一个字段“Comments”,用于。。。嗯。。。注释。我特别想到了内联注释。在极少数情况下,我曾有过这样一个问题,我认为内联注释会很好。不过,总的来说,它们可能不值得增加复杂性。有时我需要提醒自己,我不需要另一双。我的任务是为我的工作创建一个Access数据库(我第一次使用它),这让我非常恼火。谢谢你的回答,因为它避免了一些挫折,但实际上这不应该是一个问题。我想不出我在任何平台上使用过的另一个数据库风格的应用程序会悄悄地决定为您重写SQL查询