100分求救Com+组件问题!!!

mePower 2003-04-06 12:42:56
请看一下这段用Com+组件(Server)执行SQL返回给Client的代码!
当Client端和Server端在开发的PC上,Client端上用TExSQL方法本地的SQL时可以将Recordset返回,但把Client端和Server端分别安装在非开发的PC上时就不能返加Recordset,经测试当返回的结果是一个字符串(如Server的时间等)是很正常的,是不是Com+组件不能返回Recordset?请问做类似的一个组件还有其他方法吗(不把数据库的表和字段作为类封装到组件)?

Server端代码:TDBServer.vbp_______________________________
'MainMode.bas****************************
Option Explicit
Dim ConStr As String
Public MainCn As ADODB.Connection
Public IsCon As Boolean
Public Sub Main()
Set MainCn = New ADODB.Connection
MainCn.CursorLocation = adUseClient
ConStr = "driver=sql server;server=10.97.0.51;uid=sa;pwd=;database=Test"
IsCon = ConToDB
End Sub

Function ConToDB() As Boolean
On Error GoTo ConToDBErr
MainCn.ConnectionString = ConStr
MainCn.Open
ConToDB = True
Exit Function
ConToDBErr:
ConToDB = False
MsgBox Err.Description, vbInformation
Exit Function
End Function
'MainMode.bas****************************


'TCmdClass.cls****************************
Option Explicit
Public Function TExSQL(Tsql As String) As Recordset
On Error GoTo ExErr
Set TExSQL = MainCn.Execute(Tsql)
Exit Function
ExErr:
Exit Function
End Function
'TCmdClass.cls****************************
Server端代码:TDBServer.vbp_______________________________

Client端代码:TDBClient.vbp_______________________________
'MainForm.frm****************************
Option Explicit
Private Sub Command1_Click()
Dim RS As ADODB.Recordset
Set RS = New ADODB.Recordset
Dim TCmd As Object ' TDBServer.TCmdClass
Set TCmd = CreateObject("TDBServer.TCmdClass")
RS.CursorLocation = adUseClient
Set RS = TCmd.TExSQL(Text1.Text)
MsgBox RS.RecordCount
MsgBox RS.Fields(0).Value
Set TCmd = Nothing
Set RS = Nothing
End Sub
'MainForm.frm****************************
Client端代码:TDBClient.vbp_______________________________

...全文
150 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
2003kingbear 2003-05-22
  • 打赏
  • 举报
回复
我昨天也碰到了同样的问题用最简单的常数可以,用adodb.recordset对象就不可以了。还有就是安装的客户如何做个不用修改的安装程序的问题
关注。。。。。。
lingfengtree 2003-04-14
  • 打赏
  • 举报
回复
帮你UP一下,支持你
mePower 2003-04-14
  • 打赏
  • 举报
回复
lhzongji(踪迹):"这个错误我以前经常碰到。在SERVER端把COM的方法都给注册了就OK
",如何注册组件的方法?
xghim 2003-04-14
  • 打赏
  • 举报
回复
你在运行时打开“组件服务”,如果是winXP操作系统,则可以看到一个“正在运行的组件”,在这里如果找不到你要的那个组件,或者响应时间过长,则表明有问题。在你查看安装的那个组件服务目录时,一般系统会提示你有什么元素已经丢失,如果没提示,你可以点开那个组件的方法列表,查看是否存在你需要的函数,有时候注册组件是要先将以前的全部删除后重新安装的。另外出现这个错误也不一定就是组件服务的问题,很有可能是你组件中用到的某个引用或者创建对象的部分出错,导致组件出错。你可以将源程序拷贝到客户端去跟踪调试一下,一般都能发现问题出现在哪的。
xghim 2003-04-11
  • 打赏
  • 举报
回复
组件有客户端要安装的,可以在服务器上的组件服务中找到那个项目,然后打包成一个客户端安装文件,在客户端安装后就可以了。
mePower 2003-04-11
  • 打赏
  • 举报
回复
谢谢各位的回复!我再试一下看。
lhzongji 2003-04-10
  • 打赏
  • 举报
回复
“方法'~'作用于对象'~'”

这个错误我以前经常碰到。在SERVER端把COM的方法都给注册了就OK
online 2003-04-10
  • 打赏
  • 举报
回复
文章:http://www.ourfly.com/forum/View.aspx?fbId=9&Id=307
这个也不是com+程序
算个三层吧

试者将服务端程序用组件服务器注册
调用setabort()检测错误

mePower 2003-04-10
  • 打赏
  • 举报
回复
我的这个问题是不是各位都不会?还是不愿说出来?
AechoJohn 2003-04-10
  • 打赏
  • 举报
回复
Set TCmd = CreateObject("TDBServer.TCmdClass")
用这句时TDBServer.TCmdClass需要TDBServer在本地机上注册。还有所有传入到Com中或从Com+中传出来的变量类型全部改为Variant。
mePower 2003-04-08
  • 打赏
  • 举报
回复
pwq(公雞):我还不加Com+的事务一类的东西,请问要实现类似的Com+组件应如何实现?
chenyu5188 2003-04-08
  • 打赏
  • 举报
回复
没有用过,关注

帮你UP
pwq 2003-04-08
  • 打赏
  • 举报
回复
好像根本沒看到你用到Com+的語句
mePower 2003-04-07
  • 打赏
  • 举报
回复
后来我又在Server组件中增加了日志,把Server组件安装在开发的PC上,将Client端安装在其他PC上,通过日志记录Server组件的运行很正常,能够根据Client提交的SQL查询出记录,但Client端一但执行了TExSQL()就报“方法'~'作用于对象'~'”错误,不知这是为何,如果Client端Server组件都安装在开发的PC上一切正常,相反Server组件安装在其他的PC上,日志同样报“方法'~'作用于对象'~'”错误,是不是Server组件不能返回一个对象,只能返回String,Date一类的变量。请高手帮帮忙!!!本人感激不尽!

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧