ACCESS数据库Locate或Lookup问题,发现只要是中文Locate不出来。我唯一能确定的就是ACCESS文本类型字段在clientdataset下是widestring类型,可是又没办法解决。
filter也一样问题。
searchCds1.Filtered:=false; 
searchCds1.Filter:='考试成绩=''通过'''; 
searchCds1.Filtered:=true; 
数据库ACCESS,很奇怪过滤不了,过滤完数据为空,如果数据库是SQL SERVER没问题,请各位高手帮忙,在下感激不尽,谢谢

解决方案 »

  1.   

    直接sql吧,别filter了,filter功能有限
      

  2.   

    这类标识性的字段用数字型或bool型
      

  3.   

    数据库的设计就存在问题,这种字段为什么要用中文保存?
    用bool或者int不好吗?
    再说了,用sql语句多方便啊,为什么一定要用filter,虽然这种研究的精神不错,但没必要为这种问题浪费时间。
      

  4.   

      with self.ClientDataSet1 do
      begin
        Close;
        FieldDefs.Clear;
        FieldDefs.Add('颜色',ftString,10);//将ftWideString替换成ftString
        CreateDataSet;
        AppendRecord(['黑']);
        AppendRecord(['黑']);
        AppendRecord(['黑红']);
      end;
      self.ClientDataSet1.Filtered:= false;
      self.ClientDataSet1.Filter:='颜色=''黑''';
      self.ClientDataSet1.Filtered:= true;
      

  5.   

    各位大哥,首先,我先申明一下出错不是字段名称出错,而是内容出错,所以与用中文没关系;其次,用filter可以突出效率,只要用access不可避免内容有中文又要用到filter,所以还是需要解决方案。感谢六楼的回答,不知道有没有更好的办法?
      

  6.   

    最好不要用中文作标识列,诸如双字节宽字符等问题和具体数据库有关,移植很麻烦
    这里就是因为Access字段默认是宽字节,而Filter属性接受的是单字节字符串
    除非像“hongqi162”那样用代码来将字段强制设成单字节
      

  7.   

    其实你直接写SQL用where子句过滤,效率上影响会很大吗?