我在使用Query组件时想通过edit1的text值作为查询条件,我用一个Bottun来实现。代码如下:procedure TMainForm.Button1Click(Sender: TObject);
begin
Query1.SQL.Clear;
Query1.SQL.Add('select * from '''+'.\date\users'');
Query1.SQL.Add('where Name='''+(Sender as edit1).text+'''');
Query1.Active :=true;
edit2.Text :=Query1.fieldbyname('Password').AsString;
end;可是运行时从begin开始第二、三行就报错。
不知问题出在那?望高手指点。谢谢

解决方案 »

  1.   

    query1.close;
    Query1.SQL.Clear;
    Query1.SQL.Add('select * from 表名');
    Query1.SQL.Add('where Name='''edit1.text+'''');
    query1.open
      

  2.   

    Query1.SQL.Add('where Name='''+edit1.text+'''');
      

  3.   

    错误有3处
    这样写:(注意引号中的空格和引号)procedure TMainForm.Button1Click(Sender: TObject);
    begin
      Query1.Close;//Query1.Active :=False;
      Query1.SQL.Clear;
      Query1.SQL.Add('select * from '''+'.\date\users''');
      //Query1.SQL.Add('select * from ''.\date\users''');
      Query1.SQL.Add(' where Name='''+edit1.text+'''');
      Query1.Active :=True;
      edit2.Text :=Query1.FieldByName('Password').AsString;
    end;
      

  4.   

    这样的SQL语句最好使用Format函数,方便,好用,不容易出错,您的语句可改为:
    Query1.SQL.Clear;
    Query1.SQL.Add(Format('select * from %s',['.\date\users']));
    Query1.SQL.Add(Format('where Name=''%s''',[(Sender as edit1).text]));
    Query1.Active :=true;
    edit2.Text :=Query1.fieldbyname('Password').AsString;
      

  5.   

    query1.close;
    Query1.SQL.Clear;
    Query1.SQL.Add('select * from table');
    query1.open
      

  6.   

    Query1.SQL.Add('select * from path\tableName');
    Query1.SQL.Add(' where Name='''+edit1.text+'''');
    1、路径和表名要正确
    2、注意连接之间的空格
      

  7.   

    hzpengyou():
    你的方法通不过,说
    Operator not applicable to this operand typewengj()
    的通过了