2013-05-08 3 views
3

Я пытаюсь использовать Access для вызова хранимой процедуры в SQL Server. Но у меня возникли проблемы с подключением ODBC , я не знаю, что я чего-то не хватает? Или просто нужно сделать какой-то набор в sql-сайте?Как создать соединение ODBC с SQL Server?

У меня есть экран, как это:

enter image description here

и код позади кнопки ОК это:

 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 
+1

Возможно, вы только что использовали Google в течение секунды. Это могло бы привести к следующему: http://www.sqlstrings.com/SQL-Server-connection-strings.htm –

+0

Спасибо, моя строка подключения установлена.Butj не работает. Я просто сбиваю с толку. извините –

+1

Но ваша строка подключения кажется неправильной в соответствии со страницей, которую я цитировал ... Например, он не должен указывать 'DRIVER = {SQL SERVER}', но 'DRIVER = {SQLServer}'! –

ответ

1

Это неправильно

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 & ";" 
+0

Спасибо, извините, связь еще не прошла –

+0

Я отредактировал свой ответ. Это необходимо для подключения к SQL Server 2008. Дополнительную информацию можно найти на сайте http://www.connectionstrings.com/. –

+0

Спасибо, я попробую. –

2

Для получения подробной информации посетите сайт ConnectionStrings, однако я бы не использовал ODBC, если бы был вами.
Мое соединение (для SQL Server 2012):

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

Где sDataSource является "[COMPUTERNAME] \ [SQL SERVER INSTANCE]" (так же, как SSMS в например, это как "MyHomePC \ SQLEXP") и sDBName является каталогом по умолчанию, то есть стандартным DB для открытия. Вам нужно будет добавить ссылку на Microsoft ActiveX Data Objects, чтобы вы могли использовать ADODBConnection, Command и Recordset объектов (в окне доступа VB: «Инструменты» -> «Ссылки ...»).
MSDataShape не является обязательным, но подходит для иерархических сеток.


EDIT: BTW, from connstr. сайт: Driver={SQL Server Native Client 11.0};Server=myServerAddress;Database=myDataBase; Uid=myUsername;Pwd=myPassword; (опять же, для SQL Server 2012, для 2008 года это «... Клиент 10.»)

+0

спасибо. Для начинающего, возможно, этот проект мне так трудно. Я прочитаю ссылку, которую вы мне дадите, и посмотрите, как далеко я могу идти. –

+0

Добро пожаловать! Все легко - если вы знаете, как это сделать. Вам просто нужно учиться в этом, вот и все;) – 2013-05-08 14:03:20

+0

Я вижу, что мой Север - это SQL Server 9.0.5000. Это означает Server 2005? и клиент 9? –

Смежные вопросы