有个很简单的问题,邪了门了,我在代码里面,把sql语句,拷出来:
SELECT DetailList.[Id_Detail], DetailList.[NoteTime], DetailList.[ListNumber], DetailList.[OutMoney], DetailList.[BackupMoney], DetailList.[InMoney],Persons.Name, DetailList.[PersonId] , DetailList.[Remark] FROM DetailList left join Persons on Persons.Id_P=DetailList.PersonId where 1=1 and NoteTime > #2013/3/12 00:00:00# and NoteTime < #2013/3/12 23:59:59# and Remark like '*测*';
放到Access的查询分析器里面,没问题啊,能出来结果,但是程序里面,没有结果。百思不得其解。于是百度了一下“access 模糊查询”。微软这也太2了。不过access 本来就比较2.这哥们儿,破问题还调试了一个通宵,伤不起啊。我也自己琢磨了很久。
于是我就把代码给改了,就好了
// sql += " and Remark like '*" + Remark + "*'";
sql += " and Remark like '%" + Remark + "%'";
看到结果了:
_bstr_t sql="select * from ZDYBAB where 医疗机构等级 like '三甲'"; m_pRecordset.CreateInstance(__uuidof(Recordset)); m_pRecordset->Open(sql, m_pConnection.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText); 这样查询是正常的,但是把三甲改为*(星号)以后,运行程序无法查到数据。 接下来又直接打开access,顶端title显示的是access2000格式。然后在access中直接执行select * from ZDYBAB where 医疗机构等级 like '*'。可以查到正常的数据。程序的问题到底出在哪里呢?调试了一整个通宵了。
这里涉及到一个问题,对于access,在数据库当中建立模糊查询时,这时用到的通配符号是“*”,而如果在VB中使用查询语句进行模糊查询时,这时就要用“%” 所以都会才会出现你上面的情况,你试着将*换成%看怎么样