Источник данных в соединении SQLOLEDB должен указывать на сервер SQL Server и имя экземпляра (или IP-адрес, но затем необходимо указать порт). См. здесь для уточнения.
Вы не можете указать прямо на файл mdf. Это не доступ.
Если вы хотите, чтобы пользователи могли выбирать источник данных, вы должны использовать встроенный в ADO диалог Universal Data Link. Вот пример, взятый из более крупного класса, который я использую. Необходимо добавить ссылку на «Библиотеку типов компонента Microsoft OLE DB Service 1.0» или C: \ Program Files \ Common Files \ system \ ole db \ oledb32.dll.
Если вам просто нужно посмотреть, как будет выглядеть строка подключения, просто создайте файл с именем test.udl и дважды щелкните по нему. Используемый там интерфейс является тем же, который вызывается в этом коде.
' -----------------------------------------------------------------------------
' Edit
'
' Description:
' Edits the udl
'
' Arguments:
'
' Dependencies:
' MSDASC.DataLinks.PromptEdit
' MSDASC.DataLinks.PromptNew
'
' History:
' 05/23/2003 - WSR : Created
'
Public Function Edit() As Long
Dim dlgEdit As MSDASC.DataLinks
Dim strConnection As String
Set dlgEdit = New MSDASC.DataLinks
' if there is a connection string
If Len(m_conSource.ConnectionString) > 0 Then
' prompt user to edit the connection
If Not dlgEdit.PromptEdit(m_conSource) Then
' if they didn't edit the connection string
' return error code
Edit = -1
End If
' if there is no connection string
Else
' prompt user to create new connection
On Error Resume Next
strConnection = dlgEdit.PromptNew()
' if there was a connection string created
If Len(strConnection) > 0 Then
' use it
m_conSource.ConnectionString = strConnection
' if there was no connection string created
Else
' return error code
Edit = -1
End If
End If
Set dlgEdit = Nothing
End Function
' -----------------------------------------------------------------------------