Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Traut91 am März 10, 2015, 14:21:21

Titel: Letzten Dataipfad merken
Beitrag von: Traut91 am März 10, 2015, 14:21:21
Hallöchen.

In meinem Formular verwende ich ein Feld, in dem ich per Button je Datensatz einen Dateipfad suchen und eintragen lassen kann.

Bei dem Dialogfeld zum Suchen der Dateien öffnet sich immer der Pfad zur aktuellen Datenbank.

Gibt es irgendwie die Möglichkeit das so einzustellen, dass immer der zuletzt verwendete Pfad standardmäßig geöffnet wird?
Titel: Re: Letzten Dataipfad merken
Beitrag von: DF6GL am März 10, 2015, 14:42:49
Hallo,

ja, die Möglichkeit gibt es....   Zeig mal den Code, der beim Button-Klick ausgeführt wird und die Tabelle mit ihren Feldern, in der der Dateipfad gespeichert wird.
Titel: Re: Letzten Dataipfad merken
Beitrag von: Traut91 am März 11, 2015, 11:59:00
Also da geb ich mal alles her was ich dazu habe. Ich muss anmerken, dass ich den Code dazu aus einer Beispieldatenbank habe:

Folgendes steht im Code des Moduls:
Option Compare Database
Option Explicit

Public Function DateiAuswahl() As String
    Dim strFile As String
    WizHook.Key = 51488399
    Call WizHook.GetFileName(Application.hWndAccessApp, "Microsoft Access", "Datei öffnen", "Öffnen", strFile, CurrentProject.Path, "Access-Datenbanken (*.mdb,*.accdb)", 0, 0, 0, False)
    Debug.Print strFile
End Function

Public Function DateiAuswaehlen() As String
    Dim strFile As String
    Dim lngHwndOwner As Long
    Dim strDlgTitle As String
    Dim strOpenTitle As String
    Dim strInitialDir As String
    Dim strFilter As String
    Dim lngFilterIndex As Long
    Dim lngView As Long
    Dim lngFlags As Long
    Dim bolFOpen As Boolean
   
    lngHwndOwner = Application.hWndAccessApp
    strDlgTitle = "Datei auswählen"
    strOpenTitle = "Öffnen"
    strInitialDir = CurrentProject.Path
    strFilter = "Access-Datenbanken (*.mdb,*.accdb)"
    lngFilterIndex = 0
    lngView = 0
    lngFlags = 0
    bolFOpen = False
   
    WizHook.Key = 51488399
    Call WizHook.GetFileName(lngHwndOwner, "Microsoft Access", strDlgTitle, strOpenTitle, strFile, strInitialDir, strFilter, lngFilterIndex, lngView, lngFlags, bolFOpen)
    DateiAuswaehlen = strFile
End Function

Public Function OrdnerAuswaehlen() As String
    Dim strFile As String
    Dim lngHwndOwner As Long
    Dim strDlgTitle As String
    Dim strOpenTitle As String
    Dim strInitialDir As String
    Dim strFilter As String
    Dim lngFilterIndex As Long
    Dim lngView As Long
    Dim lngFlags As Long
    Dim bolFOpen As Boolean
   
    lngHwndOwner = Application.hWndAccessApp
    strDlgTitle = "Ordner auswählen"
    strOpenTitle = "Auswählen"
    strInitialDir = CurrentProject.Path
    strFilter = ""
    lngFilterIndex = 0
    lngView = 0
    lngFlags = 32
    bolFOpen = True
   
    WizHook.Key = 51488399
    Call WizHook.GetFileName(lngHwndOwner, "Microsoft Access", strDlgTitle, strOpenTitle, strFile, strInitialDir, strFilter, lngFilterIndex, lngView, lngFlags, bolFOpen)
    OrdnerAuswaehlen = strFile
End Function

Public Function BildAuswaehlen() As String
    Dim strFile As String
    Dim lngHwndOwner As Long
    Dim strDlgTitle As String
    Dim strOpenTitle As String
    Dim strInitialDir As String
    Dim strFilter As String
    Dim lngFilterIndex As Long
    Dim lngView As Long
    Dim lngFlags As Long
    Dim bolFOpen As Boolean
   
    lngHwndOwner = Application.hWndAccessApp
    strDlgTitle = "Bilder auswählen"
    strOpenTitle = "Auswählen"
'    strInitialDir = CurrentProject.Path
    strInitialDir = "C:\Daten\ToolsUndCo\icons_VCollections\All256"
    strFilter = "Bilddateien (*.jpg;*.jpeg;*.png;*.bmp;*.gif;*.tif)|Alle Dateien (*.*)"
    lngFilterIndex = 0
    lngView = 4
    lngFlags = 64
    bolFOpen = True
   
    WizHook.Key = 51488399
    Call WizHook.GetFileName2(lngHwndOwner, "Microsoft Access", strDlgTitle, strOpenTitle, strFile, strInitialDir, strFilter, lngFilterIndex, lngView, lngFlags, bolFOpen, False)
    BildAuswaehlen = strFile
End Function

Public Function DatenbankAuswaehlen() As String
    Dim strFile As String
    Dim lngHwndOwner As Long
    Dim strDlgTitle As String
    Dim strOpenTitle As String
    Dim strInitialDir As String
    Dim strFilter As String
    Dim lngFilterIndex As Long
    Dim lngView As Long
    Dim lngFlags As Long
    Dim bolFOpen As Boolean
   
    lngHwndOwner = Application.hWndAccessApp
    strDlgTitle = "Datenbank auswählen"
    strOpenTitle = "Auswählen"
    strInitialDir = CurrentProject.Path
    strFilter = "Access-Dateien (*.mdb;*.accdb)|Kompilierte Dateien (*.mde;*.accde)|Add-Ins (*.mda;*.accda)|Alle Dateien (*.*)"
    lngFilterIndex = 0
    lngView = 5
    lngFlags = 64
    bolFOpen = True
   
    WizHook.Key = 51488399
    Call WizHook.GetFileName(lngHwndOwner, "Microsoft Access", strDlgTitle, strOpenTitle, strFile, strInitialDir, strFilter, lngFilterIndex, lngView, lngFlags, bolFOpen)
    DatenbankAuswaehlen = strFile
End Function

Public Sub Filepath()
    Dim strFilepath As String
    strFilepath = "Acwzmain.mde"
    WizHook.Key = 51488399
    Debug.Print WizHook.AccessWizFilePath(strFilepath)
End Sub


Code des Buttons:
Private Sub Befehl2390_Click()
Me!txt_dateilink = OrdnerAuswaehlen
End Sub

Tabellenname: tbl_mastertabelle
Tabellenfeld wo der Link eingetragen wird: txt_dateilink
Titel: Re: Letzten Dataipfad merken
Beitrag von: MaggieMay am März 11, 2015, 13:03:21
Hallo,
ZitatGibt es irgendwie die Möglichkeit das so einzustellen, dass immer der zuletzt verwendete Pfad standardmäßig geöffnet wird?
die einzige Möglichkeit die ich da sehe wäre, jeweils den letzten Pfad in einer Hilfstabelle zu speichern.
Titel: Re: Letzten Dataipfad merken
Beitrag von: daolix am März 11, 2015, 14:50:48
Hallo hier mal ein Vorschlag wie deine Funktion OrdnerAuswaehlen das Dialogfenster mit dem letzen Path startet. Funktioniert aber nur innerhalb der Laufzeit der Datenbank.
Option Compare Database
Option Explicit

[color=green]Private m_sPath As String[/color]

Public Function OrdnerAuswaehlen() As String
    Dim strFile As String
    Dim lngHwndOwner As Long
    Dim strDlgTitle As String
    Dim strOpenTitle As String
    Dim strInitialDir As String
    Dim strFilter As String
    Dim lngFilterIndex As Long
    Dim lngView As Long
    Dim lngFlags As Long
    Dim bolFOpen As Boolean
   
    lngHwndOwner = Application.hWndAccessApp
    strDlgTitle = "Ordner auswählen"
    strOpenTitle = "Auswählen"
    [color=orange]strInitialDir = IIf(Len(m_sPath), m_sPath, CurrentProject.Path)[/color]
    strFilter = ""
    lngFilterIndex = 0
    lngView = 0
    lngFlags = 32
    bolFOpen = True
   
    WizHook.Key = 51488399
    Call WizHook.GetFileName(lngHwndOwner, "Microsoft Access", strDlgTitle, strOpenTitle, strFile, strInitialDir, strFilter, lngFilterIndex, lngView, lngFlags, bolFOpen)
    OrdnerAuswaehlen = strFile
   
   [color=green] If Len(strFile) Then m_sPath = strFile[/color]
End Function

Die anderen Funktionen sind ähnlich anzupassen, nur müsste hier u.U. der Dateiname abgeschitten werden.
Titel: Re: Letzten Dataipfad merken
Beitrag von: Traut91 am März 12, 2015, 10:09:59
Vielen Dank Daolix. Es funktioniert bestens :)