delphi开发三层应用,中间层用mts/com+(tmtsdatamodule),编译运行正常。
dcomconnection的servername为本机名,loginprompt为false。按照有关贴子指示:1 导出安装包(我有3个,选择了连接到本机的客户连接类型)
                  2 copy midas.dll 并用regsrv32注册
                  3 安装3个包(proxy application)第一次时候有提示重新启动
                  4 运行客户端
提示:无法创建终结点。进入程序后调用时提示:variant does not referenct an automation object 。服务器、客户端均为2000professional 且服务器打开guest用户。两机连接正常。怎么办呢?
顺便,一般说“登陆时带上用户名和密码”,这是在那里输呢?程序中,还是在登陆对话框钟?后来把dcomconnection.loginprompt设置为true 在本机运行正常,在客户机还是老样子。另外导出的.msi安装后在删除(添加/删除程序),再次安装候不提示重新启动了,正常吗?还是没删掉?分不够可以加!
dcomcnfg里的一些选项怎样才能删除?原来一些旧的总是和新的混淆!属性里面:在本机运行程序 和 在指定的远程计算机运行程序 有什么不同?

解决方案 »

  1.   

    唉,对MIDAS不熟,惭愧。
    无法创建终结点一般是网络连接有问题,不过在本机上么,可能是未找到服务器,再安装一遍试试。
      

  2.   

    曾经碰到过类似问题,也(稀里糊涂?)解决了.
    你的问题原因我不太明白,但是我觉得你可以在以下几方面寻找.
    1.数据库和Dcomconnection的机器名是否正确?
    2.是否修改了数据库表的结构或程序中Dataset的Fields内容,而未在其他层相应更改.
    祝好运!
      

  3.   


    to shaver() 
    机器名正确的;
    我的数据库操作都通过存储过程做的,没有使用到fields内容。to rwdx(任我独行) 
    网络通畅。
      

  4.   

    请楼主看看id为1266169的帖子,“Socket客户端该如何确定与服务器连接?”,看看是否这个原因。
    另外,楼主说使用了存储过程,但是我在调用存储过程时怎么老出错呢,帖子id为1477865,http://expert.csdn.net/Expert/topic/1477/1477865.xml,希望能指教。-------------------------------------------
    怎么没有人给我分呢?郁闷中……CsdnOnline CSDN在线
    -------------------------------------------
      

  5.   

    抱歉,请你查看的帖子id为1165088。内容如下:服务端的分发和设定
    在多层应用系统中,分发服务比较复杂。
    1。决定使用存取控制的权限。如果你有WINDOWS NT做为应用程序服务器的平台,那么建议使用‘用户级存取控制’
    2。执行应用程序服务器一次以注册应用程序服务器。
    3。拷贝MIDAS。DLL到系统子目录中。而且必须注册。你可以使用TREGSRV32来注册MIDAS。DLL
    4。拷贝IDPROV32.DLL到BDE数据库引擎的子目录中。
    5。使用DCOMCNFG设置应用程序服务器的存取权限。在通常情况下,可以将验证等级设定为‘无’,并且把存取控制和激活控制设置为EVERYONE就可以让所有的客户端用户激活和存取应用程序服务器。
    6。如果目前使用的DCOM是对于95的话,强烈建议你升级到98,否则程序员必须自行激活RPCSS。EXE当程序员使用DELPHI开发分布式多层应用系统后,除了将应用程序序列分发之外,还必须使用DCOM的配置应用程序DCOMCNFG.EXE来进行设置。
    在WIN9.X系列中进行DCOM之前,应确认是否装有DCOM,如果没有,可WWW.Microsoft.com下载。WIN9.X配置为DCOM服务器
    第一步就是将访问控制设置为用户级控制。在‘获取用户及组的列表中’输入该局域网中能提供安全权限的机器名(该计算机必须正在运行)。
    第二步就是运行位于系统目录下的.exe文件。在应用程序列表中应该能够找到你所编制的应用程序,如果没有列出,请将你所编的程序运行一次。
    通常,我们可以通过修改默认属性及默认安全性来达到一定的目的,在‘默认属性’页中,让‘启动该计算机的分布式COM’选项选中,而‘默认的身份验证级别’中‘连接’的意思代表‘只在客户端第一次连结应用程序服务器时检查客户端的权限’。
    ‘默认的模拟级别’中‘识别’的意义为‘在这种模式下,服务端可以取得连结的客户端的权限信息,但是服务端无法以连结的客户端的权限存取系统对象’。当其设为‘模拟’时,表明‘服务端可以取得连结的客户端的权限信息,并且能够以连结的客户端的权限存取系统对象’。
    在默认属性页中,还有一个‘为跟踪引用提供附加的安全性’的选项。这个设置可以让应用程序服务器使用COM/DCOM的回叫机制以保持COM/DCOM中远程调用参考计数值(reference count)的正确性,以避免客户端应用程序恶意的调用应用服务器并且断线。选中这个选项可以让应用程序服务器有效的管理其生命周期,但是也会减缓应用程序服务执行的速度。
    -------------------------------------------
    怎么没有人给我分呢?郁闷中……CsdnOnline CSDN在线
    -------------------------------------------
      

  6.   

    错了拉。我用的是mts/com+ ,不是exe程序,应该不是在dcomcnfg中设置的吧。
      

  7.   

    看你的问题好像是客户端没有访问的com+的权限。-------------------------------------------
    怎么没有人给我分呢?郁闷中……CsdnOnline CSDN在线
    -------------------------------------------
      

  8.   

    抱歉了,我也是病急乱投医。能否看看我的这个问题?
    主  题:  怎样使用TSQLStoreProc调用SQL Server的存储过程呢? 
    ID:  1477865 
    所属论坛:  Delphi MIDAS应用 
    -------------------------------------------
    怎么没有人给我分呢?郁闷中……CsdnOnline CSDN在线
    -------------------------------------------
      

  9.   

    下面的方法可能行:
    方法1:在应用服务器所在的机器上创建一个帐户,名称和密码跟当前客户端所在的机器上登陆帐户密码完全相同。
    方法2:把应用服务器所在的机器配置成域控制器,客户登陆时使用域帐户,不要登陆到本地对应DCOM配置:
    应用服务器验证级别“无”,模拟级别“标识”,启动和访问权限中有“everyone”,COM对象的身份标识选“交互式用户”。
      

  10.   

    抱歉,好久没来了,最近上网不方便;)
    这个问题已经解决部分了。
    dreaminger(小锡) 的方法是可行的,我后来到域环境下就可以了。不过又有一个新问题,就是导出的com+在域控制器上安装时,有两个成功了,还有一个却总是提示安装出错,搞不懂呢!
      

  11.   

    首先,可以确定一点:在本机可以,程序应该可以跑。
    可能的一点就是:win2k 的com+环境设置和数据库的连接驱动设置。请将你的这些情况比较一下。
    dcomconnection的servername请用Ip试一下。
    我的系统一个已经运行了半年多了(bcb),另一个运行了一年多了(delphi)没问题,只不过我的是客户端通过socket连接中间层。
      

  12.   

    确认你的server注册了吗?
    请将你的中间层server注册一下,即运行一下,然后关闭。
    dcomconnection.loginprompt设置为true ,弹出的对话框中的用户和密码指的是数据库的。
      

  13.   

    to hait(haitao) :
    mts/com+程序怎么运行啊?
    三个msi安装包都是一台机器上作的,就是有一个安装不了,哎~~要再试试才行。