Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 如何使用VBScript连接到Access数据库_Ms Access_Vbscript - Fatal编程技术网

Ms access 如何使用VBScript连接到Access数据库

Ms access 如何使用VBScript连接到Access数据库,ms-access,vbscript,Ms Access,Vbscript,我有一个Access数据库,供希望使用vbscript连接和查询数据库的客户使用(这样他们就可以在不实际打开Access 2000 MDB的情况下实现自动化)。我不知道如何建立数据库连接 我尝试了几个脚本,使用DAO和OLEDB。下面我使用ODBC文件DSN粘贴了最接近的一个(我担心使用系统DSN需要在客户端做额外的工作,我尽量使它简单) 以下是RLS.dsn的内容(我使用Windows控制面板创建了它,因此我相信它是正确的): 我得到的错误消息(这与我尝试的其他两个脚本类似)是: “第5行,字

我有一个Access数据库,供希望使用vbscript连接和查询数据库的客户使用(这样他们就可以在不实际打开Access 2000 MDB的情况下实现自动化)。我不知道如何建立数据库连接

我尝试了几个脚本,使用DAO和OLEDB。下面我使用ODBC文件DSN粘贴了最接近的一个(我担心使用系统DSN需要在客户端做额外的工作,我尽量使它简单)

以下是RLS.dsn的内容(我使用Windows控制面板创建了它,因此我相信它是正确的):

我得到的错误消息(这与我尝试的其他两个脚本类似)是:


“第5行,字符4错误:[Microsoft][ODBC驱动程序管理器]未找到数据源名称,未指定默认驱动程序。源:用于ODBC驱动程序的Microsoft OLE DB提供程序”

您只需使用ADO连接到文件,无需设置DSN。这对你的客户来说会更简单

对于Access 2000、2002-2003 MDB,请使用以下连接字符串:

“Provider=Microsoft.Jet.OLEDB.4.0;数据源=D:\RLS\u be.mdb”

对于2007年、2010年、2013年ACCDB的访问:

“Provider=Microsoft.ACE.OLEDB.12.0;数据源=D:\RLS\u be.accdb”

整体连接代码:

' Build connection string
Dim sConnectionString
sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\RLS_be.mdb"

' Create connection object
Dim objConnection
Set objConnection = CreateObject("ADODB.Connection")

' Open Connection
objConnection.open sConnectionString

' Get recordset from SQL query
Dim objRecordset
Dim sQuery
sQuery = "SELECT County FROM CountyTBL"

Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.CursorLocation = adUseClient
objRecordset.Open sQuery, objConnection, adOpenStatic, adLockOptimistic

下面是另一个版本,它使用MS Access 2016数据库的连接字符串。该示例连接到“clients.accdb”数据库并检索记录的“ClientID”字段的值,其中“ClientName”等于“Joe Smith”,然后循环遍历SQL语句返回的记录

请注意,SQL语句中的额外引号用于处理名称可能包含单个引号(')的场景,例如O'Connor

Dim oConn, oRS

Dim ClientName : ClientName = "Joe Smith"

Set oConn = WSH.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.ACE.OLEDB.16.0; Data Source=C:\test\clients.accdb"
Set oRS = oConn.Execute("Select ClientID From Clients Where ClientName=""" & ClientName & """")

Do While Not(oRS.EOF)

 'Do something with the record.

 oRS.MoveNext
Loop

oRS.Close
oConn.Close

你是如何运行这个文件的?32位或64位CSCRIPT.EXE或WSCRIPT.EXE?实际上,我只是将其保存为.vbs到我的桌面,然后双击它。我已经发布了。你可以回顾它,然后。很可能,按照最后一个解决了您的问题。谢谢Erik!我想知道我是否使用了正确的连接语法,这让我发疯,但在32位下运行它是可行的!非常感谢。我想我已经尝试了直接ADO连接字符串,并得到了相同的错误消息。但我会试试你说的,它看起来确实比我的其他脚本简单。如果所有这些都失败了,我将制作一个ASP.NET控制台应用程序来完成。但这可能存在相同的连接字符串问题。Access非常混乱,因为有太多不同的字符串模板,这取决于它是Access 97、2003、2010、ADO、DAO、OLEDB,所以我无法判断它是错误的语法还是我没有驱动程序或错误的技术。如果仍然遇到问题,请发布更新的代码!至于连接字符串,也许您可以在连接之前简单地检查文件扩展名并调整提供程序。如果是,您是否在该计算机上安装了[ADO(2.8)驱动程序]()?
' Build connection string
Dim sConnectionString
sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\RLS_be.mdb"

' Create connection object
Dim objConnection
Set objConnection = CreateObject("ADODB.Connection")

' Open Connection
objConnection.open sConnectionString

' Get recordset from SQL query
Dim objRecordset
Dim sQuery
sQuery = "SELECT County FROM CountyTBL"

Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.CursorLocation = adUseClient
objRecordset.Open sQuery, objConnection, adOpenStatic, adLockOptimistic
Dim oConn, oRS

Dim ClientName : ClientName = "Joe Smith"

Set oConn = WSH.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.ACE.OLEDB.16.0; Data Source=C:\test\clients.accdb"
Set oRS = oConn.Execute("Select ClientID From Clients Where ClientName=""" & ClientName & """")

Do While Not(oRS.EOF)

 'Do something with the record.

 oRS.MoveNext
Loop

oRS.Close
oConn.Close