var
 s1:string;
begin
  s1:='SELECT Count(*) from xskhml where khname="ASDFKSAKF"';
  ADOQry.Close;
  ADOQry.SQL.Clear;
  ADOQry.SQL.Add(s1);
  ADOQry.open;
.....
end;
为什么运行时,老是报错:列名"ASDFKSAKF"无效。真拿它没办法,小弟很菜,各位前辈,请教了

解决方案 »

  1.   

    var
     s1:string;
    begin
      s1:='SELECT Count(*) from xskhml where khname="ASDFKSAKF"';
      ADOQry.Close;
      ADOQry.SQL.Clear;
      ADOQry.SQL.Add(s1);
      ADOQry.open;
    .....
    end;----------------------------------------------------------------------
    错误在:s1:='SELECT Count(*) from xskhml where khname="ASDFKSAKF"';
                                                          ^         ^
    看明白了吗?应该是s1:='SELECT Count(*) from xskhml where khname=''ASDFKSAKF''';
    不是“而是两个‘试试吧!
      

  2.   

    错误在:s1:='SELECT Count(*) from xskhml where khname="ASDFKSAKF"';
                                                         ^         ^
    看明白了吗?应该是s1:='SELECT Count(*) from xskhml where khname=''ASDFKSAKF''';
    不是“"” 而是两个“'”试试吧!
      

  3.   

    很有可能,有些数据库中由于设置或自身原因,不允许使用双引号做为字符串的定界符,可以换用单引号来试试。由于单引号是Pascal的定界符,所以你要想用单引号,得写两个单引号才行。两个单引号表示一单引号字符,相当于C/C++的转义字符。
      

  4.   

    procedure TForm1.Button1Click(Sender: TObject);
    var s1:string;
    begin
      s1:='SELECT Count(*) from xskhml where khname='''+'ASDFKSAKF'+'''';
      with ADOQry do
        begin
          close;
          sql.Clear;
          sql.Add(s1);
          open;
        end;
    end;
      

  5.   

    s1:='SELECT Count(*) from xskhml where khname='''+'ASDFKSAKF'+'''';
    记得要正确书写,全是'号,还有个数,不能少,要批配
      

  6.   


    s1:='SELECT Count(*) from xskhml where khname='''ASDFKSAKF'''';
      

  7.   

    这样可能清楚一点
    s1 := 'SELECT Count(*) from xskhml where khname=' + QuotedStr('ASDFKSAKF');
      

  8.   

    s1:='SELECT Count(*) from xskhml where khname='''+ASDFKSAKF+'''';
      

  9.   

    用Access可能就是如楼主的那样用""!
    用SQL就要用'!
      

  10.   

    同意楼上的,acess 和sql 在delphi中写法不太一样,在acess中可以调试
      

  11.   

    觉得这样写比较清楚,可以省去引号的麻烦
    with ADOQry do
    begin
       close;
       sql.clear;
       sql.text:='select coutn(*) from xskhml where khname=:s1';
       parameters.ParamByName('s1').Value:= "ASDFKSAKF";
       execsql;
       Open;
       ...
    end;
      

  12.   

    最好的办法是先不要ADOQry.open;
    把你写的Sql语句showmessage出来
    再放在查询分析器去run
    这对你以后写Sql会有好处
      

  13.   

    同意楼上,
    类似问题
    其一:查询分析器
    其二:showmessage()
    其三:没有双引号,只有单号
      

  14.   

    补充一点:
      用Access也可以用'!
      

  15.   

    s1:='SELECT Count(*) from xskhml where khname='+#39+'ASDFKSAKF'+#39;
      

  16.   

    parameters.ParamByName('s1').Value:= "ASDFKSAKF";//抱歉,这儿写错了,是单引号
      

  17.   

    s1:='SELECT Count(*) from xskhml where khname="ASDFKSAKF"';
    如果条件是常量改为:
    s1:='SELECT Count(*) from xskhml where khname=''ASDFKSAKF''';如果条件是变量改为:
    s1:='SELECT Count(*) from xskhml where khname='''+ASDFKSAKF+'''';