Dezember 05, 2021, 05:52:05

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Individuelle PDFs mit Datenbankeinträgen verknüpfen

Begonnen von VVP, Oktober 20, 2021, 13:37:25

⏪ vorheriges - nächstes ⏩

VVP

Hallo,
ich bin absoluter Access Neuling. Ich habe eine Datenbank erstellt, in der Datenblätter zu Personen abgespeichert werden. Also immer ein Eintrag pro Person. Nun möchte ich, wenn ich im Formular bin, die Möglichkeiten haben auf den Dateibrowser zuzugreifen und durch Ordner navigieren zu können, um dann das zur Person zugehörige PDF auswählen zu können, das mit dem jeweiligen Eintrag/der Person verknüpft werden soll. So dass dann am Ende im Formular dauerhaft die Verknüpfung zu diesem PDF besteht (ich möchte es nicht IN der DB speichern, es soll ein Link sein).
Hilfe hilfe... habe schon das Forum durchforstet aber verstehe die Antworten bei ähnlichen Fragen leider nicht ansatzweise, habe noch nie mit Links gearbeitet in Access.
Eine Anleitung für Dummys wäre also grandios.
Vielen Dank!

ebs17

Verwende in Deinem Datensatz ein Feld vom Typ Text, nicht Hyperlink.
In dieses Feld wird jeweils der komplette Pfad (Pfad + Dateiname + Endung) eingetragen.

Application.FollowHyperlink Me.txtFullPathOfFileSo etwas könntest Du in die Ereignisprozedur eines Schaltflächenklicks oder eines Doppelklicks auf das Textfeld legen. Das würde unmittelbar zum Öffnen der Datei führen, ohne alles suchen.

Wenn im Textfeld nur ein Verzeichnis angegeben ist, wird mit der gleichen Anweisung der Explorer mit diesem Verzeichnis geöffnet. Dann kann man selbständig weiternavigieren.

Etwas anwendungssicherer wäre statt FollowHyperlink ShellExecute (Win-API).
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

Hallo,
@Eberhard
Ich glaube seine Frage bezieht sich auf deinen zweiten Satz,
also das Eintragen des Pfades. Da ist dann deine Codezeile
für ihn zunächst eher verwirrend. Damit wird die hinterlegte
Datei ja nur geöffnet.

@VVP
Der erste Satz von Eberhard ist essentiell, will sagen, dass
das der übliche Weg ist, weil ein Textfeld leichter zu handeln
ist als eins vom Typ "Hyperlink".
Zitathabe schon das Forum durchforstet aber verstehe die Antworten bei ähnlichen Fragen leider nicht ansatzweise,
Was hast du denn gefunden, und wo hakt es dabei?
Das entscheidende Stichwort heisst "FileSystemObjekt". Falls es
das ist, was dir Probleme bereitet, hier ein Beispiel.
Du brauchst zunächst ein allgemeines Modul (bei mir heisst das
"Dateiauswahl") mit folgendem Code
Option Explicit
Private m_FileSystemObject As Object
_______________________________________________________________________

Public Function GetFSO() As Object
'diese Function stellt das Objekt zur Verfügung
    If m_FileSystemObject Is Nothing Then
'wenn kein Objekt existiert, ...
        Set m_FileSystemObject = CreateObject("Scripting.FilesystemObject")
'... neu anlegen und in der Variablen speichern
    End If
    Set GetFSO = m_FileSystemObject
'gibt das Objekt aus der Variablen an die aufrufende Prozedur (s.u.) zurück
End Function

Public Function GetFileName() As String
'öffnet den Datei-Explorer, ...
    Dim FDO As Object
    Set FDO = Application.FileDialog(3)     'msoFileDialogFilePicker
    With FDO
        .AllowMultiSelect = False
        .InitialFileName = "EinVoreingestellterPfad"
        .Title = "neue Importdatei auswählen"
        If .Show = True Then
            GetFileName = .SelectedItems(1)
'... und gibt den ausgewählten Dateinamen (-pfad) zurück
'beim Aufruf (s.u.) muss auf einen Abbruch durch den Anw. reagiert werden
        End If
    End With
End Function
Auf deinem Formular platzierst du neben das o.a. Textfeld einen Button
mit diesem Code
Private Sub DeinButton_OnClick()
    If Nz(GetFileName,"") = "" Then   's.o.
        MsgBox "Keine Datei ausgewählt!"
        Exit Sub
    Else
        Me.txtFullPathOfFile = GetFileName
    End If
End Sub
Zum Öffnen der Datei nimmst du dann Eberhards Codezeile beim Klick auf
das Textfeld
If Nz(Me.txtFullPathOfFile,"") = "" Then
'falls das Feld noch leer ist
    Exit Sub
Else
    Application.FollowHyperlink Me.txtFullPathOfFile
End If

gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

ebs17

@ekkehard: Die Fragestellung ist eh noch sehr offen.
ZitatDatenbank erstellt, in der Datenblätter zu Personen abgespeichert werden
Wenn die Erstellung der Datenblätter-PDFs direkt aus der Anwendung erfolgt, hätte man jeweils schon den Pfad und müsste nicht erst einen Dateiauswahldialog einsetzen. Als Option ist der Dialog (Datei/Verzeichnis) immer sinnvoll.
Mit freundlichem Glück Auf!

Eberhard