procedure TForm1.ComboBox5Select(Sender: TObject);
var
sel:string;
begin
sel := 'Select * from 采购订单 where 订单号 = ';
adoquery1.active:=false;
adoquery1.Close;
adoquery1.sql.Clear;
adoquery1.sql.add(sel+ combobox5.text);
adoquery1.active:=true;
adoquery1.open;
end;1.在下拉框里不管选了什么选项都会出错。比如选的是P001就显示“参数P001没有默认值”。
2.adoquery1.Close;和adoquery1.active:=false;两句的效果是一样的吗?顺序有什么讲究?
3.adoquery1.active:=true;和adoquery1.open;两句的效果也是一样吗?顺序有什么讲究?
谢谢!

解决方案 »

  1.   

    procedure TForm1.ComboBox5Select(Sender: TObject);
    begin
    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.add('Select * from 采购订单 where 订单号 = '''+combobox5.text+'''');
    adoquery1.open;
    end;
      

  2.   

    procedure TForm1.ComboBox5Select(Sender: TObject);
    var
    sel:string;
    begin
    sel := 'Select * from 采购订单 where 订单号 = ';
    //adoquery1.active:=false;  
    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.add(sel+ QuotedStr(combobox5.text));
    adoquery1.active:=true;
    adoquery1.open;
    end;
      

  3.   

    var
    sel:string;
    begin
    sel := 'Select * from 采购订单 where 订单号 = ';
    adoquery1.active:=false;
    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.add(sel+''''+ combobox5.text+'''');
    adoquery1.prepared;
    adoquery1.open;
    end;
      

  4.   

    1,
    adoquery1.sql.add('Select * from 采购订单 where 订单号 = :sContent');
    adoquery1.ParamByName('sContent').Value:=combobox5.text;
      

  5.   

    这样会更好:
    procedure TForm1.ComboBox5Select(Sender: TObject);
    var
      sel:string;
    begin
    sel := 'Select * from 采购订单 where 订单号 = ';
    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.add(sel+ QuotedStr(combobox5.text));
    adoquery1.open;
    end;
      

  6.   

    procedure TForm1.ComboBox5Select(Sender: TObject);
    var
    sel:string;
    begin
    sel := 'Select * from 采购订单 where 订单号 = '''+Combobox5.text+'''';订单号是字符
    //'Select * from 采购订单 where 订单号 = 'p001'
    //你输出的字串为'Select * from 采购订单 where 订单号 = p001
    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.add(sel);
    adoquery1.open;
    end;2)
    procedure TForm1.ComboBox5Select(Sender: TObject);
    var
    sel:string;
    begin
    sel := 'Select * from 采购订单 where 订单号 = '+Chr(39)+Combobox5.text+Chr(39);订单号是字符
    //'Select * from 采购订单 where 订单号 = 'p001'
    //你输出的字串为'Select * from 采购订单 where 订单号 = p001
    adoquery1.active:=false;
    adoquery1.sql.text :=sel;
    adoquery1.active := True;
    end;
    3)adoquery1.active 比adoquery1.close 快一些,但可以忽略不计。
      

  7.   

    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.sql.add('select * from 采购订单 where 订单号='''+ combobox5.text+'''');
    adoquery1.active:=true;
    adoquery1.open;注意active=false和close是一样的,所以前面不用写adoquery1.active=false;
      

  8.   

    1:adoquery1.sql.add(sel+ #39+combobox5.text+#39);
    2:效果是一样地
    3:效果是一样的!!