Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Maximilian am Mai 12, 2020, 16:50:40

Titel: Anhänge in Tabelle nur als Verknüpfung
Beitrag von: Maximilian am Mai 12, 2020, 16:50:40
Hallo Zusammen,

habe mal wieder ein Thema, wozu ich wahrscheinlich wieder "krude" Ideen zur Realisierung im Kopf habe. Sehr wahrscheinlich gibt es bessere Lösungen, weshalb ich hier nochmal fragen möchte.
Die Suche habe ich schon ausgereizt und zumindest mit meinen Suchkriterien nur herausbekommen, dass die Umsetzung in Access möglich, aber nicht direkt realisierbar ist.

In meiner Datenbank möchte ich auch Dateianhänge hinzufügen können. Die Datenbank selbst liegt lokal bei mir auf dem PC, die Dateianhänge auf verschiedenen Verzeichnissen in einem Netzwerklaufwerk.
Nun bietet Access ja die Möglichkeit "Anlage". Diese möchte ich allerdings nicht nutzen, da die Anlagen direkt in der Datenbank gespeichert werden und schnell die Datenbank-Größe zum Problem werden lassen. Zudem werden Änderungen der Originaldatei nicht automatisch übernommen.

Mein Ziel ist also eine Lösung, wie ich relativ einfach Datei-Verknüpfungen für mehrere Datensätze verwalten kann (anzeigen, hinzufügen, öffnen, löschen etc.). Wie gehe ich hier am besten vor?

Danke schonmal für eure Tips.
Maximilian
Titel: Re: Anhänge in Tabelle nur als Verknüpfung
Beitrag von: DF6GL am Mai 12, 2020, 17:14:12
Hallo,


Du brauchst ein Konzept für die Verzeichnisstruktur, in der alle beteiligten Dateien abgelegt werden können/müssen.

Als erstees muss die DB in Frontend und Backend aufgeteilt werden.

Das BE (die Backend-Datei) kommt in ein Netzwerkverzeichnis zu liegen, auf das alle User volle Zugriffsrechte besitzen müssen.

Jeder User erhält eine Kopie der Frontend-Datei lokal gespeichert, die vom ihm gestartet wird.

Die Anlagen (verschiedene Dateien)  werden in eine noch zu klärende Verzeichnisstruktur abgelegt, wobei der komplette PfadDateiName als Text in der DB in einer entspr. Tabelle abgelegt wird.  Es sind URL-Pfade , keine Laufwerks-Mappings zu empfehlen.

Bilder können direkt in  einem  Bildsteuerelement angezeigt werden, für andere Dateien (z. B. Docx) und deren Bearbeitung, falls gewünscht, wird die dazu passende Anwendung (hier Word) bemüht.

Das "Verwalten" der Dateien erfolgt in einem Formular, das über einen Filedialog die Dateiauswahl einer abzulegenden Datei  oder das Öffnen von Dateien mit dem entspr. Bearbeitungsprogramm ermöglicht.




Titel: Re: Anhänge in Tabelle nur als Verknüpfung
Beitrag von: Maximilian am Mai 12, 2020, 17:36:59
Das ging ja mal wieder flott  :-*

Zitat von: DF6GL am Mai 12, 2020, 17:14:12
Die Anlagen (verschiedene Dateien)  werden in eine noch zu klärende Verzeichnisstruktur abgelegt, wobei der komplette PfadDateiName als Text in der DB in einer entspr. Tabelle abgelegt wird.  Es sind URL-Pfade , keine Laufwerks-Mappings zu empfehlen.

Auf dem Netzwerklaufwerk ist die Ordnerstruktur leider schon vorgegeben und nicht mit der Systematik der DB komplett übereinstimmend.

Zitat von: DF6GL am Mai 12, 2020, 17:14:12
Das "Verwalten" der Dateien erfolgt in einem Formular, das über einen Filedialog die Dateiauswahl einer abzulegenden Datei  oder das Öffnen von Dateien mit dem entspr. Bearbeitungsprogramm ermöglicht.

Den Filedialog habe ich auch schon gefunden und ausprobiert. Ein separates Formular ist auch schon angelegt. Okay ich sehe gerade, meine Frage ist doch zu allgemein gehalten gewesen.

Bisher habe ich eine Tabelle tblTrafostationen, wo meine eigentlichen Datensätze enthalten sind. Da jeder Datensatz mehrere Anhänge haben kann, habe ich nun eine zweite Tabelle tblAnhänge in Beziehung gesetzt zu tblTrafostationen.
Ein als Popup eingeblendetes Formular frmAnhänge ist mit dem Filedialog bestückt und gibt mir als Rückgabewert den Adresspfad des zu verlinkenden Dateianhangs zurück, den ich in die tblAnhänge schreiben kann. Nur wie bekomme ich von meinem frmAnhänge die Zuordnung zu meinem Datensatz in tblTrafostationen?
Titel: Re: Anhänge in Tabelle nur als Verknüpfung
Beitrag von: DF6GL am Mai 12, 2020, 18:51:00
Hallo,

wenn die Beziehung besteht, dann füge das Form frmAnhänge als Unterformular in Form frmTrafostationen ein und verknüpfe das UFO-Steuerelement über die Schlüsselfelder.


ZitatAuf dem Netzwerklaufwerk ist die Ordnerstruktur leider schon vorgegeben und nicht mit der Systematik der DB komplett übereinstimmend.

Das ist auch nicht zwingend notwendig, es würde aber die Bedienbarkeit und Transparenz der DB verbessern.

Titel: Re: Anhänge in Tabelle nur als Verknüpfung
Beitrag von: Beaker s.a. am Mai 12, 2020, 19:38:56
Hallo Maximilian,
Ich würde auch Franz' Vorschlag mit dem UFo so umsetzen,
da du alle Anlagen auf einen Blick siehst. Möchte dir aber
zeigen, wie du das auch mit einem PopUp machen kannst.
Das PopUp hat als DS-Herkunft die Tabelle "tblAnhaenge"
mit dem Fremdschlüssel zu "tblTrafostationen" (TrafoID_F)
Das PupUp öffnest du vom Form mit den Stationen
DoCmd.OpenForm _
    FormName:="NameDeinesPopups", _
    DataMode:=acFormAdd, _
    WindowMode:=acDialog, _
    OpenArgs:=Me.TrafoID


Im PopUp hast du zwei Möglichkeiten den Wert in OpenArgs
zu verarbeiten
Private Sub Form_Load()
'1. bietet sich an wenn nur eine Anlage dazu kommt
    Me.txtTrafoID_F = Val(Me.OpenArgs)
'OpenArgs gibt immer einen String zurück, die ID ist aber vom Typ Long

2. wenn mehrere Anlagen hintereinander zugeordnet werden sollen
    Me.txtTrafoID_F.DefaultValue = Val(Me.OpenArgs)
End Sub

Me.txtTrafoID_F ist an den FK gebunden.

gruss ekkehard
Titel: Re: Anhänge in Tabelle nur als Verknüpfung
Beitrag von: Maximilian am Mai 13, 2020, 13:55:23
Zitat von: DF6GL am Mai 12, 2020, 18:51:00
wenn die Beziehung besteht, dann füge das Form frmAnhänge als Unterformular in Form frmTrafostationen ein und verknüpfe das UFO-Steuerelement über die Schlüsselfelder.
Stimmt das würde gehen, habe nur keinen Platz mehr für ein UFO  :(

@ekkehard: Top, das OpenArgs ist genau das was ich gesucht habe, danke. Können über OpenArgs auch zwei Argumente übergeben werden?
Titel: Re: Anhänge in Tabelle nur als Verknüpfung
Beitrag von: DF6GL am Mai 13, 2020, 14:05:10
Hallo,

Du kannst einen beliebigen String als Openargs "übergeben", z. B. eine Liste von Kriterien-Werten.

Du musst nur dafür sorgen, dass der String wieder korrekt im Form-Open-, bzw. Form-Load-Ereignis aufgesplittet wird.
Titel: Re: Anhänge in Tabelle nur als Verknüpfung
Beitrag von: Maximilian am Mai 14, 2020, 10:18:30
Okay, verstehe. Das Zusammenfügen meiner zu übergebenen Kriterien ist klar, einfach die Strings mit einem Trennzeichen zusammenfügen.
Nur wie bekomme ich die Kriterien wieder separiert, oder anders gefragt: Wie trenne ich den übergebenen String am gesetzten Trennzeichen wieder auf?
Titel: Re: Anhänge in Tabelle nur als Verknüpfung
Beitrag von: Maximilian am Mai 14, 2020, 11:20:27
Für alle die eventuell mitlesen als Info:
Eine Lösung die ich nun gefunden habe ist die in VBA enthaltene Funktion split()

https://docs.microsoft.com/de-DE/office/vba/Language/Reference/User-Interface-Help/split-function (https://docs.microsoft.com/de-DE/office/vba/Language/Reference/User-Interface-Help/split-function)
Titel: Re: Anhänge in Tabelle nur als Verknüpfung
Beitrag von: DF6GL am Mai 14, 2020, 12:25:22
Hallo,

habe ich geschrieben:

Zitatbzw. Form-Load-Ereignis aufgesplittet wird.