首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

远程创建对象获取数据连接 Connection时出错,大家帮忙看看,该怎么解决

2011-12-29 
远程创建对象获取数据连接 Connection时出错,大家帮忙看看因为一个程序要放在两台机上,数据库只能放在一台

远程创建对象获取数据连接 Connection时出错,大家帮忙看看
因为一个程序要放在两台机上,数据库只能放在一台机子上,两个程序共同使用,以前一直用共享的方式,不过共享总不安全,一直想找一个好的办法解决,这次想试一下远程创建对象来获以连接的方法.不过这个连接好像不那么容易,远程的连接可以正常赋于本地定义的   Connection   对象,但是用这个对象来读取Recordset时,没有办法对Recordset   的   ActiveConnection   赋值,这是为什么?

' ' '服务端   工程名为:RemoteConn   新建类名为:REConnection
Option   Explicit

Private   myConn   As   Connection

Public   Function   GetConnection()   As   ADODB.Connection
        Set   myConn   =   New   Connection
        myConn.CursorLocation   =   adUseClient
        myConn.ConnectionString   =   "Provider=Microsoft.Jet.OLEDB.4.0;Persist   Security   Info=False;Jet   OLEDB:Database   Password=88888888;Data   Source=D:\Data.mdb "
        Call   myConn.Open
        Set   GetConnection   =   myConn
End   Function

Public   Property   Get   ActiveConnection()   As   Connection
        Set   ActiveConnection   =   myConn
End   Property

' ' '客户端
Private   Sub   TestConn()
Dim   a   As   Object

Dim   conn   As   Connection
Dim   rst   As   Recordset
        Set   a   =   CreateObject( "RemoteConn.REConnection ", "Server ")
        Call   a.GetConnection
        Set   conn   =   a.ActiveConnection             ' 'Connection   对象之间赋值正常
        ' 'Debug.Print   (conn.ConnectionString)
        Set   rst   =   New   Recordset
        rst.LockType   =   adLockBatchOptimistic
        rst.CursorLocation   =   adUseClient
        ' '把活动连接赋于Recordset的ActiveConnection   时出错,
        ' '错误3001   参数类型不正确,或不在可以接受的范围之内,或与其它数冲突        
        Set   rst.ActiveConnection   =   Conn            
        Call   rst.Open( "Select   *   From   T_Print ")
        Set   Me.MSHFlexGrid1.Recordset   =   rst
End   Sub

[解决办法]

Public Function GetConnection() As ADODB.Connection
Set myConn = New Connection

' '加上这句
mycnConn.ConnectionTimeout = 60

myConn.CursorLocation = adUseClient
myConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Jet OLEDB:Database Password=88888888;Data Source=D:\Data.mdb "
Call myConn.Open
Set GetConnection = myConn
End Function

' ' '客户端
Private Sub TestConn()
Dim a As Object

Dim conn As Connection
Dim rst As Recordset
Set a = CreateObject( "RemoteConn.REConnection ", "Server ")
Call a.GetConnection
Set conn = a.ActiveConnection ' 'Connection 对象之间赋值正常
' 'Debug.Print (conn.ConnectionString)
Set rst = New Recordset
rst.LockType = adLockBatchOptimistic
rst.CursorLocation = adUseClient


' '把活动连接赋于Recordset的ActiveConnection 时出错,
' '错误3001 参数类型不正确,或不在可以接受的范围之内,或与其它数冲突

' '改成这样试试看
rst.Open "Select * From T_Print ",a.GetConnection

'Set rst.ActiveConnection = Conn
'Call rst.Open "Select * From T_Print "
Set Me.MSHFlexGrid1.Recordset = rst
End Sub

[解决办法]
DING 什么

D:\Data.mdb 是本机的? 有映射成本地驱动器么?

其他的机器的话,连接 \\HoseName\ShageName\Data.mdb

热点排行