因为一个程序要放在两台机上,数据库只能放在一台机子上,两个程序共同使用,以前一直用共享的方式,不过共享总不安全,一直想找一个好的办法解决,这次想试一下远程创建对象来获以连接的方法.不过这个连接好像不那么容易,远程的连接可以正常赋于本地定义的 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
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
解决方案 »
- 如何 连接 Excel 表文件,并且读出 记录的值?
- 购买 酒店管理系统 源代码
- 在VB中,如何与CrystalDecisions.Shared联系起来?(水晶报表问题)
- OLE控件的问题,请大家帮帮忙解决一下。
- vb能否有pb数据窗口的那种效果!
- 将程序至于最前和鼠标编程的问题
- 如何返回Access数据库中的所有表名?
- 客户端的Excel中如何获取服务端的SQL server数据?
- 高手们快来--》关于引用excel后打包的问题
- CPUID ??? 应该是不同的CPU 不同的ID
- 在VB中如何读出access数据库的表名
- 知道了IHTMLDocument2接口,如何获得IWebBrowser2接口(vb.net)
改成某种數據庫服務器吧,就算msde有也夠了。
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