vb6.0中access无法模糊查询
在VB6.0中以下语句得出记录为空,但access的表中肯定是有的。比如:“工艺”字段有这条记录:“覆膜-汤金-压纹-压线”查询语句:select*from工艺_Tabw...
在VB6.0中 以下语句得出记录为空,但access的表中肯定是有的。
比如:“工艺”字段有这条记录:“覆膜-汤金-压纹-压线”
查询语句:
select * from 工艺_Tab where 工艺 like '*" & MotoKey & "*'"
查询不到任何结果
将上面语句改为
select * from 工艺_Tab where 工艺 like '**" & MotoKey & "**'"
就是MotoKey的两边各多加一个 * 之后
当MotoKey="覆"或"覆膜"时;
当MotoKey="压线"或"线"时 查询不到结果
然而当MotoKey的值只要不是开头或结尾都能正查询到。
换句话说,就是MotoKey关键词,只要是在开头或结尾都不能查询出吉果,为什么?
我想实现的是,当输入“覆膜-汤金-压线”中任何一个字或词(包括第一个或最后一个字)时可以查询到这条记录。
我该怎么实现啊?
同样的事情,在ASP中无须能正常执行,VB6.0怎么了,我该怎么办?大侠帮忙啊。
当把 * 换成 % 后,更是不能查到任何结果。
Access 数据据库的打开方式
Set MyData = OpenDatabase(DBFile)
Set MyRes = MyData.OpenRecordset(SerchSQL)
特别感谢 halushank 兄弟 ,采用ADODB方法打开数据库后我这边依然不能以记录的第一个字作为查询关键词,但还是要感谢 halushan 兄弟为这个问题花费的时间和精力,非常感谢。
我已经解决了,原来……如此,鬼才知晓是为什么。在此特别感谢大家的参与。 展开
比如:“工艺”字段有这条记录:“覆膜-汤金-压纹-压线”
查询语句:
select * from 工艺_Tab where 工艺 like '*" & MotoKey & "*'"
查询不到任何结果
将上面语句改为
select * from 工艺_Tab where 工艺 like '**" & MotoKey & "**'"
就是MotoKey的两边各多加一个 * 之后
当MotoKey="覆"或"覆膜"时;
当MotoKey="压线"或"线"时 查询不到结果
然而当MotoKey的值只要不是开头或结尾都能正查询到。
换句话说,就是MotoKey关键词,只要是在开头或结尾都不能查询出吉果,为什么?
我想实现的是,当输入“覆膜-汤金-压线”中任何一个字或词(包括第一个或最后一个字)时可以查询到这条记录。
我该怎么实现啊?
同样的事情,在ASP中无须能正常执行,VB6.0怎么了,我该怎么办?大侠帮忙啊。
当把 * 换成 % 后,更是不能查到任何结果。
Access 数据据库的打开方式
Set MyData = OpenDatabase(DBFile)
Set MyRes = MyData.OpenRecordset(SerchSQL)
特别感谢 halushank 兄弟 ,采用ADODB方法打开数据库后我这边依然不能以记录的第一个字作为查询关键词,但还是要感谢 halushan 兄弟为这个问题花费的时间和精力,非常感谢。
我已经解决了,原来……如此,鬼才知晓是为什么。在此特别感谢大家的参与。 展开
3个回答
展开全部
和VB 6.0无关,是ACCESS的问题。
选择使用sqlserver 就不会有问题了。
两种 ANSI SQL 查询模式 (ANSI SQL 查询模式:两种类型的 SQL 语法之一:ANSI-89 SQL(又称 Microsoft Jet SQL 和 ANSI SQL),是一种传统的 Jet SQL 语法;ANSI-92 SQL,含有新的和不同的保留字、语法规则及通配符。),ANSI-89 和 ANSI-92,是互不兼容的,使用不同的通配符。例如,如果:
•在设为 ANSI-92 查询模式的数据库中运行 ANSI-89 SQL 查询 (查询:有关表中所存储的数据的问题,或要对数据执行操作的请求。查询可以将多个表中的数据放在一起,以作为窗体或报表的数据源。),如:
SELECT * FROM Customers WHERE Country Like 'U*'
它返回来自名为“U*”的国家/地区的所有客户,而不是所有以字母“U”打头的国家/地区,因为星号 (*) 在 ANSI-92 SQL 中不是通配符。
•在设为 ANSI-89 查询模式的数据库中运行 ANSI-92 SQL 查询,如:
SELECT * FROM Customers WHERE Country Like 'U%'
它返回来自名为“U%”的国家/地区的所有客户,而不是所有以字母“U”打头的国家/地区,因为百分号 (%) 在 ANSI-89 SQL 中不是通配符。
当创建 Microsoft Access 数据库 (Microsoft Access 数据库:数据和对象(如表、查询或窗体)组成的集合,与特定的主题或用途有关。)时,需要决定使用哪种查询模式,因为如果稍后在不同于 Access 数据库当前模式的 ANSI SQL 查询模式下创建一个的查询,您的查询就可能会生成运行时错误或产生意外结果
若要在 Microsoft Access 项目中或在使用了与 Microsoft SQL Server 兼容的语法的 Microsoft Access 数据库中查找字段值、记录或文件名之类的内容,请使用下列 ANSI-92 通配符。
注释 如果在 Access 项目或 Access 数据库中使用“查找和替换”对话框,而 Access 项目或 Access 数据库使用了与 Microsoft SQL Server 兼容的语法,就必须使用 Microsoft Jet SQL 通配符。
字符 说明 示例
% 与任何个数的字符匹配,在字符串中,它可以当作第一个或最后一个字符使用。 wh% 可以找到 what、white 和 why
_ 与任何单个字母的字符匹配。 B_ll 可以找到 ball、bell 和 bill
[ ] 与方括号内任何单个字符匹配。 B[ae]ll 可以找到 ball 和 bell 但找不到 bill
^ 匹配任何不在方括号之内的字符。 b[^ae]ll 可以找到 bill 和 bull 但找不到 ball 或 bell
- 与某个范围内的任一个字符匹配。必须按升序指定范围(A 到 Z,而不是 Z 到 A)。 b[a-c]d 可以找到 bad、bbd 和 bcd
注释
•使用通配符搜索其他通配符,如星号 (*)、问号 (?)、数字符 (#)、左方括号 ([) 或连字符 (-) 时,必须将要搜索的项括在方括号内;如果搜索感叹号 (!) 或右方括号 (]),则不必将其括在方括号内。
例如,若要搜索问号,请在“查找”对话框内键入 [?]。如果要同时搜索连字符和其他字符,请将连字符放在方括号内所有其他字符之前或之后。(但是,如果在左方括号之后有一个感叹号,请将连字符放在感叹号之后。)
•必须将左、右方括号放在下一层方括号内 ([[ ]]),才能同时搜索一对左、右方括号 ([ ]),否则 Microsoft Access 会将这种组合作为零长度字符串 (零长度字符串:不含字符的字符串。可以使用零长度字符串来表明您知道该字段没有值。输入零长度字符串的方法是键入两个彼此之间没有空格的双引号 (" ")。)处理。
选择使用sqlserver 就不会有问题了。
两种 ANSI SQL 查询模式 (ANSI SQL 查询模式:两种类型的 SQL 语法之一:ANSI-89 SQL(又称 Microsoft Jet SQL 和 ANSI SQL),是一种传统的 Jet SQL 语法;ANSI-92 SQL,含有新的和不同的保留字、语法规则及通配符。),ANSI-89 和 ANSI-92,是互不兼容的,使用不同的通配符。例如,如果:
•在设为 ANSI-92 查询模式的数据库中运行 ANSI-89 SQL 查询 (查询:有关表中所存储的数据的问题,或要对数据执行操作的请求。查询可以将多个表中的数据放在一起,以作为窗体或报表的数据源。),如:
SELECT * FROM Customers WHERE Country Like 'U*'
它返回来自名为“U*”的国家/地区的所有客户,而不是所有以字母“U”打头的国家/地区,因为星号 (*) 在 ANSI-92 SQL 中不是通配符。
•在设为 ANSI-89 查询模式的数据库中运行 ANSI-92 SQL 查询,如:
SELECT * FROM Customers WHERE Country Like 'U%'
它返回来自名为“U%”的国家/地区的所有客户,而不是所有以字母“U”打头的国家/地区,因为百分号 (%) 在 ANSI-89 SQL 中不是通配符。
当创建 Microsoft Access 数据库 (Microsoft Access 数据库:数据和对象(如表、查询或窗体)组成的集合,与特定的主题或用途有关。)时,需要决定使用哪种查询模式,因为如果稍后在不同于 Access 数据库当前模式的 ANSI SQL 查询模式下创建一个的查询,您的查询就可能会生成运行时错误或产生意外结果
若要在 Microsoft Access 项目中或在使用了与 Microsoft SQL Server 兼容的语法的 Microsoft Access 数据库中查找字段值、记录或文件名之类的内容,请使用下列 ANSI-92 通配符。
注释 如果在 Access 项目或 Access 数据库中使用“查找和替换”对话框,而 Access 项目或 Access 数据库使用了与 Microsoft SQL Server 兼容的语法,就必须使用 Microsoft Jet SQL 通配符。
字符 说明 示例
% 与任何个数的字符匹配,在字符串中,它可以当作第一个或最后一个字符使用。 wh% 可以找到 what、white 和 why
_ 与任何单个字母的字符匹配。 B_ll 可以找到 ball、bell 和 bill
[ ] 与方括号内任何单个字符匹配。 B[ae]ll 可以找到 ball 和 bell 但找不到 bill
^ 匹配任何不在方括号之内的字符。 b[^ae]ll 可以找到 bill 和 bull 但找不到 ball 或 bell
- 与某个范围内的任一个字符匹配。必须按升序指定范围(A 到 Z,而不是 Z 到 A)。 b[a-c]d 可以找到 bad、bbd 和 bcd
注释
•使用通配符搜索其他通配符,如星号 (*)、问号 (?)、数字符 (#)、左方括号 ([) 或连字符 (-) 时,必须将要搜索的项括在方括号内;如果搜索感叹号 (!) 或右方括号 (]),则不必将其括在方括号内。
例如,若要搜索问号,请在“查找”对话框内键入 [?]。如果要同时搜索连字符和其他字符,请将连字符放在方括号内所有其他字符之前或之后。(但是,如果在左方括号之后有一个感叹号,请将连字符放在感叹号之后。)
•必须将左、右方括号放在下一层方括号内 ([[ ]]),才能同时搜索一对左、右方括号 ([ ]),否则 Microsoft Access 会将这种组合作为零长度字符串 (零长度字符串:不含字符的字符串。可以使用零长度字符串来表明您知道该字段没有值。输入零长度字符串的方法是键入两个彼此之间没有空格的双引号 (" ")。)处理。
更多追问追答
追问
我是在VB6.0中用语句创建的
.Execute ("Create Table 工艺_Tab([编号] Text(11))")
.Execute ("ALTER TABLE 工艺_Tab add COLUMN 工艺 text(50)")
追答
ACCESS解决方法:
换 ANSI 92 规范后压缩修复数据库,重新打开。
展开全部
*MotoKey* 两头*号就就是说。你的关健词只有在查询到的内容中间时,才能匹配
sq = " select * from 工艺_Tab where 工艺 " & " like '%" & MotoKey & "%' "
注意引号号。
sq = " select * from 工艺_Tab where 工艺 " & " like '%" & MotoKey & "%' "
注意引号号。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
like后面改成这样:'%" & MotoKey & "%'试试
追问
谢谢啊,试了的,也不能查询到。在补充问题中已经说明了。
追答
Public rs As New ADODB.Recordset
Public conn As New ADODB.Connection
Private Sub Command1_Click()
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\桌面\ceshi.mdb;Persist Security Info=False"
Set rs = conn.Execute("insert into 表2(工艺) select 工艺 from 表1 where 工艺 like '" & Text1.Text & "%'")
conn.Close
End Sub
自己建了两张表,做了测试,是可以的。看看有没有帮助。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询