请教VB adodc连接 access 里模糊查询的写法问题
Table里有一个字段电话通知,一般有已通知、未通知两种数据。在access里select*fromTablewhere1=1and电话通知like'%通知%'无数据se...
Table 里有一个字段 电话通知,一般有已通知、未通知两种数据。
在access里
select * from Table where 1=1 and 电话通知 like '%通知%' 无数据
select * from Table where 1=1 and 电话通知 like '*通知*' 正确得到数据
在vb里
select * from Table where 1=1 and 电话通知 like '%已通知%' 有数据正确
select * from Table where 1=1 and 电话通知 like '*已通知*' 无数据
select * from Table where 1=1 and 电话通知 like '%通知%' 有数据不正确
select * from Table where 1=1 and 电话通知 like '*通知*' 无数据
通过单步调试对照了很多遍,我的确把上述四种方式的string都非常正确的给 rs.open了,但是rs.recordcount就是不对,这究竟是为什么呢?究竟是*还是%还是别的什么?现在%也不对,*也不对,想破头了。
在vb 里
select * from Table where 1=1 and 电话通知 like '%通知%' 无数据
select * from Table where 1=1 and 电话通知 like '*通知*' 无数据
倒数第二条的描述有误,不是有数据不正确, 是无数据 展开
在access里
select * from Table where 1=1 and 电话通知 like '%通知%' 无数据
select * from Table where 1=1 and 电话通知 like '*通知*' 正确得到数据
在vb里
select * from Table where 1=1 and 电话通知 like '%已通知%' 有数据正确
select * from Table where 1=1 and 电话通知 like '*已通知*' 无数据
select * from Table where 1=1 and 电话通知 like '%通知%' 有数据不正确
select * from Table where 1=1 and 电话通知 like '*通知*' 无数据
通过单步调试对照了很多遍,我的确把上述四种方式的string都非常正确的给 rs.open了,但是rs.recordcount就是不对,这究竟是为什么呢?究竟是*还是%还是别的什么?现在%也不对,*也不对,想破头了。
在vb 里
select * from Table where 1=1 and 电话通知 like '%通知%' 无数据
select * from Table where 1=1 and 电话通知 like '*通知*' 无数据
倒数第二条的描述有误,不是有数据不正确, 是无数据 展开
3个回答
展开全部
你这是连接用 SQL 语句的问题
在 vb 中通配符就是 %
在 access 中通配符是 *
注意这个区别,就可以了。你有点钻牛角尖,是不是?
哈,你的问题其实简单点说就是 因为 ‘未通知’ 里面包含 '通知'
因此,like %通知% 也包含 未通知,因为 通知包含在 未通知这个字符串里面
使用 = 的写法是(vb) :
select * from Table where 电话通知 = '已通知'
select * from Table where 电话通知 = '未通知'
不明白为什么你前面还加上 1=1
在 vb 中通配符就是 %
在 access 中通配符是 *
注意这个区别,就可以了。你有点钻牛角尖,是不是?
哈,你的问题其实简单点说就是 因为 ‘未通知’ 里面包含 '通知'
因此,like %通知% 也包含 未通知,因为 通知包含在 未通知这个字符串里面
使用 = 的写法是(vb) :
select * from Table where 电话通知 = '已通知'
select * from Table where 电话通知 = '未通知'
不明白为什么你前面还加上 1=1
更多追问追答
追问
其实我就是要 查询 通知 时 未通知 和已通知都出来。我说的有数据但不正确,表达有误,其实我用 通知作为查询条件时,两种写法 都没有记录。至于1=1,编程方便,不用判断是不是where后第一个条件,直接 and 上去就可以了。没有容易变成 where and造成错误
我用的也是%了,但现在很悲剧,我发现它%一定要有字符在前或者后,意思就是 %已通知%,%未通知%,%已通%,%未通%,%通知%,都没有结果,只有 %通% 有结果,怎么会这样。在补充一下,上面%改成%%也是一样的结果
展开全部
adodc like 中用*应该是不对的,*是ACCESS的内部写法。相当于ACCESS中SQL语句的特殊写法。
把你用于测试的语句修改成
select count(*) as F1 from Table where 1=1 and .....
rs.movefirst
msgbox rs.fileds("F1")
看看结果条数判断那条语句是正确的
把你用于测试的语句修改成
select count(*) as F1 from Table where 1=1 and .....
rs.movefirst
msgbox rs.fileds("F1")
看看结果条数判断那条语句是正确的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
既然知道是通知和末通知两种那就直接用 = 别用 like了。。如:
select * from Table where 1=1 and 电话通知 = '通知'
select * from Table where 1=1 and 电话通知 = '通知'
更多追问追答
追问
首先,我写着是 一般是这两种,不代表就是这两种。其次,难道以后like不能用了吗?
追答
用= 会比较准确,如你的这句:select * from Table where 1=1 and 电话通知 like '%通知%' 得到的结果中会是 通知 和末通知 两种状态的全出来了。。所以我建议你用 = 查询
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询