由于公司安排,现在开始要用delphi做三层,可是我一点都不懂
哪位高手指点一下,谢谢了
贴出来或者发到我的信箱里面都可以

解决方案 »

  1.   

    我已经看了,可惜有些地方不太明白
    比如如何在客户端取出服务器端data module中的数据?也就是通过data providor的什么属性关联的?还有就是data module是不是必须的啊?还有……  好多啊
    我可能问的问题很幼稚,别笑话我哦
      

  2.   

    服务器:
    //工程文件
    program emy;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      emy_TLB in 'emy_TLB.pas',
      Unit2 in 'Unit2.pas' {dbserver: TRemoteDataModule} {dbserver: CoClass};{$R *.TLB}{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
    //实现部分
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DBTables, DB, StdCtrls;type
      TForm1 = class(TForm)
        Database1: TDatabase;
        Query1: TQuery;
        mytable: TTable;
        Label1: TLabel;
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}end.
    unit Unit2;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
      Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
      DBClient, emy_TLB, StdVcl, DB, DBTables, Provider;type
      Tdbserver = class(TRemoteDataModule, Idbserver)
        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 Tdbserver.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, Tdbserver,
        Class_dbserver, ciMultiInstance, tmApartment);
    end.
      

  3.   

    客户端部分:
    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Project1_TLB in 'Project1_TLB.pas',
      Unit2 in 'Unit2.pas' {my: TRemoteDataModule} {my: CoClass};{$R *.TLB}{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, DBCtrls, DB, DBClient, MConnect, Grids, DBGrids;type
      TForm1 = class(TForm)
        DBGrid1: TDBGrid;
        ClientDataSet1: TClientDataSet;
        DBNavigator1: TDBNavigator;
        DataSource1: TDataSource;
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}end.unit Unit2;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
      Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
      DBClient, Project1_TLB, StdVcl, DB, MConnect;type
      Tmy = class(TRemoteDataModule, Imy)
        DCOMConnection1: TDCOMConnection;
      private
        { Private declarations }
      protected
        class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
      public
        { Public declarations }
      end;implementation{$R *.DFM}class procedure Tmy.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, Tmy,
        Class_my, ciMultiInstance, tmApartment);
    end.实现TDBGRID,TDBNavigator功能,其实与你所要实现的功能的原理是一样的!
    MAILTO:[email protected]
      

  4.   

    type
      Tdbserver = class(TRemoteDataModule, Idbserver)

    TDataModule1 = class(TDataModule)
    有什么区别,我的怎么是上面的??
      

  5.   

    C:\Program Files\Borland\Delphi6\Demos\Midas也就是你DELPHI安装目录下的Demos\Midas有很多MIDAS的例子。你可以先研究研究。哪些例子都很简单,但很实用。