procedure TForm1.Button1Click(Sender: TObject);
var
  temp1,temp2,temp3:string;
begin
   adoquery1.Close;
   adoquery1.SQL.Clear;
   
   adoquery1.SQL.Add('select * from 计算机 where');
   
   adoquery1.SQL.Add('zhuji=:temp1');//1
   adoquery1.Parameters.ParamByName('temp1').Value:=edit1.text;
   
   adoquery1.SQL.Add('and zhuopin=:temp3');//2
   adoquery1.Parameters.ParamByName('temp3').Value:=edit3.text;
   
   adoquery1.SQL.Add('and xianshiqi=:temp2');//3
   adoquery1.Parameters.ParamByName('temp2').Value:=edit2.text;
   
   adoquery1.Open;
end;
   有三个参数,语法有问题吗?一运行报错:
   [Microsoft][ODBC Microsoft Accecc Driver]参数不足,期待是4。
   但我把三个参数去掉一个,就可以执行!
   why?why?why?

解决方案 »

  1.   

    adoquery1.SQL.Add('zhuji=:temp1');//1   
       adoquery1.SQL.Add('and zhuopin=:temp3');//2   
       adoquery1.SQL.Add('and xianshiqi=:temp2');//3
       adoquery1.Parameters.ParamByName('temp1').Value:=edit1.text;
       adoquery1.Parameters.ParamByName('temp2').Value:=edit2.text;
       adoquery1.Parameters.ParamByName('temp3').Value:=edit3.text;我习惯这样写~~~~~
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      temp1,temp2,temp3:string;
    begin
       adoquery1.Close;
       adoquery1.SQL.Clear;
       
       adoquery1.SQL.Add('select * from 计算机 where');
       
       adoquery1.SQL.Add(' zhuji=:temp1');//1 前面加了空格
       adoquery1.SQL.Add(' and zhuopin=:temp3');//2
       adoquery1.SQL.Add(' and xianshiqi=:temp2');//3   adoquery1.Parameters.ParamByName('temp1').Value:=edit1.text;
       adoquery1.Parameters.ParamByName('temp3').Value:=edit3.text;
       adoquery1.Parameters.ParamByName('temp2').Value:=edit2.text;
       
       adoquery1.Open;
    end;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     with adoquery1 do
      begin 
       Close;
       SQL.Clear;
       
       SQL.Add('select * from 计算机 where ');
       
       SQL.Add(' zhuji=:temp1 ');//1 前面加了空格
       SQL.Add(' and zhuopin=:temp3 ');//2
       SQL.Add(' and xianshiqi=:temp2 ');//3   Parameters.ParamByName('temp1').Value:=edit1.text;
       Parameters.ParamByName('temp3').Value:=edit3.text;
       Parameters.ParamByName('temp2').Value:=edit2.text;
       
       Open;
      end;
    end;
    而且在DELPHI的 SQL 中所用的参数不用初始定义的!所以去掉了TEMP1,2,3的定义
      

  4.   

    同意zgheng(光头),参数是不需要定义的