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
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.
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?
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.
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
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?
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.
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?
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)
Hallo,
habe ich geschrieben:
Zitatbzw. Form-Load-Ereignis aufgesplittet wird.