Использование API common Dialog в базе данных в Access 2003 или Access 2007

Исходный номер базы знаний: 888695

ВВЕДЕНИЕ

В этой статье описывается, как использовать API common dialog в Microsoft Office Access 2003 или Microsoft Office Access 2007 для замены функций общего диалогового окна. Эта функция включена только в выпуск Microsoft Office 2000 developer или Microsoft Office XP Developer Edition.

Корпорация Майкрософт предоставляет примеры программирования только в целях демонстрации без явной или подразумеваемой гарантии. Данное положение включает, но не ограничивается этим, подразумеваемые гарантии товарной пригодности или соответствия отдельной задаче. Эта статья предполагает, что пользователь знаком с представленным языком программирования и средствами, используемыми для создания и отладки процедур. Специалисты технической поддержки Майкрософт могут пояснить работу той или иной процедуры, но модификация примеров и их адаптация к задачам разработчика не предусмотрена.

Действия по замене функции "Общий диалог"

Microsoft Office Access 2003

  1. В Access откройте пример базы данных с именем Northwind.mdb.

    Примечание.

    База данных Northwind.mdb для Access 2003 обычно находится в папке C:\Program Files\Microsoft Office\OFFICE11\Samples .

  2. В разделе Объекты в окне Базы данных Northwind щелкните Формы .

  3. На панели инструментов окна База данных нажмите кнопку Создать.

  4. В диалоговом окне Создать форму щелкните Конструктор, а затем нажмите кнопку ОК.

  5. Добавьте текстовое поле в Form1, щелкните его правой кнопкой мыши и выберите пункт Свойства.

  6. Перейдите на вкладку Все , щелкните Имя, введитеText1 и закройте диалоговое окно Свойства .

  7. Щелкните правой кнопкой мыши элемент управления меткой, связанный с текстовым полем Text1 , выберите пункт Свойства и перейдите на вкладку Все .

  8. Щелкните Заголовок, введите Текст1 и закройте диалоговое окно Свойства .

  9. Добавьте кнопку команды в Form1, щелкните ее правой кнопкой мыши, выберите пункт Свойства, выберите имя, введите Command1, выберите пункт Заголовок, а затем введите Command1.

  10. Перейдите на вкладку Событие, щелкните [Процедура события] в списке On Click (Щелкните), а затем нажмите кнопку с многоточием, чтобы запустить Редактор Microsoft Visual Basic.

  11. Измените код в процедуре Command1_Click следующим образом:

    Private Sub Command1_Click()
     Me!Text1 = LaunchCD(Me)
    End Sub
    
  12. В меню Вставка выберите модуль и вставьте следующий код в Module1:

    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
    "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
    
    Private Type OPENFILENAME
     lStructSize As Long
     hwndOwner As Long
     hInstance As Long
     lpstrFilter As String
     lpstrCustomFilter As String
     nMaxCustFilter As Long
     nFilterIndex As Long
     lpstrFile As String
     nMaxFile As Long
     lpstrFileTitle As String
     nMaxFileTitle As Long
     lpstrInitialDir As String
     lpstrTitle As String
     flags As Long
     nFileOffset As Integer
     nFileExtension As Integer
     lpstrDefExt As String
     lCustData As Long
     lpfnHook As Long
     lpTemplateName As String
    End Type
    
    Function LaunchCD(strform As Form) As String
     Dim OpenFile As OPENFILENAME
     Dim lReturn As Long
     Dim sFilter As String
     OpenFile.lStructSize = Len(OpenFile)
     OpenFile.hwndOwner = strform.hwnd
     sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
      "JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
     OpenFile.lpstrFilter = sFilter
     OpenFile.nFilterIndex = 1
     OpenFile.lpstrFile = String(257, 0)
     OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
     OpenFile.lpstrFileTitle = OpenFile.lpstrFile
     OpenFile.nMaxFileTitle = OpenFile.nMaxFile
     OpenFile.lpstrInitialDir = "C:\"
     OpenFile.lpstrTitle = "Select a file using the Common Dialog DLL"
     OpenFile.flags = 0
     lReturn = GetOpenFileName(OpenFile)
        If lReturn = 0 Then
            MsgBox "A file was not selected!", vbInformation, _ 
              "Select a file using the Common Dialog DLL"
         Else
            LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1))
         End If
    End Function
    
  13. В меню Отладка выберите команду Скомпилировать Northwind и закройте Редактор Visual Basic.

  14. В меню Вид выберите пункт Представление формы.

  15. Щелкните Command1 и щелкните файл в открывавшемся окне.

    Путь к файлу отображается в текстовом поле Text1 .

Microsoft Office Access 2007

  1. В Access 2007 откройте пример базы данных с именем Northwind.accdb.

  2. На вкладке Создать щелкните Форма в группе Формы .

  3. На вкладке Формат щелкните стрелку вниз под представлением и выберите конструктор.

  4. Добавьте текстовое поле в Form1, щелкните его правой кнопкой мыши и выберите пункт Свойства.

  5. Перейдите на вкладку Все , щелкните Имя и введите Text1.

  6. Щелкните правой кнопкой мыши элемент управления меткой, связанный с текстовым полем Text1 , выберите пункт Свойства и перейдите на вкладку Все .

  7. Щелкните Заголовок и введите Text1.

  8. Добавьте кнопку команды в Form1, щелкните ее правой кнопкой мыши, выберите пункт Свойства, выберите имя, введите Command1, выберите пункт Заголовок, а затем введите Command1.

  9. Перейдите на вкладку Событие, щелкните [Процедура события] в списке On Click (On Click), а затем нажмите кнопку с многоточием (...), чтобы запустить microsoft Visual Basic Редактор.

  10. Измените код в процедуре Command1_Click так, чтобы он выглядел так, как показано в следующем примере кода.

    Private Sub Command1_Click()
     Me!Text1 = LaunchCD(Me)
    End Sub
    
  11. В меню Вставка выберите пункт Модуль, а затем вставьте код, похожий на приведенный ниже пример кода, в Module1.

    Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
    "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
    
    Private Type OPENFILENAME
     lStructSize As Long
     hwndOwner As Long
     hInstance As Long
     lpstrFilter As String
     lpstrCustomFilter As String
     nMaxCustFilter As Long
     nFilterIndex As Long
     lpstrFile As String
     nMaxFile As Long
     lpstrFileTitle As String
     nMaxFileTitle As Long
     lpstrInitialDir As String
     lpstrTitle As String
     flags As Long
     nFileOffset As Integer
     nFileExtension As Integer
     lpstrDefExt As String
     lCustData As Long
     lpfnHook As Long
     lpTemplateName As String
    End Type
    
    Function LaunchCD(strform As Form) As String
     Dim OpenFile As OPENFILENAME
     Dim lReturn As Long
     Dim sFilter As String
     OpenFile.lStructSize = Len(OpenFile)
     OpenFile.hwndOwner = strform.hwnd
     sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
      "JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
     OpenFile.lpstrFilter = sFilter
     OpenFile.nFilterIndex = 1
     OpenFile.lpstrFile = String(257, 0)
     OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
     OpenFile.lpstrFileTitle = OpenFile.lpstrFile
     OpenFile.nMaxFileTitle = OpenFile.nMaxFile
     OpenFile.lpstrInitialDir = "C:\"
     OpenFile.lpstrTitle = "Select a file using the Common Dialog DLL"
     OpenFile.flags = 0
     lReturn = GetOpenFileName(OpenFile)
        If lReturn = 0 Then
            MsgBox "A file was not selected!", vbInformation, _ 
              "Select a file using the Common Dialog DLL"
         Else
            LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1)) 
         End If
    End Function
    
  12. В меню Отладка выберите команду Скомпилировать Northwind и закройте Редактор Visual Basic.

  13. На вкладке Формат щелкните стрелку вниз под представлением и выберите пункт Представление формы.

  14. Щелкните Command1 и щелкните файл в открывавшемся окне.

    Путь к файлу отображается в поле Текст1 .