为什么在Access数据库中不行?(20分)

  • 主题发起人 主题发起人 BigFan
  • 开始时间 开始时间
B

BigFan

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个通用的查询窗体,但在SQL-Server数据库中可以正常运行,但在Access中却无法
执行正常,主要是模糊查询时,比如:‘Select * from 表1 where Name like "张*" ’执行
结果没有,如果是‘Select * from 表1 where Name like "张三" ’则会找到一个记录,请教
大家这是怎么回事,我用的是ADOQuery和Access数据库。
 
用下面的试试。
Select * from 表1 where Name like "张%"
 
我知道在ACCESS中的通配符*表示多个字符,?是单一字符,用%我也度过,同样不行
 
是吗?我刚试过,可以的呀。
 
用%是可以的,我的程序就是这样写的。
 
为什么在OFFICE的查询中执行又行呢,在我的DELPHI应用程序就不行?
 
' Like '+'"'+'*'+'张三'+'*'+'"';
 
DAOj里用*,ADO里应用%
 
NAME 改成 [NAME]
 
标准的sql应该是用 % 和 _ 才对的
 
以上有的人说了,以下这段来自中国微软
(http://office.microsoft.com/china/assistance/2002/articles/acFilterQueryAccessProj.aspx)
Access 项目是为连接 Microsoft SQL Server 或 Microsoft SQL Server 2000 Desktop Engine(以前为 MSDE)的后端数据库而设计的。标准查询语言 (SQL) 是用于与关系型数据库配合工作的标准交互和编程语言。Transact-SQL 语言是 SQL Server 和 Desktop Engine 都使用的本机 SQL 语言。Transact-SQL 支持 ANSI SQL-92,它是最新的 SQL 标准。Access 2002 项目必须使用 ANSI SQL-92 语法运行 SQL Server 数据的查询或筛选表达式。

Access 数据库使用 Jet Database Engine 来查询本机数据。Jet 支持 ANSI SQL-89 标准(以下简称 Jet SQL 语法)。Jet SQL 语法在几个方面与 ANSI SQL-92 标准不同。例如,Jet SQL 语法使用星号 (*) 作为多字符通配符,而 ANSI SQL-92 语法则使用百分号 (%)。

例如,要返回以字母 U 开头的国家/地区的所有客户,使用 Jet SQL 语法:

SELECT * FROM Customers WHERE Country Like 'U*'


要返回以字母 U 开头的国家/地区的所有客户,使用 ANSI SQL-92 语法:
SELECT * FROM Customers WHERE Country Like 'U%'


同样,Access 2002 项目中的筛选表达式也使用 ANSI SQL-92 标准。如果您将以前版本的 Access 项目迁移至 Access 2002,应当检查所有表达式以确保返回所希望的结果。
+
例如,搜索 CustomerName = 'B*' 的宏表达式,不能找到所有以字母 B 开头的客户姓名,因为星号 (*) 不是 ANSI SQL-92 的通配符。要解决此问题,请修改宏表达式,改用百分号 (%) 通配符:CustomerName = 'B%'。

 
多谢各位,版主散分吧
 
后退
顶部