给位高手,帮忙看看如下问题。就是Delphi 的一个条件查询,运行时总提示“A”列名无效,怎么个情况???With ADOQuery1 do
   begin
   Close;
   SQL.Clear;
   SQL.Add(' Select * From 客房信息表');
   SQL.Add(' Where 配置 = A');   Open;
    end;若写成:SQL.Add(' Where 配置:= A'); 则提示“配置:”附近语法错误求高手们帮看看,感谢~~~~~~~~
另外,请教一下,add()里面时常遇到引号的问题,能否告知这个引号怎么用呢
e.g:SQL.Add(' Where 配置= '''+edit1.text+''''); 这引号有什么意义?

解决方案 »

  1.   

    这么写试试:With ADOQuery1 do
    begin
      Close;
      SQL.Clear;
      SQL.Add(' Select * From 客房信息表 where 配置 = :para1');
      Parameters.ParamByName('para1').Value := 'A';
      open;
    end;
      

  2.   

    补充下SQL.Add(' Where 配置 = ''A''');
      

  3.   

    字符类型的字段,要用引号包括起来,整型可不用如:t(A varchar(20),B Int)
    -------------------------A是字符类型,B是整型,正确的写法是这样:
    select * from t where A='张三' and B=100下面这样也是对的,SQL会自动转换
    select * from t where A=10 and B='100'但不能是下面这样:A和B条件都是错的;张三会当成字段名处理(此字段不存在),而李四则不能转换成整型
    select * from t where A=张三 and B='李四'
      

  4.   

    1.用转义符,单引号之前再加一个单引号
    2.用 QuotedStr函数,返回带引号的字符
    3.用Parameters.ParamByName传参(据说这种方式在Oracle中效率最高),但据我遇到的,在group  by语句中无法使用此方式,至今未解决,查了很多资料,都说是ADO的问题。
      

  5.   

    程序中使用引号可以用ASCII码,引号好像是#39,