请教一个access数据库纪录检索的sql语句

来源:百度知道 编辑:UC知道 时间:2024/06/04 01:53:10
我有个村庄地名表,名为3Village,下面有village_code(主键)、village两个字段,分别存储地名编号和地名,另有些其他字段。village_code由市县代码加村附加码组成,如北京市代码为100,则北京市内的地名纪录为10001,10002等等。我现在获得了市县的编码,通过对话框获得村庄名称,要从表里检索匹配的纪录,代码如下:

sql = "select * from 3Village where village_code like '" & cc & "*' and village = '" & Combo44.Value & "'"
Set db = CurrentDb
Set rs2 = db.OpenRecordset(sql, 2)
aa = rs2.RecordCount

问题是在一个运行状态中假设cc=100,Combo44.Value=李家村,检索结果乱得很,和3Village这个表的索引设置关系很大:
1、如果village_code设了索引,village没有索引,则不管sql语句中“and village = '" & Combo44.Value & "'”所做的限制,检索出全部的village_code以100开头的纪录;
2、如果两个都有索引,则不管“village_code like '" & cc & "*'”,级不管这个李家村是北京的还是山东的,把表中名字为“李家村”的全部检索出来。
3、如果两个都没有索引,则不管北京有多少个李家村,都只能检索出北京的第一个李家村。

我是初学者,看了两天不知道问题出在哪里,快要崩溃了。是sql语句的错误还是检索方式不对啊?高手快帮忙啊!
用的是access数据库,直接在access的窗体里操作的。

多谢vrhero的回答。似乎在access里表示任意字符的通配符是“*”,我用“%”试了一下,就检索不出任何结果了。

确实有关系的啊,我只改变数据表

sql = "select * from 3Village where village_code like '" & cc & "%' and village = '" & Combo44.Value & "'"

补充:
是 *,我搞错了。但这个语句应该和索引没有关系才对,索引只是加快查询速度不会影响查询结果的
我刚才用Access 2003建了个样例测试了一下,不存在你说的问题啊,不管两列有没有索引结果都是正确的