过程应该写为procedure DataModule2.asdf();这样就可以调用QUERY1,你试试

解决方案 »

  1.   

    把 procedure asdf()写在Query1: TADOQuery;
    的后面,在把procedure asdf();改成procedure TDataModule2.asdf();
    或者procedure asdf();
    var f:string;
    begin 
       with DataModule2 do
          query1:=tadoquery.create;
          query1.Active:=true;
          query1.SQL.Clear;
          query1.SQL.Add('select * from 表1');
          query1.Active:=true;
          f:=query1.Fields[1].text;
          showmessage(f);
          Query1.Free;
       end;
    end;  
      

  2.   

    欧,不好意思,忘写begin了
    with DataModule2 do
       begin
          query1:=tadoquery.create;
          query1.Active:=true;
          query1.SQL.Clear;
          query1.SQL.Add('select * from 表1');
          query1.Active:=true;
          f:=query1.Fields[1].text;
          showmessage(f);
          Query1.Free;
      end;
      

  3.   

    xzgyb(回首往事,不堪回首):
    还是不行!!!!
    query1:=tadoquery.create这一句通不过啊,惨!
    出错信息是“NOT ENOUGH ACTUAL PARAMETERS”
    麻烦你在机子上调试通过再告诉我,我愿奉上50分!!!
      

  4.   

    欧,不好意思,我没用过ADO,我也没细看
    我试了一下,你看这样行不行
    with DataModule2 do
      begin
          query1:=tadoquery.create(DataModule2);
        try
          Query1.connectionstring :='Provider=MSDASQL.1;Persist Security  Info=False;Data Source=为你的数据源名';
          query1.SQL.Add('select * from 表1');
          query1.Active:=true;
          f:=query1.Fields[1].text;
          showmessage(f);
        finally
          Query1.Free;
        end;
     end;
      

  5.   

    老鬼同志救我!!请帮我调试调试!!连接字符串我测试过是成功的,但是运行就是不行,why?50分unit Unit2;
    interface          
    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, ADODB;       
    type
      TDataModule2 = class(TDataModule)
        Query1: TADOQuery;
        procedure asdf();
      end;             
    var
      DataModule2: TDataModule2;implementation
    procedure TDataModule2.asdf();
    var f:string;
    begin 
          query1:=tadoquery.create(DataModule2);
          query1.ConnectionString:='Provider=MSDASQL.1;Password=" ";Persist Security Info=True;User ID=sa;Data Source=英德款项';
          query1.Active:=true;
          query1.SQL.Clear;
          query1.SQL.Add('select * from 表1');
          //query1.Active:=true;
          f:=query1.Fields[0].text;
          showmessage(f);
    end;
    {$R *.DFM}end.
      

  6.   

    我说兄弟//query1.Active:=true;
    注释掉是不行的,像我那么写
    Query1.connectionstring :='Provider=MSDASQL.1;Persist Security  Info=False;Data Source=为你的数据源名';
     query1.SQL.Add('select * from 表1');
     query1.Active:=true;
     f:=query1.Fields[1].text;
      showmessage(f);
        
    不对吗,我调试过的能显示数据      
      

  7.   

    用了TDataModule 就用不着动态创建query1了
    query1 已经在TDataModule 里了unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      Db, ADODB;type
      TDataModule2 = class(TDataModule)
        Query1: TADOQuery;
        ADOConnection1: TADOConnection;
      private
          procedure asdf;
        { Private declarations }
      public
        { Public declarations }
      end;var
      DataModule2: TDataModule2;implementation{$R *.DFM}{ TDataModule2 }procedure TDataModule2.asdf;
    var
      f:string;
    begin
        query1.Active:=false;
          query1.SQL.Clear;
          query1.SQL.Add('select * from 表1');
          query1.Active:=true;
          f:=query1.Fields[1].text;
          //showmessage(f);效率差
          messagebox(0,pchar(f),'提示',mb_ok+MB_ICONINFORMATION);end;end.
      

  8.   

    你写了procedure asdf();后就按
    ctrl+shift+c
    自动创建函数说明