做了一个ADO方式的分布式多层应用小程序服务器方用的是
1:Remote Data Module
其中:远程数据模块名:adotestserver
Instancing:Multiple Instance
Threading Model:Apartment
2:TADODataSet
3:TDataSetProvider客户方用的是
1:TDCOMConnetion
2:TClientDataset
3:TDataSource
4:TDBGrid客户方程序与服务器程序连接正常(前提:在同一台PC)
将客户方程序复制到另一个PC(同一局域网可以PING通)上运行,鼠标只在短时间变成漏斗又恢复指针形,不再有反应:(请问为什么在同一台电脑上客户方与服务器方程序连接成功读取数据
而在不同电脑上就不可以实现了呢?另注:该例子来自:《Delphi 5.x ADO/MTS/COM+高级程序设计篇》李维 著先谢谢各位大师了~
1:Remote Data Module
其中:远程数据模块名:adotestserver
Instancing:Multiple Instance
Threading Model:Apartment
2:TADODataSet
3:TDataSetProvider客户方用的是
1:TDCOMConnetion
2:TClientDataset
3:TDataSource
4:TDBGrid客户方程序与服务器程序连接正常(前提:在同一台PC)
将客户方程序复制到另一个PC(同一局域网可以PING通)上运行,鼠标只在短时间变成漏斗又恢复指针形,不再有反应:(请问为什么在同一台电脑上客户方与服务器方程序连接成功读取数据
而在不同电脑上就不可以实现了呢?另注:该例子来自:《Delphi 5.x ADO/MTS/COM+高级程序设计篇》李维 著先谢谢各位大师了~
解决方案 »
- delphi读取xml?
- array[0..255] of string和string[255]啥区别?
- 请教midas的问题
- BusinessSkinForm中的ButtonBar如何使用,怎样知道点击的是哪一个Item?
- 请问我在一个数据表中用fields[0]查询出的表把fields[2]中显示出来,放到组合框中,该怎么做,多谢。。。。。
- 为什么我的 Delphi6 要我注册,不注册就用不了!请各位帮助!!!!!!
- 我想自已編表單的標題欄,這樣就要去掉它的標題欄及用鼠標移動表單的問題,怎麼辦?
- 有酬求做两个简单DLL插件
- 不知道这算不算delphi的技术问题,至少我是要用delphi实现啊!
- 奇怪的问题!!!
- 谁有《DELPHI 4 编程技术内幕》的源码光盘!
- 一個有關pchar()問題(很簡單)
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
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, Project1_TLB, StdVcl, Provider, DB, ADODB;type
TadoTestServer = class(TRemoteDataModule, IadoTestServer)
ADOConnection1: TADOConnection;
ADODataSet1: TADODataSet;
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 TadoTestServer.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, TadoTestServer,
Class_adoTestServer, ciMultiInstance, tmApartment);
end.客户方程序:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, DB, DBClient, MConnect;type
TForm1 = class(TForm)
DCOMConnection1: TDCOMConnection;
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}end.
而在不同电脑上就不可以实现了呢?
这个是你的dcom服务没有注册的问题,请先注册dcom服务,
DCOM方式搞了一晚都不得其解
改用SOCKET方式就OK了:)
谢谢~~~