如何创建到SQL Server的ODBC连接?
我尝试使用Access调用SQL Server中的存储过程。但是,我们在建造 ODBC连接,我不知道我是否遗漏了什么?或者只需要在sql站点中做一些设置 我有这样一个屏幕: OK按钮后面的代码是:如何创建到SQL Server的ODBC连接?,sql,sql-server,vba,ms-access,Sql,Sql Server,Vba,Ms Access,我尝试使用Access调用SQL Server中的存储过程。但是,我们在建造 ODBC连接,我不知道我是否遗漏了什么?或者只需要在sql站点中做一些设置 我有这样一个屏幕: OK按钮后面的代码是: Dim dbPUBS As dao.Database Dim tdfPUBS As dao.TableDef Dim qdfPUBS As dao.QueryDef Dim strMsg As String Dim strSQL As St
Dim dbPUBS As dao.Database
Dim tdfPUBS As dao.TableDef
Dim qdfPUBS As dao.QueryDef
Dim strMsg As String
Dim strSQL As String
' Check for existence of Server, Database and User Name.
' If missing, inform user and exit.
If IsNull(Me!txtServer) Then
strMsg = "Enter name of your company's Server." & _
& "(See your database administrator)"
MsgBox strMsg, vbInformation, "Missing Data"
Me!txtServer.SetFocus
ElseIf IsNull(Me!txtDatabase) Then
strMsg = "Enter name of database. (Example: xxxx)"
MsgBox strMsg, vbInformation, "Missing Data"
Me!txtDatabase.SetFocus
ElseIf IsNull(Me!txtUID) Then
strMsg = "Enter user login. (Example: xx)" = ""
MsgBox strMsg, vbInformation, "Missing Data"
Me!txtDatabase.SetFocus
Else
strServer = Me!txtServer
strDatabase = Me!txtDatabase
strUID = Me!txtUID
' Password may be NULL, so provide for that possibility
strPWD = Nz(Me!txtPWD, "")
' Prepare connection string
strConnect = "ODBC;DRIVER={SQL Server}" _
& ";SERVER=" & strServer _
& ";DATABASE=" & strDatabase _
& ";UID=" & strUID _
& ";PWD=" & strPWD & ";"
End If
Private Function ValidateConnectString() As Boolean
On Error Resume Next
Err.Clear
DoCmd.Hourglass True
' Assume success
ValidateConnectString = True
' Create test Query and set properties
Set qdfPUBS = dbPUBS.CreateQueryDef("")
qdfPUBS.Connect = strConnect
qdfPUBS.ReturnsRecords = False
qdfPUBS.ODBCTimeout = 5
' Attempt to delete a record that doesn't exist
qdfPUBS.SQL = "DELETE FROM Authors WHERE au_lname = 'Lesandrini'"
' Simply test one Pass Through query to see that previous
' connect string is still valid (server has not changed)
qdfPUBS.Execute
' If there was an error, connection failed
If Err.Number Then ValidateConnectString = False
Set qdfPUBS = Nothing
DoCmd.Hourglass False
End Function
这是错误的
strConnect = "ODBC;DRIVER={SQL Server}" _
& ";SERVER=" & strServer _
& ";DATABASE=" & strDatabase _
& ";UID=" & strUID _
& ";PWD=" & strPWD & ";"
应该是
strConnect = "DRIVER={SQL Server Native Client 10.0}" _
& ";SERVER=" & strServer _
& ";DATABASE=" & strDatabase _
& ";UID=" & strUID _
& ";PWD=" & strPWD & ";"
您应该访问该站点了解详细信息,但是,如果我是您,我不会使用ODBC。我的连接是(对于SQL Server 2012):
私有oCon作为ADODB.Connection
公共子初始化连接(ByRef sDataSource作为字符串,ByRef sDBName作为字符串)
作为字符串的Dim sConStr
设置oCon=newadodb.Connection
sConStr=“Provider=MSDataShape;数据提供程序=SQLNCLI11;”_
“集成安全性=SSPI;持久安全性信息=False;数据源=”&_
sDataSource&“Initial Catalog=“&sDBName
出错时继续下一步
呼叫oCon.Open(sConStr)
如果(Err.Number=0),则
”“好的
其他的
'显示错误消息/抛出/接收/等
如果结束
错误转到0
末端接头
其中,sDataSource
是“[COMPUTERNAME]\[SQL SERVER INSTANCE]”(与SSMS中相同,类似于“MyHomePC\SQLEXP”),而sDBName
是默认目录,即默认打开的数据库。您需要添加对Microsoft ActiveX数据对象的引用
,这样您就可以使用ADODB
连接
、命令
和记录集
对象(在Access VB窗口中:“工具”->“引用…”)。MSDataShape
不是强制性的,但对于分层网格来说很方便。编辑:顺便说一句,来自康斯特。站点:
Driver={SQLServer本机客户端11.0};Server=myserver地址;数据库=myDataBase;
Uid=我的用户名;Pwd=我的密码代码>(同样,对于SQL Server 2012,对于2008,它是“…客户端10”)您可以使用Google一秒钟。这会导致这样的问题:谢谢,我的连接字符串已经设置好了。但是它不工作。我只是感到困惑。很抱歉,但根据我引用的页面,您的连接字符串似乎有误。。。例如,它不应该说DRIVER={SQLServer}
,而应该说DRIVER={SQLServer}
!谢谢,很抱歉连接仍然失败。我已经编辑了我的答案。这是为了连接SQL Server 2008。请访问了解更多详细信息。谢谢,我会尝试一下。非常感谢。对于初学者来说,也许这个项目对我来说太难了。我会阅读你给我的链接,看看我能走多远。不客气!一切都很容易——如果你知道怎么做的话。你只需要学习它,仅此而已;)我看到我的服务器是“SQLServer9.0.5000”,这是指Server2005吗?客户9号呢?是2005年。然后,ODBC驱动程序将转到“driver={SQL Native Client}”,非常感谢。我想做的是在sql中有一个存储过程,它有四个参数。我想在access中创建一个应用程序,让用户执行store程序。我在网上找到了一个例子,想学习如何建立自己的。
Private oCon As ADODB.Connection
Public Sub InitConnection(ByRef sDataSource As String, ByRef sDBName As String)
Dim sConStr As String
Set oCon = New ADODB.Connection
sConStr = "Provider=MSDataShape;Data Provider=SQLNCLI11;" & _
"Integrated Security=SSPI;Persist Security Info=False;Data Source=" & _
sDataSource & ";Initial Catalog=" & sDBName
On Error Resume Next
Call oCon.Open(sConStr)
If (Err.Number = 0) Then
'all OK
Else
'Show Error Message / Throw / Sink / etc
End If
On Error GoTo 0
End Sub