【发布时间】:2010-12-23 21:48:12
【问题描述】:
在 MS Access QBE 中,如果我粘贴以下 SQL,它可以正常工作并且我得到 2 条记录-
SELECT [tmp_binning].[bn_faibash] FROM [tmp_binning] WHERE key2='0210043-HOU-STOR' ORDER BY [tmp_binning].[bn_faibash];
但是,如果我以编程方式从 ADO 对象在 VBA 中运行相同的查询,我(错误地)没有得到任何记录。如果我更改 SQL 以删除字段名称周围的括号,它确实会正确返回 VBA ADO 中的 2 条记录。
SELECT [tmp_binning].bn_faibash FROM [tmp_binning] WHERE key2='0210043-HOU-STOR' ORDER BY [tmp_binning].bn_faibash;
我在谷歌上搜索不成功,为什么我自己会发生这种情况,谁能告诉我为什么?
谢谢。
【问题讨论】:
-
谁在乎为什么语法不同?每种 SQL 风格都有点不同。 SQL Server T-SQL 不同于 Oracle 不同于 DB2 不同于 Teradata 不同于 My SQL。
-
呃,它不是使用不同的 SQL 方言,只是不同的接口。它不应该是不同的。但是,这又是使用从不需要括号的命名约定的另一个论据。在我看来,这也是从不使用 ADO 的论据。
-
@DOK,我关心我理解为什么我正在使用的工具会出现奇怪的差异,以及这是我的错误还是奇怪的故障。正如大卫指出的那样,这也不是一种不同的方言。 @David,我也不喜欢需要空格的命名约定,但我支持以前编写的工具,该工具需要大量工作才能删除所有以前的不良做法。你觉得 DAO 比 ADO 更可靠吗?谢谢。
-
为了处理来自 Access 的 Jet/ACE 数据,DAO 是正确的接口(并且一直如此)。从外部访问,这取决于您使用的工具是 ADO 还是 DAO 是最佳选择。经典 ADO 在所有平台上都已死,所以我会警惕在任何环境中使用它。
-
@David-W-Fenton 我认为这不是真的:bytes.com/topic/access/answers/458870-ado-dead-2-a