请教一个com的问题
我用vb写了一个简单的测试com,目的是传递一个cpid,查询出来一个记录集,代码如下:
类模块:
Public Function GetCp(ByVal lngCpid As Long) As ADODB.Recordset
'查询得到cpml的记录集
On Error GoTo err1
Dim strSql As String
Dim objContext As ObjectContext
Dim objConn As ADODB.Connection
Dim objRs As ADODB.Recordset
Set objContext = GetObjectContext()
Set objConn = CreateObject("ADODB.Connection")
With objConn
.CommandTimeout = 30
.ConnectionString = "provider=sqloledb;server=lbmars;uid=ztsw;pwd=greatit;database=psswxt"
.Open
End With
Set objRs = New ADODB.Recordset
strSql = "select cpbh,cpname,class from cpml where cpid=" & lngCpid
objRs.Open strSql, objConn, adOpenStatic
Set GetCp = objRs
objContext.SetComplete
Set objConn = Nothing
Set objRs = Nothing
strSql = ""
Exit Function
err1:
objContext.SetAbort
Set GetCp = Nothing
End Function
客户程序:
Private Sub cmdOk_Click()
Dim rsTemp As ADODB.Recordset
Dim objTest As Object
Dim lngCpid As Long
lngCpid = CLng(txtCpid.Text)
Set objTest = CreateObject("classtest.clsTest")
Set rsTemp = objTest.getcp(lngCpid)
If rsTemp.EOF = False Then
txtCpbh.Text = rsTemp!cpbh
txtCpname.Text = rsTemp!cpname
txtClass.Text = rsTemp!Class
Else
MsgBox "error"
End If
End Sub
现在的问题是:
1、如果在一个程序组中,可以正常得到查询出来的纪录集数据;
2、如果组件在mts注册并安装在客户机之后,客户程序就得不到记录集,即rstemp.eof一直为true
请问原因?
谢谢