我在服务器端新建了一个remotedatamodule,和一个objclass的单元文件,objclass单元文件中有这么一句话:
  remotedatamodule.ADOQuery1.Close;
  ....
编译时在这一行出错,[Error] UntObj.pas(41): Undeclared identifier: 'remotedatamodule'
请问我该怎么做,才能在其他单元文件中使用remotedatamodule中的控件啊??
如果不能用,那么我该怎么做

解决方案 »

  1.   

    use remotedatamodule所在的单元。
      

  2.   

    我已经use过了,
    可是不行,提示的错误一样。
      

  3.   

    我把源文件copy出来,帮忙看看
    #############untmyremoteserver#########################
    unit UntMyRemoteServer;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
      Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
      DBClient, ProServer_TLB, StdVcl, Provider, DB, ADODB;type
      TmyRemoteServer = class(TRemoteDataModule, ImyRemoteServer)
        ADOConnection1: TADOConnection;
        ADOQuery1: TADOQuery;
        DataSetProvider1: TDataSetProvider;
      private
        { Private declarations }
      protected
        class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
      public
        { Public declarations }
      end;implementation{$R *.DFM}class procedure TmyRemoteServer.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
    begin
      if Register then
      begin
        inherited UpdateRegistry(Register, ClassID, ProgID);
        EnableSocketTransport(ClassID);
        EnableWebTransport(ClassID);
      end else
      begin
        DisableSocketTransport(ClassID);
        DisableWebTransport(ClassID);
        inherited UpdateRegistry(Register, ClassID, ProgID);
      end;
    end;
    initialization
      TComponentFactory.Create(ComServer, TmyRemoteServer,
        Class_myRemoteServer, ciMultiInstance, tmApartment);end.
    ###############unit objclass#################
    {###################################################
    类的声明
    ###################################################
    }
    unit UntObj;interface  Type TPerson = class(Tobject)
      private
        { Private declarations }
      public
        name : string[25];
        sex : string[4];
        { Public declarations }
      end;  type TUser = class(TPerson)
      private
        { Private declarations }
      public
        user_id : string[20];
        bumen : string[20];
        //根据user_id从数据库取得用户信息
        procedure createUserFromId(user_id : string);
        procedure insertToDB(str: string);
        //将user信息插入表中,str格式:'user_id',user_id_value,'name',name_value
       { Public declarations }
      end;implementationuses UntMyRemoteServer;
    procedure Tuser.createUserFromId(user_id: string);
      var
        str : string;
      begin
        str:='select * from user_db where user_id='''+user_id+'''';
        //datamodule1.
        //remoteServer:=Tremoteserver.Create();
        myRemoteServer.ADOQuery1.Close;
        datamodule1.ADOQuery1.SQL.Clear;
        datamodule1.ADOQuery1.SQL.Add(str);
        datamodule1.ADOQuery1.Open;
        self.user_id:=datamodule1.ADOQuery1.FieldValues['user_id'];
        self.bumen:=datamodule1.ADOQuery1.FieldValues['bumen'];
        self.name:=datamodule1.ADOQuery1.FieldValues['name'];
        self.sex:=datamodule1.ADOQuery1.FieldValues['sex'];
      end;
    procedure Tuser.insertToDB(str : string);
      var
        str : string;
      begin
        str:='insert into user_db (';
        str:=str+' where user_id='''+user_id+'''';
        //datamodule1.
        //remoteServer:=Tremoteserver.Create();
        datamodule1.ADOQuery1.Close;
        datamodule1.ADOQuery1.SQL.Clear;
        datamodule1.ADOQuery1.SQL.Add(str);
        datamodule1.ADOQuery1.Open;
        self.user_id:=datamodule1.ADOQuery1.FieldValues['user_id'];
        self.bumen:=datamodule1.ADOQuery1.FieldValues['bumen'];
        self.name:=datamodule1.ADOQuery1.FieldValues['name'];
        self.sex:=datamodule1.ADOQuery1.FieldValues['sex'];
      end;end.
      

  4.   

    楼主没有注意到一点:
       你先新建一个带有remotedatamodule的项目,仔细看看:
       1.在form的单元中:
       var
         form1:Tform1;
       2.在remotedatamodule中没有var定义   道理很简单,服务器程序会初始化一个Tform1类的实例form1,
       但任何remotedatamodule的实例,
       都是由客户程序动态激活,而产生的.
       你在写服务器程序时,只有form1的实例可用,你如何去控制还
       没有建立的remotedatamodule呢?
       相反,你在remotedatamodule中可以引用form1.   也就是说,form1作为服务器主窗体,与他共存的是程序运行后,
       由客户程序激活的一些数据模块,但form1自己却不能直接直到有几个module~~~
      

  5.   

    del_c_sharp(摩托~◎~◎~◎) 
    我已经注意到了,可是问题是,我的tuser.createUserFromId方法需要调用里面的adoconnection啊,难道可以不调用???
    如果我想实现在别的类中调用remotedatamodule中的组件,我该怎么做呢???谢谢。
      

  6.   

    问题已经解决,好象只能在remotedatamodule中use别的单元文件,感谢各位