本人在一表单中因多次使用下列语句:
  adoquery1.Close;
  adoquery1.SQL.clear;
  adoquery1.SQL.Add('select * from xggn where xggnfl=''ckdd''');
  adoquery1.Open;
因此编了一个过程如下:
//在程序开端声明
var
  procedure proc1();
……
procedure proc1();
begin
 adoquery1.Close;
 adoquery1.SQL.clear;
 adoquery1.SQL.Add('select * from xggn where xggnfl=''ckdd''');
 adoquery1.Open;
end;
在调用时,总是出错:Undeclared identifier: 'adoquery1'
                    '(' expected but ';' found
如果不调用,将以上语句放回原处,则没有问题。
好像程序一运行就执行proc1()过程,即在设置adoquery1数据前。

解决方案 »

  1.   

    把ADOQuery1当成参数传进去  procedure proc1(adoq:Adoquery;)
      

  2.   

    楼主:adoquery1是在窗体中的一个控件,你现在定义了一个全局静态函数,当然不能引用到这个变量了adoquery1。
    1.一个办法如上楼上所说
    2.将这个方法,移植到你的窗体中取。
      

  3.   

    声明:function proc1(adoq:TAdoquery):integer;
    方法体:function proc1(adoq:TAdoquery):integer;
            begin
              adoq.Close;
              adoq.SQL.clear;
              adoq.SQL.Add('select * from xggn where xggnfl=''ckdd''');
              adoq.Open;
              result 1;
            end
    调用:proc1(adoquery1);
      

  4.   

    传进去的adoquery1是一个对象指针,方法proc1中的adoq和窗体中的adoquery指向同一个对象
      

  5.   

    或者把这个函数写成FORM的方法
      

  6.   

    声明:function proc1(adoq:TAdoquery):integer;
    方法体:function proc1(adoq:TAdoquery):integer;
            begin
              adoq.Close;
              adoq.SQL.clear;
              adoq.SQL.Add('select * from xggn where xggnfl=''ckdd''');
              adoq.Open;
              result 1;
            end
    调用:proc1(adoquery1);
      

  7.   

    问题已解决:
    procedure proc1();  //只需将此句话改为procedure tform.proc1(); 即可。 
    begin
     adoquery1.Close;
     adoquery1.SQL.clear;
     adoquery1.SQL.Add('select * from xggn where xggnfl=''ckdd''');
     adoquery1.Open;
    end;
    现给分
      

  8.   

    在程序的
    Private或者Public中声明
    比如:
    Private
      procedure proc1();  //写完后按 Shift+Ctrl+C键,在实现部分生成函数体implementationprocedure TForm1.proc1();  //假设在Form1里
    begin
       adoquery1.Close;
       adoquery1.SQL.clear;
       adoquery1.SQL.Add('select * from xggn where xggnfl=''ckdd''');
       adoquery1.Open;
    end;如果一定要定义成全局的可以
    fucntion TForm1.proc1(Query:TAdoQuery;SqlStr):Boolean;
    begin
       Result:=false;
       if Query=nil then exit;
       with Query do
       begin
         try      
            Close;
            SQL.Text:=SqlStr;
            Open;
            Result:=true;
          except
          end;
       end;
    end;