我正在开发一个项目,将Microsoft访问后端迁移到SQL Server后端,我的客户坚持使用Access创建表单来执行任何插入,更新和删除操作。问题是他的机器上有SQL数据工具,团队中的其他人(没有数据工具)也需要能够使用这些表格。我认为最好的解决方法是使用和OleDb连接通过访问连接到表单,以便他的团队可以使用它,我的访问知识非常有限。到目前为止我所拥有的只是下面的内容
“Driver=SQLOLEDB;Data Source=SomeServer;Initial Catalog=SomeDatabase;Integrated Security=SSPI”
我知道用户在SQL框中有信用,可以通过ODBC连接。我们在让OleDb工作时遇到了麻烦。有关如何在访问表单中部署OleDB连接的任何帮助都非常感谢。
答案 0 :(得分:1)
这是我们用于SQL Server的连接。它支持使用可信连接或SQL Server身份验证。
Call GetConnection(gvstr_SQLServer_Name, gvstr_SQLServer_Database, _
cnConn, adUseServer, False, False)
If GetConnection(gvstr_SQLServer_Name, gvstr_SQLServer_Database, _
gv_DBS_SQLServer, adUseServer, True, False) = True Then
gvbln_UsingSQLServer = True
DoCmd.Hourglass True
ReLink_SQLSERVER_Tables
Else
gvbln_UsingSQLServer = False
End If
Public Function GetConnection(ByVal strDSN As String, _
ByVal strDatabase As String, _
ByRef cnLocal As ADODB.Connection, _
ByVal CursorLoc As CursorLocationEnum, _
ByVal UsePassword As Boolean, _
ByVal blnTrusted As Boolean) As Boolean
Dim intWaitDuration As Integer
Dim strConnectString As String
Dim strDisplay As String
Const CURRENT_METHOD As String = "GetConnection"
On Error GoTo ERROR_HANDLER
GetConnection = False
intWaitDuration = 60
Retry_Connection:
If cnLocal Is Nothing Then Set cnLocal = New ADODB.Connection
If cnLocal.State = adStateOpen Then
Write_To_Log "Connection already open -- -will not reopen!!"
GetConnection = True
GoTo Proc_Exit
End If
With cnLocal
Debug.Print "Use TRUSTED CONNECTION (ABOVE)"
If gvstr_Workstation = "my-pc" Then
strConnectString = "Driver={SQL Server};" & _
"Server=" & strDSN & ";" & _
"Database=" & strDatabase & ";" & _
"Trusted_Connection=yes"
Else
If blnTrusted = True Then
strConnectString = "Driver={SQL Server};" & _
"Server=" & strDSN & ";" & _
"Database=" & strDatabase & ";" & _
"Trusted_Connection=yes"
Else
strConnectString = "Driver={SQL Server};" & _
"Server=" & strDSN & ";" & _
"Database=" & strDatabase & ";" & _
"User Id=Sql_myuid;Password=ppppp"
strDisplay = "Driver={SQL Server};" & _
"Server=" & strDSN & ";" & _
"Database=" & strDatabase & ";" & _
"User Id=S*********t;Password=****************"
End If
End If
Write_To_Log "Will use Conn String: " & strDisplay
.ConnectionString = strConnectString
.CursorLocation = CursorLoc
.Open
End With
GetConnection = True
Proc_Exit:
Exit Function
ERROR_HANDLER:
Debug.Print Err.Number & vbCrLf & Err.Description
Err.Source = "Module_Utilities: GetConnection at Line: " & Erl
DocAndShowError
Resume Proc_Exit
Resume Next
Resume
End Function