MyTetra Share
Делитесь знаниями!
063. Открытие базы данных разными методами
Время создания: 16.03.2019 23:43
Раздел: !Закладки - VBA - Access - leadersoft.ru
Запись: xintrea/mytetra_db_adgaver_new/master/base/1531373600zhx6jnizm3/text.html на raw.githubusercontent.com

02. В этом примере показаны два разных метода открытия базы данных через ADO, DAO и использование файла udl

Все примеры Microsoft Access
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

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования