你要注意空格,比喻:
sql1:='select'+ form1.ADOQuery1.Fields.Fields[i].FieldName+','
应该:
sql1:='select '+form1.ADOQuery1.Fields.Fields[i].FieldName+','

解决方案 »

  1.   

    单步执行一下,看看 sql1值的变化过程
      

  2.   

    调试的时候加一个Edit框,把SQL语句输到里面去。这样你就可以知道你的SQL到底是哪里出错了
      

  3.   

    记数变量j有用吗?
    应该这样:
    procedure TForm1.FormCreate(Sender: TObject);
    var
      i:integer;
      sql1:string;
    begin
      if form1.CheckListBox1.selCount=0 then
      begin
        showmessage('请选择要显示的字段');
        exit;
      end;
      sql1:='select ';
      for i:=0 to form1.CheckListBox1.Items.Count-1 do
      begin
        if form1.CheckListBox1.Selected[i]then
          sql1:=sql1+' form1.ADOQuery1.Fields.Fields[i].FieldName+',';
      end;
      delete(sql1,length(sql1)-1,1);
      with form1.ADOQuery1 do
      begin
        sql.Add(quotedstr(trim(sql1)));
        sql.Add('from jgk');
        open;
      end;
    end;
      

  4.   

    你不如用一条showmessage(sql2)来看看到底是哪儿有错
      

  5.   

    TO 永恒的心
    还不可以呀,出现了 这样的错误,project project1.exe raised exception class eoleException with message'[microsoft][odbc sql driver ][sql server] 第2行''附近 有错误。‘
      

  6.   

    添加sql语句之前,不需要close和clear吗?
      

  7.   

    你不说出错误信息!很难回答的,但是据我的经验你最好在用sql语句注意引号的运用!