为什么我写的三层结构总是出现“无效的类别字符串”错误?(100分)

  • 主题发起人 主题发起人 Fairys
  • 开始时间 开始时间
F

Fairys

Unregistered / Unconfirmed
GUEST, unregistred user!
请各位有写三层经验的高手指教:
最近在学习三层结构,按照书上所指按下面的步骤进行从没成功过,还请各位指点:
Server端:
1、在Delphi中新建一工程Application。(File->New->Application)
2、加入远程数据模块。(File->New-Other->Multitier->Remote Data Module)
3、为远程模块命名为AppServer,其它不默认值。(CoClass Name:AppServer)
4、在远程模块中放入一个ADOQuery1,并设置与SQL Server 2000连接成功(测试完后将Active=False)。
5、在远程模块中放入一个DataSetProvider1,并设置DataSet为ADOQuery1,poAllowCommandText=True。
6、将程序编译并生成EXE文件,放到服务器上执行一次(服务器名为ABC),然后将程序关闭。
Client端:
1、在Delphi中新建一工程Application。(File->New->Application)
2、在生成的窗体中放入一个DCOMConnection1,设置ServerName=AppServer,ComputerName=ABC。
3、当将DCOMConnection1的Connected设置为True时,出现“无效的类别字符串”的错误。
BTW:工作站与服务连接和访问并无问题。
不知到我哪里出了问题,以上过程都是按照书上所写做的,试了好多次都没有成功过。
 
Client端改为:
2、在生成的窗体中放入一个DCOMConnection1,设置ServerName=AppServer.DAppServer,ComputerName=ABC。
 
to hebei_ty:
按你的方法试了,但问题仍然一样!
 
客户端要注册midas.dll
老win98系统要装DCOM
服务器要dcomcnfg配置
都做了吗
 
to luzhouman:
我的工作站是XP的,服务器是WIN2003,数据库是SQL2000,客户端的midas.dll已经注册,但dcomcnfg的配置要做些什么?不是在服务器端运行一次就完成注册了吗?我用socket连的时候也是这样做的,起码服务端都会自动启动,但改用DCOM连就没有任何反应,还出现上面的错误。
 
...服务端那边不是编译了就完成了,那个还要进行一次安装的
安装完成后才会在服务器的DCom列表中多出你的那个com+接口的,然后再导成客户端到客户机上安装,之后客户端上的配置才能看得到那个接口的
 
to delphi小蜗牛:
我有服务端已经在服务器中运行了一次(书中说就是所谓的安装或注册,不知到是不是?)
我已经在服务器端的DCOM列表中找到了我的服务端名称AppServer。对其配置信息如下:
常规->身份验证级别:默认。
位置->只选择:在此计算机上运行应用程序。
安全->启动和激活权限:使用默认值,访问权限:使用默认值,配属权限:自定义。(全部为系统默项)
终结点->使用默认值。
标识->选择:交互方式。
BTW:因为初接触三层,能详细给我讲讲吗?还请多多指教!
 
问题已经解决!
我是在自己的机器上写程序的,当写完服务端后并没有在本地运行过,所以DCOMConnection1的SERVER NAME并没有可选择的项目,只是自己将服务名"AppServer"填上去(正确的名称型式是:程序名.服务名)从而导致前面所说出现的问题。当我将服务端在本地运行过后再打开DELPHI时,ServerName已经变成可选的了并找到服务端的名称,当选定服务端名称后其GUID也自动填上了。还有一个就是在DCOM设置中只有在标识页选择"交互方式"时,放在服务器的服务端程序才会在你连接时自动启动。
感谢楼上三位高手的帮忙,非常感谢!
 
后退
顶部