因为一个程序要放在两台机上,数据库只能放在一台机子上,两个程序共同使用,以前一直用共享的方式,不过共享总不安全,一直想找一个好的办法解决,这次想试一下远程创建对象来获以连接的方法.不过这个连接好像不那么容易,远程的连接可以正常赋于本地定义的 Connection 对象,但是用这个对象来读取Recordset时,没有办法对Recordset 的 ActiveConnection 赋值,这是为什么?'''服务端 工程名为:RemoteConn 新建类名为:REConnection
Option ExplicitPrivate myConn As ConnectionPublic 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 FunctionPublic Property Get ActiveConnection() As Connection
    Set ActiveConnection = myConn
End Property'''客户端
Private Sub TestConn()
Dim a As ObjectDim 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

解决方案 »

  1.   

    紅褲衩,但,程序就挺……
    改成某种數據庫服務器吧,就算msde有也夠了。
      
      

  2.   

    郁闷,我知道SQL SERVER,一个小数据库,却要装一个大的SQL SERVER,没有这个必要吧,我想问一下这个不行的原因,主要是学习的目的,请大家不要提别的数据平台,谢谢
      

  3.   


    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 ObjectDim 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
      

  4.   

    不知道 cangwu_lee(橙子) 对我的这段测试代码有什么意见?
      

  5.   

    DING 什么D:\Data.mdb  是本机的? 有映射成本地驱动器么?其他的机器的话,连接 \\HoseName\ShageName\Data.mdb