首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >确保Access 2000 mdb到Access 2010下的SQL Server上的SQL-92

确保Access 2000 mdb到Access 2010下的SQL Server上的SQL-92
EN

Stack Overflow用户
提问于 2011-06-17 14:20:08
回答 2查看 4.3K关注 0票数 4

由于我无法完全控制的情况,我必须开发ACCESS查询,这些查询将存储在Access 2000 MDB中,但可以在以下任何一种情况下开发: Access 2000、2002、2003、2007、2010。这些查询将访问(通过链接表) MS SQL Server DB或access 2000 .MDB文件。

在过去,我们追踪到的问题是查询不兼容ANSI-92。我们通过选中“工具|选项”对话框(在低于2007的Access版本下)的“表/查询”选项卡中的复选框解决了此问题。

我们在不同的系统之间移动这些访问应用程序.MDBs,现在我们通常没有任何问题。

然而,我刚刚开发了一个查询,它可以很好地处理所有内部连接,但是当我将其中一个连接更改为外部连接时,查询在Access 2010下失败,并出现"Invalid Operation“错误。所以我想我应该检查ANSI-92复选框是否仍然被设置。我找不到它。

现在,我知道Access 2003和更高版本自动使用ANSI 92语法,但我想知道在这种情况下(相当特定的情况)是否有任何方法可以检查这些查询是否属于这种情况。我观察到,当我们改变复选框时,我所有的“喜欢”查询都变成了"ALike“查询……

因此,问题归结为在这种情况下ANSI 92语法是完全透明的,而我的查询失败的原因是其他原因……

蒂娅,保罗

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-17 15:48:52

在Access 2010中,SQL Server语法兼容性设置位于:

文件>选项>对象设计器>查询设计。

您首先需要检查该选项是否已设置,以确认您的查询行为是否正常。

至于LIKEALIKE,后者将以ANSI方式工作,使用%_模式匹配。

在SQL-89兼容模式( MS Access SQL子集)中,LIKE仅适用于*?模式,但如果您将兼容性更改为SQL-92,则需要改用%_重写查询。

这就是引入ALIKE的原因,它允许您编写符合ANSI的模式,而不考虑您选择的兼容级别(因此在SQL-92兼容模式下,两者的行为是相同的)。

票数 3
EN

Stack Overflow用户

发布于 2011-06-18 02:46:46

实际上,没有理由在Access前端中将ANSI 92SQL模式设置为ON,除非您是一个懒惰的SQL Server程序员,他希望忘记自己是在Access而不是SQL Server中编写SQL。

您不想这样做的原因是它改变了Access应用程序中的一些东西,而实际上并没有采取任何措施来增强与SQL Server后端的交互。也就是说,如果在Access前端的SQL中使用SQL 89通配符,则ODBC驱动程序会在将SQL发送到服务器时负责转换为SQL 92通配符。唯一的例外是直通查询,但无论如何,这些查询都是用服务器的原生SQL编写的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6382064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档