MS Access Datenbank

Hallo Community,
ich habe ca. 400 Einzeln-Formularen mit entsprechender Unterformular; 1 pro Vereinsmitglied.
Nun würde ich gerne ein Steuerelement (als Taste) in das Unterformular setzen, das den zugehörige Datei-Ordner (wo Fotos und Dokumentation gespeichert sind) geöffnet wird.
Schön wäre auch wenn durch VBA erstmal einmalig die gesamte Mitglieder ein Ordner bekämen.
Ich bedanke mich im Voraus für eure Hilfe.
Vielen Dank
Dori

Moin,

in Access-Foren wie https://www.ms-office-forum.net/ oder https://www.access-o-mania.de/ wird gern Hilfe zur Selbsthilfe geleistet. Dein Vorhaben geht darüber weit hinaus, die meisten Foren bieten aber auch eine Jobbörse.

Gruß
Ralf

Ok,
vielen dank. Ich dachte nicht, dass es so aufwändig gewesen wäre.
:slight_smile:

So wie ich das sehe, ist Deine Datenbank ziemlich verkorkst - für jedes Mitgleid 1 Formular klingt abenteuerlich, vielleicht fehlt’s aber nur an der Nomenklatur. Schleich Dich in ein Forum Deiner Wahl ein, dort kannst Du die Db zeigen und zur Diskussion stellen.

Gruß
Ralf

Hallo drambeldier,
nein meine DB ist nicht verkorkst, im Gegenteil…
Soll ich dann die einzelne Formulare in Dateikarte umbenennen damit dieses Missverständnis aus der Welt ist?
Ich habe also eine Dateikarte mit Unterformular; und im Unterformular wollte ich einen Link zum Jeweiligen ID einbetten.
Ich habe schon etwas gefunden, aberrund läuft es noch nicht. :slight_smile:

Schwierig … Was ist denn eine Dateikarte? Das ist auch kein Begriff aus dem Bereich Datenbanken. Was @drambeldier mit

meinte, waren sicherlich Datenbankbegriffe, aber keine erfundenen Begriffe. :slight_smile:
Formular ist durchaus ein verständlicher Begriff im Zusammenhang mit Access, die Frage ist, ob du wirklich Formulare meinst, und wenn ja, ob sich das nicht geschickter als mit

realisieren lässt.

Und überhaupt, weil mir das nicht klar ist: meinst du jetzt 400 Einzelformulare mit jeweils einem Unterformular pro Vereinsmitglied, oder 400 Einzelformulare, 1 pro Vereinsmitglied mit jeweils einem Unterformular?

Gruß
Christa

Hallo Christa,
ich versuche es nochmal.
Ich habe eine Tabelle mit 400 Datensätze (Tab_Mitglieder), die die Mitglieder erfassen. In der Tabelle sind Geburtstagsdatum, und…und…und…erfasst.
Dann gibt es andere Tabellen die sich über Fremdschlüsseln auf die Mitglieder beziehen.
Tab_Familien_Mitglieder, Tab_Historie.
Das Formular ist kein endloser Formular, sondern hat ein Einzeln Formular pro Mitglied (1 pro Datensatz der Tab_Mitglieder). So kann man die Mitglieder wie eine Karteikarte blättern.
In diesem Formular gibt es ein Unterformular wo zwei Register Kartei aus der Tab_Familieund er Tab_Historie beziehen(ja, ein Unterformular pro Mitglied), sodass ich jeder Zeit für jedes Mitglied ein Übersicht habe.
Nur würde ich gerne eine Taste im Unterformular unterbringen, der den Ordner wo die PDF Dokumentation des Mitgliedes gespeichert ist öffnet.
Ist es jetzt etwas klarer?
Aber @drambeldier hat sicherlich recht. To much für wer weiss was.
Vielen Dank für eure Mühe

Such mal in der VBA-Hilfe nach FileDialog.

Gruß
Ralf

Hallo Ralf,
vielen Dank für den guten Typ.
Das ist ja ein gutes Schlagwort :v:

Die Fragestellung ist zweiteilig. Zunächst muss bestimmt werden, welcher Ordner dem Mitglied zugeordnet ist/wo für das Mitglied ein Ordner erstellt werden soll. Dabei hilft der File-Dialog. Der Pfad aus dem Dialog muss dann in einem Feld im Datensatz des Mitglieds (oder in einer der über die Mitgliedsnummer verbundenen Tabelle) gespeichert werden. Dessen Aufruf sollte man hinter einen Button mit einer Bezeichnung wie „Ordner für Dokumente anlegen/ändern“ legen.

Dann braucht es einen zweiten Button mit einer Bezeichnung wie „Dokumenten-Ordner öffnen“, der dafür sorgt, dass ein Explorer-Fenster des gespeicherten Pfades aufgerufen wird. Hier: Access: Dateiexplorer mit Verzeichnis öffnen @ codedocu_de Office 365 gibt es dazu einen Beispielcode.

Vielleicht ja (für mich auf jeden Fall), aber …

auf jeden Fall! Danke! :slight_smile:

Gruß
Christa

Servus, Wiz,

bist Du sicher, dass ich das wissen wollte?

SCNR
Gruß
Ralf

Ok, ich versuche es.
Vielen Dank

@Doriano

Das ist sicher keine Überforderung für W-W-W. Es ist halt nur sehr verwirrend, wenn ein recht klar definierter Begriff anders verwendet wird … aber das ist ja nun geklärt. Hoffe ich habe das richtig verstanden:

Du hast ein Formular, in dem die Daten des Mitglieds angezeigt werden. Durch Klicken auf eine Schaltfläche o. ä. wechels Du zu dem Datensatz eines anderen Mitglieds.

Parallel dazu gibt es für jedes(?) Mitglied einen Dateiordner, in dem Daten zu diesem Mitglied abgelegt sind. Du möchtes nun diesen Ordner per Schaltfläche im Windows-Explorer öffnen.

Korrekt? Dann dazu Folgendes:

Einen Ordner kann man wie jede andere Datei oder Webseite mit Applikation.FollowHyperlink öffnen. Hier sollte man IMHO zumindest noch abfangen, ob der Ordner überhaupt existiert.

Für das „Drumherum“ stellen sich mir ein paar Fragen zur Ordnerstruktur …

  1. Gibt es eine feste Vorgabe, wo die Ordner angelegt sind (Sowas wie „C:…\Mitglieder\[MitgliedsNr]\“)
  2. Liegen diese Ordner auf dem lokalen Laufwerk, auf einem Netzlaufwerk oder auf einem Online-Speicher?
  3. Wenn Onlinespeicher: Ist oder kann der per Webdav o. ä. in Windows wie ein Laufwerk eingebunden werden?

Abseits deiner Frage der Hinweis, dass die Realisierung solcher Verknüpfungen von Personen mit Blick auf den Datenschutz gut überdacht sein sollten.

Hallo lfm001,

  1. Gibt es eine feste Vorgabe, wo die Ordner angelegt sind (Sowas wie „C:…\Mitglieder[MitgliedsNr]\“)
    Meine Idee wäre gewesen, D:\Mitglieder\ID\Name

  2. Liegen diese Ordner auf dem lokalen Laufwerk, auf einem Netzlaufwerk oder auf einem Online-Speicher?
    Zur Zeit liegt es auf der Dropbox weil wir die DB zur zweit bearbeiten, Wenn es so weit ist werde ich sie in Front und Backend teile.

  3. Wenn Onlinespeicher: Ist oder kann der per Webdav o. ä. in Windows wie ein Laufwerk eingebunden werden?
    Ja, die Dropbox ist als Festplatte eingebunden. Nur der Pfad sollte nicht exklusiv sein, weil sonst mein Kompagnon nicht zugreifen könnte.
    Was der Datenschutz betrifft keine Angst, denn ich gebe auch keine Daten raus.
    Aber danke für den Hinweis :slight_smile:

Anderer Gedankengänge und eventuelle Möglichkeiten:

  1. Gibt es in Access nicht die Möglichkeit, Dateien direkt in der DB als LOBs zu speichern? (Dafür kenne ich Access zu wenig, mache das aber bei meinen DBs)
  2. Wie wäre es, den Pfad in der Applikation zu speichern? In meinenBetonter Text Applikationen gibt es einerseits rein applikationsspezifische globale Variablen in einer Tabelle, andrerseits userspezifische globale Variablen, die je User gesetzt werden (können).

Damit wäre das Ganze wesentlich dynamischer bzw. bin ich absolut kein Fan von hardcodierten Werten in einer Applikation.

Doch, denn der File-Dialog ist ja nur ein Teil der Gesamtlösung.

Ja, gibt es, gilt aber als fehleranfällig sowie wenig performant und daher wird davon immer wieder abgeraten.

Hallo @Tomh,
Mit welchem Programm entwickelst du deine Datenbanken

Wie Du das umsetzt, bleibt dir überlassen. Je nach Individualisierung kommen halt unterschiedliche Ansätze zum tragen. Daher meine Frage.

Ich halte aber den Namen für etwas ungünstig. Der Vorteil des Namens ist, dass sich auch ohne Blick in die Datenbank der Ordner dem Mitglied zugeordnet werden kann. Aber was machst Du bei Namensgleichheit zweier Mitglieder? Oder wenn sich der Name wegen Heirat ändert?

Fehlertoleranter ist eine feste ID des Datensatzes, zumal bei einer Änderung der Mitgliedsnummer es zumeist gewollt ist, Daten der bisherigen Mitgliedschaft von der Neuen zu trennen. Eine Mitgliedsnummer sollte man auf technischer Ebene in der Regel eh nie ändern. Lieber einen neuen Datensatz anlegen.

Die Access-Anwendung liegt im Onlinespeicher und wird darauf ausgeführt? Das sollte man auf keinen Fall machen. Nur der Datenbank-Mechanismus ist netzwerkfähig. Die Anwendungen sind es nicht. Es ist nur ein Frage der Zeit, wann die Anwendung korrupt wird.

Was meinst Du mit exklusiv? Habt Ihr unterschiedliche Pfade oder geht es um zeitgleiche Zugriffe auf die Datenbank?

Bei unterschiedlichen Pfaden nutzt halt den gleichen Pfad. Entweder über die Freigabe-Funktion oder im Explorer jeweils den gleichen Laufwerksbuchstaben zuordnen und dann den im Programm nutzen.

Bei zeitgleiche Zugriffen: Ich persönlich nutze kein DropBox. Von daher kenne ich nicht die Details, wie dort mit Dateizugriffen umgegangen wird. All diesen Diensten ist aber gemein, dass sie Onlinespeicher für passive Dateien zur Verfügung stellen. Collaboration (also das gemeinsame Arbeiten an Dokumenten) kenne ich eigentlich nur von box.com. Auf den Seiten von DropBox wird as Thema nur schwammig aufgegriffen.

Hier nun mein Vorschlag. Ich gehe von einer Schaltfläche mit dem Namen „cmdOpenCustomerFolder“ aus:

Private Sub cmdOpenCustomerFolder_Click()
    Dim sURL   As String

    sURL = "file://C:\Users\Public\Documents\Mitglieder\*USER*\"
    sURL = Replace(sURL, "*USER*", txtTestCustomerFolderID.Value)
    
    CurrentProject.Application.FollowHyperlink sURL
End Sub

Das Fehler-Handling habe ich zur besseren Übersicht weggelassen.

Die Variable sURL und die Quelle der ID (txtCustomerID.Value) passe dir individuell an. Du kannst auch einfach die Web-Adresse zum Onlinespeicher angeben. Dann wird halt der Web-Browser genutzt.

Das Ding mit FileDialog wurde wohl etwas zu früh in den Ring geworfen. Das benötigst Du eigentlich nicht.

Wie schon von @Tomh vorgeschlagen, würde auch ich den anfänglichen Inhalt der Variablen sURL konfigurierbar gestalten. Meine Projekte haben immer eine Optionstabelle, in der man die diversen Einstellungen hinterlegen kann. Das kannst in jedem Datenbanksystem so machen (von daher verstehe ich nicht deine Rückfrage nach dem DBMS von @Tomh).

Die Antwort macht Angst. Seit über 50 Jahren geht die Rechtslage über das hinaus. So eine Einstellung kann man IMHO nur durch aktives weggucken haben.

Ich betone nochmal: Ich hatte angemerkt, dass die Verknüpfung dieser Daten schon problematisch sein kann. Da ist deine Antwort etwas seltsam.

Hinzu kommt die Speicherung bei DropBox und somit in einen „unsicheren Drittland“, da die Daten in den USA gespeichert werden. Falls das ein Account für private Nutzung ist, kommt noch unzureichende Verschlüsselung hinzu.

Ich kann dir nur empfehlen, dich mit der Rechtslage auseinandersetzen.

Ich werde hierzuthread nichts mehr zum Datenschutz sagen. Wenn Du Interesse hast, eröffne eine neue Frage dazu.