Jak używać interfejsu API wspólnego okna dialogowego w bazie danych programu Access 2003 lub Access 2007

Oryginalny numer KB: 888695

WPROWADZENIE

W tym artykule opisano sposób używania interfejsu API wspólnego okna dialogowego w programie Microsoft Office Access 2003 lub Microsoft Office Access 2007 w celu zastąpienia funkcji wspólnego okna dialogowego. Ta funkcja jest dostępna tylko w wersji Microsoft Office 2000 Developer Edition lub Microsoft Office XP Developer Edition.

Firma Microsoft podaje przykłady programowania tylko dla celów ilustracyjnych, nie udzielając żadnej rękojmi, wyrażonej wprost ani dorozumianej, w tym także, ale nie tylko, dorozumianej rękojmi co do przydatności handlowej lub do określonych celów. W tym artykule zakłada się, że czytelnik zna demonstrowany język programowania oraz narzędzia używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać żadnych funkcji i konstruować nowych procedur w celu dostosowania ich do określonych potrzeb użytkownika.

Kroki zastępowania funkcji wspólnego okna dialogowego

Microsoft Office Access 2003

  1. W programie Access otwórz przykładową bazę danych o nazwie Northwind.mdb.

    Uwaga

    Baza danych Northwind.mdb programu Access 2003 zwykle znajduje się w folderze C:\Program Files\Microsoft Office\OFFICE11\Samples .

  2. W obszarze Obiekty w oknie Baza danych Northwind kliknij pozycję Formularze .

  3. Na pasku narzędzi okna Baza danych kliknij pozycję Nowy.

  4. W oknie dialogowym Nowy formularz kliknij pozycję Widok projektu, a następnie kliknij przycisk OK.

  5. Dodaj pole tekstowe do formularza Form1, kliknij prawym przyciskiem myszy pole tekstowe, a następnie kliknij pozycję Właściwości.

  6. Kliknij kartę Wszystkie , kliknij pozycję Nazwa, wpiszTekst1, a następnie zamknij okno dialogowe Właściwości .

  7. Kliknij prawym przyciskiem myszy kontrolkę etykiety skojarzoną z polem tekstowym Text1 , kliknij pozycję Właściwości, a następnie kliknij kartę Wszystkie .

  8. Kliknij pozycję Podpis, wpisz Tekst1, a następnie zamknij okno dialogowe Właściwości .

  9. Dodaj przycisk polecenia do formularza Form1, kliknij prawym przyciskiem myszy przycisk polecenia, kliknij pozycję Właściwości, kliknij pozycję Nazwa, wpisz polecenie Command1, kliknij pozycję Podpis, a następnie wpisz polecenie Command1.

  10. Kliknij kartę Zdarzenie, kliknij pozycję [Procedura zdarzeń]na liście Kliknięcie, a następnie kliknij przycisk wielokropka, aby uruchomić Redaktor Microsoft Visual Basic.

  11. Zmodyfikuj kod w procedurze Command1_Click na następujące:

    Private Sub Command1_Click()
     Me!Text1 = LaunchCD(Me)
    End Sub
    
  12. W menu Wstawianie kliknij pozycję Moduł, a następnie wstaw następujący kod do modułu 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. W menu Debugowanie kliknij pozycję Kompiluj aplikację Northwind, a następnie zamknij Redaktor Visual Basic.

  14. W menu Widok kliknij pozycję Widok formularza.

  15. Kliknij pozycję Command1, a następnie kliknij plik w otwieranym oknie.

    Ścieżka pliku zostanie wyświetlona w polu tekstowym Text1 .

Microsoft Office Access 2007

  1. W programie Access 2007 otwórz przykładową bazę danych o nazwie Northwind.accdb.

  2. Na karcie Tworzenie kliknij pozycję Formularz w grupie Formularze .

  3. Na karcie Format kliknij strzałkę w dół poniżej pozycji Widok, a następnie kliknij pozycję Widok projektu.

  4. Dodaj pole tekstowe do formularza Form1, kliknij prawym przyciskiem myszy pole tekstowe, a następnie kliknij pozycję Właściwości.

  5. Kliknij kartę Wszystkie , kliknij pozycję Nazwa, a następnie wpisz Tekst1.

  6. Kliknij prawym przyciskiem myszy kontrolkę etykiety skojarzoną z polem tekstowym Text1 , kliknij pozycję Właściwości, a następnie kliknij kartę Wszystkie .

  7. Kliknij pozycję Podpis, a następnie wpisz Tekst1.

  8. Dodaj przycisk polecenia do formularza Form1, kliknij prawym przyciskiem myszy przycisk polecenia, kliknij pozycję Właściwości, kliknij pozycję Nazwa, wpisz polecenie Command1, kliknij pozycję Podpis, a następnie wpisz polecenie Command1.

  9. Kliknij kartę Zdarzenie, kliknij pozycję [Procedura zdarzeń]na liście Kliknięcie, a następnie kliknij przycisk wielokropka (...), aby uruchomić Redaktor Programu Microsoft Visual Basic.

  10. Zmodyfikuj kod w procedurze Command1_Click, aby przypominał poniższy przykład kodu.

    Private Sub Command1_Click()
     Me!Text1 = LaunchCD(Me)
    End Sub
    
  11. W menu Wstaw kliknij pozycję Moduł, a następnie wstaw kod podobny do poniższego przykładu kodu w module 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. W menu Debugowanie kliknij pozycję Kompiluj aplikację Northwind, a następnie zamknij Redaktor Visual Basic.

  13. Na karcie Format kliknij strzałkę w dół poniżej pozycji Widok, a następnie kliknij pozycję Widok formularza.

  14. Kliknij pozycję Command1, a następnie kliknij plik w otwieranym oknie.

    Ścieżka pliku zostanie wyświetlona w polu Text1 .