dim conn dim connstr on error resume next connstr="DBQ="+server.mappath("*.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};" set conn=server.createobject("ADODB.CONNECTION") conn.open connstr
最简单的方法,你将你的数据库设置为共享,然后这样 dim rs as new adodb.recordset dim conn as new adodb.connection dim sqlstr dim data_path conn.connectionstring="provider=microsoft.jet.oledb.3.51;data source="+data_path data_path="computer_name/dircect_name_/data_name" conn.open sqlstr="select * from table_name" rs.open sqlstr,conn,1,1 现在你就可以用了 远程数据库用ACCESS不好啊,不过这样是可以访问的 只要你的data_path字符串写好了 如果你的计算机名是 h1 数据库共享名是data 数据库名是data.mdb 那你可以这么写; data_path="//hl/data/data.mdb"
严格意义让讲,用ADO是不能访问远程数据库的,即使能效果也不太好,你还是考虑别的方式吧。
给你个例子,我用过的,没问题 dim cn as new adodb.Connection Dim rs as new ADODB.RecordsetSet cn= new ADODB.Connection Set rs=new ADODB.RecordSetcn.open "DBQ=d:/myDatabase/myAccess.mdb;DRIVER={Microsoft Access Driver (*.mdb)};" rs.open "select * from myTable where ...",cn,adOpenDynamic, adLockOptimisticDo while not rs.eof //do loop
Dim cnn1 As ADODB.Connection Dim rstEmployees As ADODB.Recordset Dim strCnn As String Dim strID As String Dim strFirstName As String Dim strLastName As String Dim booRecordAdded As Boolean ' 打开连接。 Set cnn1 = New ADODB.Connection strCnn = "="provider=microsoft.jet.oledb.3.51;data source="+(database_path) cnn1.Open strCnn
' 打开雇员表。 Set rstEmployees = New ADODB.Recordset rstEmployees.CursorType = adOpenKeyset rstEmployees.LockType = adLockOptimistic rstEmployees.Open "employee", cnn1, , , adCmdTable
//only to reference// 客户端 服务器端 TCP/IP vb编的程序 <----------> RAccessService 通过SOCKAPI | | 0A MSACCESS 0A------------------------------------------------------------- 这就相当于三层模型结构。 --------------------------------------------------------------- 代码示例:以下代码比较简单,与ADO类似 以下代码演示了,怎样获取数据,更新数据Sub main() Dim conn As New CConnection '定义连接 -----相当于ADO中的Connection Dim rs As New CRecordset '定义记录集 -----相当于ADO中的Recordset Dim sField1 As String, sField2 As String, sField3 As String, sField4 As String Dim bConn As Boolean Dim nFieldsCound As Long Dim bOK As Boolean '----------打开服务器上的数据库-----------------------------0D 'bConn = conn.OpenConnection("192.168.1.125", "DSN=sa;DRIVER={SQL Server};UID=sa;PWD=;") bConn = conn.OpenConnection("192.168.1.155", "DSN=testmdb;DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;PWD=;") If Not bConn Then MsgBox conn.GetLastError() Set conn = Nothing Exit Sub End If'------------------------打开服务器上的记录集---------------- Set rs = conn.OpenResultset("SELECT * FROM zdxx") If rs Is Nothing Then MsgBox "记录集合打开错误!" Exit Sub End If nFieldsCound = rs.GetFieldsCount() Do Until rs.EOF sField1 = rs.GetFieldValueByIndex(0) sField2 = rs.GetFieldValueByIndex(1) sField3 = rs.GetFieldValueByIndex(2) sField4 = rs.GetFieldValueByIndex(3) Debug.Print sField1, sField2, sField3, sField4 rs.MoveNext Loop rs.CloseRecordset'------------------------插入服务器上的记录-------------------- Dim nRowAffected As Long bOK = conn.Execute("INSERT into zdxx(zdxx,lkd,tabstop) values('测试内容','120','1')", nRowAffected)0D If (Not bOK) Then MsgBox conn.GetLastError0D Else MsgBox "更新记录数:" & nRowAffected End If Set rs = Nothing Set conn = Nothing '------------------------------------------------- '连接,记录集不关闭也可以,程序退出自动关闭 End Sub
但是都要求在服务器端有相应的程序或是开放了相应的权限。
dim rs as new adodb.recordset
dim conn as new adodb.connection
dim sqlstr
dim data_path
conn.connectionstring="provider=microsoft.jet.oledb.3.51;data source="+data_path
data_path="computer_name/dircect_name_/data_name"
conn.open
sqlstr="select * from table_name"
rs.open sqlstr,conn,1,1
现在你就可以用了
远程数据库用ACCESS不好啊,不过这样是可以访问的
只要你的data_path字符串写好了
如果你的计算机名是 h1 数据库共享名是data 数据库名是data.mdb
那你可以这么写;
data_path="//hl/data/data.mdb"
dim cn as new adodb.Connection
Dim rs as new ADODB.RecordsetSet cn= new ADODB.Connection
Set rs=new ADODB.RecordSetcn.open "DBQ=d:/myDatabase/myAccess.mdb;DRIVER={Microsoft Access Driver (*.mdb)};"
rs.open "select * from myTable where ...",cn,adOpenDynamic, adLockOptimisticDo while not rs.eof //do
loop
他要的是访问远程数据库啊,不是本地数据库。
怎么访问呢?
Dim rstEmployees As ADODB.Recordset
Dim strCnn As String
Dim strID As String
Dim strFirstName As String
Dim strLastName As String
Dim booRecordAdded As Boolean ' 打开连接。
Set cnn1 = New ADODB.Connection
strCnn = "="provider=microsoft.jet.oledb.3.51;data source="+(database_path)
cnn1.Open strCnn
' 打开雇员表。
Set rstEmployees = New ADODB.Recordset
rstEmployees.CursorType = adOpenKeyset
rstEmployees.LockType = adLockOptimistic
rstEmployees.Open "employee", cnn1, , , adCmdTable
客户端 服务器端 TCP/IP
vb编的程序 <----------> RAccessService
通过SOCKAPI |
|
0A MSACCESS
0A-------------------------------------------------------------
这就相当于三层模型结构。
---------------------------------------------------------------
代码示例:以下代码比较简单,与ADO类似
以下代码演示了,怎样获取数据,更新数据Sub main()
Dim conn As New CConnection '定义连接 -----相当于ADO中的Connection
Dim rs As New CRecordset '定义记录集 -----相当于ADO中的Recordset
Dim sField1 As String, sField2 As String, sField3 As String, sField4 As String
Dim bConn As Boolean
Dim nFieldsCound As Long
Dim bOK As Boolean
'----------打开服务器上的数据库-----------------------------0D
'bConn = conn.OpenConnection("192.168.1.125", "DSN=sa;DRIVER={SQL Server};UID=sa;PWD=;")
bConn = conn.OpenConnection("192.168.1.155", "DSN=testmdb;DRIVER={Microsoft Access Driver (*.mdb)};UID=admin;PWD=;")
If Not bConn Then
MsgBox conn.GetLastError()
Set conn = Nothing
Exit Sub
End If'------------------------打开服务器上的记录集----------------
Set rs = conn.OpenResultset("SELECT * FROM zdxx")
If rs Is Nothing Then
MsgBox "记录集合打开错误!"
Exit Sub
End If
nFieldsCound = rs.GetFieldsCount()
Do Until rs.EOF
sField1 = rs.GetFieldValueByIndex(0)
sField2 = rs.GetFieldValueByIndex(1)
sField3 = rs.GetFieldValueByIndex(2)
sField4 = rs.GetFieldValueByIndex(3)
Debug.Print sField1, sField2, sField3, sField4
rs.MoveNext
Loop
rs.CloseRecordset'------------------------插入服务器上的记录--------------------
Dim nRowAffected As Long
bOK = conn.Execute("INSERT into zdxx(zdxx,lkd,tabstop) values('测试内容','120','1')", nRowAffected)0D
If (Not bOK) Then
MsgBox conn.GetLastError0D
Else
MsgBox "更新记录数:" & nRowAffected
End If
Set rs = Nothing
Set conn = Nothing
'-------------------------------------------------
'连接,记录集不关闭也可以,程序退出自动关闭
End Sub