我用dbExpress中的SimpleDataSet组件,其中的dataset中的commandtext为‘select * from hyjbxx where gkxm like :m_gkxm’其中参数:m_gkxm为ftString类型,并且定义初试值为%.按理说这个Dataset初始应该是全部记录都显示出来,可是初始的时候一条记录也没有,当在程序中改变这个参数的值时一切正常,如'%王%','%张%'等都能查询出来,模糊查找正确,一旦此参数为%或者为%%,就没有记录了,这是怎么回事?

解决方案 »

  1.   

    select * from hyjbxx where gkxm like :m_gkxm’
    parameteres.parambyname(m_gkxm).value:='%';
    没有问题的呀 就是显示所有的结果的呀
      

  2.   

    select * from hyjbxx where gkxm like :m_gkxm’
    parameteres.parambyname(m_gkxm).value:='%'+Edit1.text+'%';
      

  3.   

    忘了声明了,偶用的数据库是MSSQLServer,估计这个也不会影响结果啊
      

  4.   

    不会,我也用MSSQLSERVER,没有问题的,你在OPEN数据库的时候Debug一下,Show一个Message,看看它的SQL语句是什么?
      

  5.   

    偶发现,如果这个m_gkxm:='%%%%'
    那么姓名是2个字的记录就出来了,如果:='%%%%%%'
    那么姓名是3个字的记录就出来了,
    看来%这个通配符的意义在sql中成了'_'不解ing请问楼上大侠,如何debug,看sql的语句?
      

  6.   

    我认为一个%,两个%,n个%是一样的,为什么出现这样也是深思不解,
    你在查询分析器里试试,select * from hyjbxx where gkxm like '%'
    --------------------------------------------------------------------
    看尽悲伤,庸人自扰不平事。叹尽荒凉,海阔天空谁人知。狂风劲兮,百花飘
    扬乱舞香。捏花一笑,海不扬波断肠心!
      

  7.   

    会不会是因为参数需要初始化,以前用adoquery的params时最好也是要先初始化。
    你不妨试试:
    sqldataset1.Params[0].DataType:=string;
    sqldataset1.Params[0].Value:='1'
      

  8.   

    to tiexinliu(铁心刘):在查询分析器里当然可以了,'%'匹配的是所有记录to  gooddanlin2(赶路):参数已经初始化了,在设置DATASET的属性的时候就把参数的初始值设定为  ftString '%'
    仍然不得其解