02. В этом примере показаны два разных метода открытия базы данных через ADO, DAO и использование файла udl
|
Option Compare Database
Option Explicit
'***************************************************************
' 02. Открытие базы данных разными методами
'***************************************************************
'==============================================================
' ADO. Открытие базы данных
Private Sub butADO_Click()
Dim cnn As ADODB.Connection ' Переменная для соединения
Dim myLinks As MSDASC.DataLinks ' Переменная для граф.интерфейса
On Error GoTo 999
' Текущее соединение
' Set cnn = CurrentProject.Connection
' Определяем новое соединение
Set cnn = New ADODB.Connection
If Me.grOpen Then ' Графический интерфейс
If Me.grOpen = 1 Then ' Графический интерфейс
' 1. Открытие соединения без файла
cnn.Provider = "Microsoft.Jet.OLEDB.4.0"
cnn.Mode = adModeReadWrite ' Открываем на чтение и запись
cnn.Properties("User ID") = "Admin"
cnn.Properties("Data Source") = CodeProject.Path & "\la_form.mdb"
Else
' 2. Открываем соединение, используя файл udl (2 варианта открытия)
On Error Resume Next
cnn.Open
cnn.Properties("Extended Properties") = "File Name=" & CodeProject.Path & "\la_ado.udl"
' Дополнительный пример
' cnn.Open "File Name=" & CodeProject.Path & "\la_ado.udl"
cnn.Close
Err.Clear
End If
' Включаем редактор udl (см. также Tools/References ...)
Set myLinks = New MSDASC.DataLinks
myLinks.hWnd = Application.hWndAccessApp ' Родственник udl
If myLinks.PromptEdit(cnn) = True Then ' Редактирование, OK = true
cnn.Open
cnn.Close
' Отображаем строку подключения
Me.listCon.RowSource = cnn.ConnectionString
Else
' Отображаем пустую строку подключения
Me.listCon.RowSource = "Отмена соединения;"
End If
Set myLinks = Nothing ' Уничтожаем ссылку
Else ' Программный интерфейс
' Определяем строку соединения для Microsoft.Jet.OLEDB
' Полностью определить переменные подключения для других провайдеров
' можно открыв файл udl, который создается в проводнике
Dim strCnn As String
strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;" ' Провайдер
strCnn = strCnn & "Data Source=" & CurrentProject.Path & "\la_form.mdb;" ' база данных
strCnn = strCnn & "User ID=Admin;" ' Пользователь
strCnn = strCnn & "Mode=ReadWrite|Read;" ' Режим чтения и записи+другие свойства
strCnn = strCnn & "Extended Properties='';" ' Расширенные свойства, например, файл udl
strCnn = strCnn & "Persist Security Info=False;"
strCnn = strCnn & "Locale Identifier=1033;"
strCnn = strCnn & "Jet OLEDB:System database='';" 'C:\..\SYSTEM.MDW;
strCnn = strCnn & "Jet OLEDB:Database Password='';" ' Пароль внутри базы
strCnn = strCnn & "Jet OLEDB:New Database Password='';"
strCnn = strCnn & "Jet OLEDB:Encrypt Database=False;"
strCnn = strCnn & "Jet OLEDB:Create System Database=False;"
strCnn = strCnn & "Jet OLEDB:Registry Path='';"
strCnn = strCnn & "Jet OLEDB:Engine Type=5;"
strCnn = strCnn & "Jet OLEDB:Database Locking Mode=1;"
strCnn = strCnn & "Jet OLEDB:Global Partial Bulk Ops=2;"
strCnn = strCnn & "Jet OLEDB:Global Bulk Transactions=1;"
strCnn = strCnn & "Jet OLEDB:Don't Copy Locale on Compact=False;"
strCnn = strCnn & "Jet OLEDB:SFP=False;"
strCnn = strCnn & "Jet OLEDB:Compact Without Replica Repair=False;"
' Назначаем строку соединения
cnn.ConnectionString = strCnn
' Отображаем строку подключения
Me.listCon.RowSource = cnn.ConnectionString
' Открываем соединение
cnn.Open
cnn.Close
End If
' Конец
Set cnn = Nothing
Exit Sub
999:
MsgBox Err.Description
Err.Clear
End Sub
'==============================================================
' DAO. Открытие базы данных
Private Sub butDAO_Click()
Dim dbs As DAO.Database
' Текущая база
' Set dbs = CurrentDb
' Открываем новую базу
Set dbs = DBEngine.OpenDatabase(CurrentProject.Path & "\la_form.mdb", , True)
' Отображаем строку подключения
Me.listCon.RowSource = "DAO"
' Закрываем базу
dbs.Close
Set dbs = Nothing
MsgBox "База открыта и закрыта (DAO)!", vbExclamation, "Лидер Access"
End Sub | |