procedure Tfrm_customersortnew.adoquery1sql(var querysql: string;
  var sqlnum: integer);
begin
frm_customersort.adoquery1.close;
frm_customersort.adoquery1.sql.clear;
frm_customersort.adoquery1.sql.text:=querysql;
  case sqlnum of
    begin
       1,3,5:
      frm_customersort.adoquery1.execsql;
       2,4,6:
      frm_customersort.adoquery1sql.Open;
     end;
end;
 
以下是调用时的写法 
self.adoquery1sql(text1,1);
报错,不知道什么原因,text1我也声明过了

解决方案 »

  1.   

    你在 frm_customersortnew (类)窗体中直接操作  frm_customersort (类)窗体中的控件,这样做不太好吧?0.Case 语句错误.1.不知你 frm_customersort 创建了没有。2.text1 内的SQL语句是否正确.
    你的代码风格有点问题,是起码也应写成这样.procedure Tfrm_customersortnew.adoquery1sql(Const querysql:string;sqlnum:integer);
    begin
      With frm_customersort.adoquery1 do
        begin
          close;
          sql.text:=querysql;      case sqlnum of
            1,3,5:execsql;
            2,4,6:Open;
          end;
        end;  
    end;--------------------------
    建议你的操作方法.写一专门用来操作数据库的类.
      

  2.   

    procedure Tfrm_customersortnew.adoquery1sql(var querysql: string;
      var sqlnum: integer);
    写成 procedure Tfrm_customersortnew.adoquery1sql(querysql: string;
     sqlnum: integer);
      

  3.   

    procedure Tfrm_customersortnew.adoquery1sql(var querysql: string;
      sqlnum: integer);//声明过程时去掉sqlnum前的var否则使用变量来代替sqlnum 如
    var
      i :integer;
    begin
      i := 1;
      adoquery1sql(text1, i);