Acc'97 'Datei öffnen'-Fenster

Hi Ihr!

In meiner Datenbank gehört zu jedem Datensatz ein Link auf ein Bild. Beim Eintragen neuer DS möchte ich gerne, daß ein Windows-Datei öffnen-Fenster erscheint, und ich darin dann den Pfad meines Bildes raussuchen kann. Wie kann ich das in Access realisieren? Geht es überhaupt?
Vielen Dank schonmal,

Gruß Claudia

Hallo, das geht schon. Dazu muss aber auf DLLs zurückgegriffen werden.

Im Deklarationsteile eines VB-Moduls muss folgendes eingetragen werden:

Declare Function GetOpenFileName Lib „comdlg32.dll“ Alias „GetOpenFileNameA“ (pOpenfilename As OPENFILENAME) As Boolean
Declare Function GetSaveFileName Lib „comdlg32.dll“ Alias „GetSaveFileNameA“ (pOpenfilename As OPENFILENAME) As Boolean

Type MSA_OPENFILENAME
’ Filterzeichenfolge, die für die Filter des Dialogfeldes
’ Datei Öffnen gebraucht wird. Benutzt MSA_CreateFilterString()
’ Standard = Alle Dateien, *.*
strFilter As String
’ Anfänglich angezeigter Filter
’ Standard = 1
lngFilterIndex As Long
’ Verzeichnis, in dem das Dialogfeld anfänglich sucht.
’ Standard = Aktuelles Arbeitsverzeichnis
strInitialDir As String
’ Dateiname, der anfänglich im Dialogfeld angezeigt wird.
’ Standard = „“.
strInitialFile As String
strDialogTitle As String
’ Standard-Erweiterung, die an den Dateinamen angehängt wird,
’ wenn der Benutzer keine angibt.
’ Standard = Systemwerte (Datei öffnen, Datei speichern)
strDefaultExtension As String
’ Zu verwendende Attribute (siehe Konstantenliste).
’ Standard = keine Attribute
lngFlags As Long
’ Kompletter Verzeichnispfad der gewählten Datei. Wenn der
’ Benutzer bei OpenFile eine nicht existierende Datei gewählt
’ hat, wird nur der Text im Feld „Dateiname“ zurückgegeben.
strFullPathReturned As String
’ Name der gewählten Datei.
strFileNameReturned As String
’ Offset im kompletten Pfad (strFullPathReturned), an dem
’ der Dateiname (strFileNameReturned) beginnt.
intFileOffset As Integer
’ Offset im kompletten Pfad (strFullPathReturned), an dem die
’ Dateinamenerweiterung beginnt.
intFileExtension As Integer
End Type

Const ALLFILES = „Alle Dateien“

Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As Long
nMaxCustrFilter 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
lCustrData As Long
lpfnHook As Long
lpTemplateName As Long
End Type

Const OFN_ALLOWMULTISELECT = &H200
Const OFN_CREATEPROMPT = &H2000
Const OFN_EXPLORER = &H80000
Const OFN_FILEMUSTEXIST = &H1000
Const OFN_HIDEREADONLY = &H4
Const OFN_NOCHANGEDIR = &H8
Const OFN_NODEREFERENCELINKS = &H100000
Const OFN_NONETWORKBUTTON = &H20000
Const OFN_NOREADONLYRETURN = &H8000
Const OFN_NOVALIDATE = &H100
Const OFN_OVERWRITEPROMPT = &H2
Const OFN_PATHMUSTEXIST = &H800
Const OFN_READONLY = &H1
Const OFN_SHOWHELP = &H10

In der Funktion/Prozedur geht das dann mit folgendem Aufruf:

Dim msaof As MSA_OPENFILENAME

’ Legt die Optionen des Dialogfelds fest.
msaof.strDialogTitle = „Suche das Bild“
msaof.strInitialDir = strSearchPath
msaof.strFilter = MSA_CreateFilterString(„Bilder“, „*.bmp“)

’ Ruft die Dialog-Routine Datei öffnen auf.
MSA_GetOpenFileName msaof

Den Dateinamen inkl. Pfad bekommt man dann über
msaof.strFullPathReturned

Dirk

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]