Office中国论坛/Access中国论坛

标题: 我的SQL出错,请问JET SQL与ANSI SQL之区别 [打印本页]

作者: antywjl    时间: 2006-5-19 00:07
标题: 我的SQL出错,请问JET SQL与ANSI SQL之区别


我的SQL出错,请问JET SQL与ANSI SQL之区别?



我在里面的查询里SQL视图中输入下面SQL语句,窗口打开就要输入参数(原因是查询分析器不能标识由查询指定的对象或者估价某个表达式时,便会出现“输入参数值”对话框)


我想知道问题是出在字段名上吗,可这些字段名与表中,窗体中相符?


Select 企业.名称, 企业.客户号, 企业.法人代码, 企业.账号, 企业.网点编号, 企业.客户经理编号
From 企业
Where(((企业.网点编号)=[Forms]![企业资料]![网点编号Q]) And ((企业.名称)=[Forms]![企业资料]![企业名称Q]) And ((企业.客户经理编号)=[Forms]![企业资料]![客户经理编号Q]))


Or
(((企业.网点编号)=[Forms]![企业资料]![网点编号Q]) And ((企业.名称)=[Forms]![企业资料]![企业名称Q]) And ([Forms]![企业资料]![客户经理编号Q] IsNull))


Or
(((企业.网点编号)=[Forms]![企业资料]![网点编号Q]) And ([Forms]![企业资料]![企业名称Q] Is Null) And ((企业.客户经理编号)=[Forms]![企业资料]![客户经理编号Q]))


Or (([Forms]![企业资料]![网点编号Q] IsNull) And ((企业.名称)=[Forms]![企业资料]![企业名称Q]) And ((企业.客户经理编号)=[Forms]![企业资料]![客户经理编号Q]))


Or
(((企业.网点编号)=[Forms]![企业资料]![网点编号Q]) And ([Forms]![企业资料]![企业名称Q] IsNull) And ([Forms]![企业资料]![客户经理编号Q] IsNull))


Or
(([Forms]![企业资料]![网点编号Q] IsNull) And ((企业.名称)=[Forms]![企业资料]![企业名称Q]) And ([Forms]![企业资料]![客户经理编号Q] IsNull))


Or
(([Forms]![企业资料]![网点编号Q] IsNull) And ([Forms]![企业资料]![企业名称Q] IsNull) And ((企业.客户经理编号)=[Forms]![企业资料]![客户经理编号Q]))


Or
(([Forms]![企业资料]![网点编号Q] IsNull) And ([Forms]![企业资料]![企业名称Q] IsNull) And ([Forms]![企业资料]![客户经理编号Q] IsNull))[attach]17872[/attach]


[此贴子已经被作者于2006-5-18 17:30:57编辑过]


作者: LucasLynn    时间: 2006-5-19 00:15




发个附件上来,看得有点晕了。






作者: fan0217    时间: 2006-5-19 00:17
Microsoft Jet SQL 和 ANSI SQL 的比较





Microsoft Jet 数据库引擎


SQL 通常与 ANSI-89 Level 1 相兼容。但是,某些 ANSI


SQL 特性并没有在 Microsoft® Jet SQL 中实现。在 Microsoft Jet 4.X 版本发行后,Microsoft OLE DB


Provider for Jet 使用了更多的 ANSI-92


SQL
语法。而 Microsoft Jet SQL 则包含 ANSI SQL 不支持的关键字和特性。





主要区别











Microsoft Jet SQL 的增强功能





Microsoft Jet SQL 提供了如下增强功能:





TRANSFORM 语句,它对交叉表查询提供支持。











PARAMETERS 声明用于定义参数查询





Microsoft Jet SQL 不支持的 ANSI SQL 功能。





Microsoft Jet SQL 不支持如下 ANSI SQL 功能:











请参阅

















等价的 ANSI SQL


数据类型



Microsoft Jet


数据库引擎 SQL 保留字






Like





SQL 聚合函数








Microsoft Jet 数据库引擎


SQL 数据类型



使用通配符进行字符串比较









作者: Benjamin_luk    时间: 2006-5-19 00:24


因为你引用了窗体:[企业资料]的值,在这个窗体没有打开的情况下,ACCESS当然会提示你输入参数。你先打开你引用的窗体,再打开SQL就不会有这个问题了。

[此贴子已经被作者于2006-5-18 16:30:22编辑过]


作者: antywjl    时间: 2006-5-19 00:50
我输入SQL再打开窗体时也出现一样的问题,不只是在打开查询的时候。试了你的方法,还是有问题。
作者: Benjamin_luk    时间: 2006-5-19 01:11
如果以上是用在窗体里的SQL,请注意通配符的引用.另外

先将要引用的窗体打开.

请将(...IsNull改为

IsNull(...)

最好能将你的MDB放上来.
作者: antywjl    时间: 2006-5-19 01:37
我的SQL语句是在查询里的SQL视图中,在输入语句打开相应的企业资料窗体(在这窗体中引用到此查询)或打开查询都会要求输入参数。

ISNULL和IS NULL有什么特别的区别吗,()IS NULL和ISNULL()又有什么区别呢




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3