data.adoDataSet.CommandText:=format('Select * from 油漆 where 编号= ''%s''',['Q?A']);这样却找不到记录,但,在access中使用sql查询:select * from 油漆 where 编号='Q?A'却能够找到
怎么回事?

解决方案 »

  1.   

    你试一下:
      showmessage(string(ADOCommand1.CommandText));
    看跟你在access中使用sql查询的语句有什么区别?
      

  2.   

    data.adoDataSet.CommandText:=format('Select * from 油漆 where 编号= ’'Q?A‘‘‘);
      

  3.   

    你这样试试:
    data.adoDataSet.CommandText:=format('Select * from 油漆 where 编号= %s',['Q?A']);
      

  4.   

    你这样试试:
    data.adoDataSet.CommandText:=format('Select * from 油漆 where 编号= %s',['Q?A']);
      

  5.   

    data.adoDataSet.CommandText:=format('Select * from 油漆 where 编号= %s',[QuotedStr('Q?A')]);
    试试
      

  6.   

    data.adoDataSet.CommandText:=format('Select * from 油漆 where 编号= %s',[QuotedStr('Q?A')]);
    试试
      

  7.   

    commandText的值与access内的查询sql语句一样,没任何差别,但,access内的查询sql工具就可以查到,我的却不行,没道理啊
    我觉得可能是它没认出通配符,是否通配符需要其他的作为标记啊?
      

  8.   

    我的sql语句和access中得一摸一样,但access中可以找到记录,在程序中就不行
    是不是通配符需要其他来标示?
      

  9.   

    那应该就是引号的问题了,在delphi里面 像 'aa'这样的表达式应该要写成:''''+'aa'+''''
      

  10.   

    各位,自己搞定了,原来access项目和access数据库使用的通配符不一样得,应该使用_
      

  11.   

    data.adoDataSet.CommandText:=format('Select * from 油漆 where 编号=  %s',['Q?A']);data.adoDataSet.CommandText:=format('Select * from 油漆 where 编号=  %s',[edit1.text]);data.adoDataSet.CommandText:=format('Select * from 油漆 where 数量=  %d',[strtoint(edit1.text)]);
    data.adoDataSet.CommandText:='Select * from 油漆 where 编号= ''Q?A''';
      

  12.   

    data.adoDataSet.CommandText:=format('Select * from 油漆 where 编号=  %s',['Q?A']);data.adoDataSet.CommandText:=format('Select * from 油漆 where 编号=  %s',[edit1.text]);data.adoDataSet.CommandText:=format('Select * from 油漆 where 数量=  %d',[strtoint(edit1.text)]);
    data.adoDataSet.CommandText:='Select * from 油漆 where 编号= ''Q?A''';
      

  13.   

    Access里SQL中的通配符跟其他地方不太一样,%的通配符应该用*代替。