Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Verknüpfung von Datensätzen / Filterung

Begonnen von dobby110, August 01, 2022, 09:01:22

⏪ vorheriges - nächstes ⏩

dobby110

Hallo zusammen,

ich hätte mal eine Frage und hoffe man kann mir hier weiterhelfen.

Ein Screenshot der Beziehungen füge ich mit an.
Es geht um die folgenden drei Tabellen:

tbl_Investments
tbl_Kombi_Inv_in_Fonds
tbl_Investments_Dokumente_VEP

Vom Ablauf ist es folgendermaßen

Ich lege in Tabelle "tbl_Investments" über ein Formular ein Investment an.
Dann verknüpfe ich dieses Investment über ein Formular in "tbl_Kombi_Inv_in_Fonds" mit einem Fonds.
D.h. die Datenbank weiß an dieser Stelle über die Kombi-ID welches Investment sich in welchem Fonds befindet.
Über das gleiche Formular befülle ich auch die "tbl_Investments_Dokumente_VEP" mit Dokumenten, welche vorliegen und nachgehalten werden müssen. Dies kann man prima über die Kombi_ID steuern, da die Kombi Investment in einem Fonds ja nur einmal vorkommen kann.

Nun geht es mir um die Stammdaten, welche in Tabelle "tbl_Investments" gepflegt werden müssen.
Die Kombi-ID (Investment in einem Fonds) kann ja nur einmal vorkommen, aber es ist ja durchaus möglich, dass ich das gleiche Investment in mehreren Fonds habe. Die Dokumente brauche ich jedes Mal neu, aber die Stammdaten sind immer gleich.

Ich möchte jetzt ein Formular erstellen, über das ich die Daten der Tabelle "tbl_Investments_Dokumente_VEP" überwache, um die Dokumente zu der Kombi_ID zu hinterlegen. An der Stelle möchte ich aber auch die Stammdaten verknüpfen. D.h. ich möchte über ein Button auf die Stammdaten der ISIN zugreifen. Zwischen den Tabellen "tbl_Investments_Dokumente_VEP" und "tbl_Investments" besteht aber keine Beziehung. Kann ich trotzdem irgendwie auf die Stammdaten der ISIN zugreifen? Das wäre ja über den Umweg "tbl_Kombi_Inv_in_Fonds" möglich. In dieser findet sich die KombiID und auch die ISIN.

Man könnte es recht einfach lösen, in dem ich die ISIN auch in Tabelle "tbl_Investments_Dokumente_VEP" integriere. Das möchte ich aber wenn möglich vermeiden.

Kann mir jemand weiterhelfen?

Vorab vielen Dank!


Beaker s.a.

Hallo,
Zuerst, wenn man schon ein Beziehungsbild zeigt, was löblich ist,
dann sollten, auch bei einem Ausschnitt, zumindest die Tabellen
gezeigt werden, die man im Post erwähnt; - tbl_Fonds muss man
sich denken.
Dann, sind die Primärschlüssel wirklich vom Typ String, wie es die
Namen vermuten lassen?
Aus der sichbaren 1:1 Beziehung sollte m.E. eine 1:n werden, sonst
könntest du die Felder ja auch gleich mit in die n:m aufnehmen.
ZitatDas wäre ja über den Umweg "tbl_Kombi_Inv_in_Fonds" möglich.
Das ist kein Umweg, sondern durch die Struktur/Beziehungen so
festgelegt.

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

dobby110

Der Screenshot beinhaltet die drei Tabellen. Deswegen hatte ich diese auf dem Bild rot eingerahmt. Habe das Problem aber bereits gelöst, in dem ich die Kombi-ID mit in das Formular gepackt habe.

Jetzt hätte ich aber noch eine andere Frage, welche mit diesem Thema nichts zu tun hat.
Und zwar möchte ich zur Kontrolle, nachdem ein bestimmtes Feld auf "Abgeschlossen" gestellt wird, eine Prüfung durchführen, ob bestimmte Felder in bestimmten Tabellen befüllt wurden. Leider kann ich diese nicht als Pflichtfelder hinterlegen, da die Informationen nicht vollständig von Anfang an vorliegen.
Daher möchte ich eine Prüfung durchführen, wenn ein Vorgang den Status "Abgeschlossen" erhält. Es soll dann bspw. geprüft werden.

Ist in Tabelle XY, Feld ABC mit einem Wert befüllt? Wenn nein; MessageBox
Ist in Tabelle VW, Feld KLM mit dem Wert "ja" befüllt? Wenn nein, MessageBox

usw.

Es sollen also mehrere Felder auf Vollständigkeit geprüft werden. Sollte dies bei einem der Felder nicht der Fall sein, dann soll eine Meldung erscheinen, in der darauf hingewiesen wird.

Hoffe das war verständlich ausgedrückt ?

Vermutlich kann ich so etwas über das Ereignis "Nach Aktualisierung" umsetzen?  Leider weiß ich aber nicht, wie der VBA-Code aussehen muss.

Beaker s.a.

Hallo,
Zunächst,
Zitatwenn ein Vorgang den Status "Abgeschlossen" erhält.
würde ich zu einem Datumsfeld "abgeschlossen_am" ändern. Da hast du
automatisch eine Information mehr als bei einem Ja/Nein-Feld.
Die Prüfung würde ich "Vor Aktualisierung" durch führen, denn wenn
leere Felder vorliegen ist der Vorgang ja nicht abgeschlossen, und
du müsstest die Bearbeitung unterbrechen.
Unter der Voraussetzung, dass die Tabellen XY und VW einen FK auf
die bearbeite Tabelle haben, dann etwa so (Luftcode)
Private Sub abgeschlossen_am_BeforeUpdate(Cancel As Integer)

    If DCount("*", "XY", "FKFeld = " & Me.PKFeld & " AND ABC Is Null") > 0 Then
        MsgBox "Feld ABC in XY ist leer und muss vor dem Abschluss gefüllt werden!"
        Cancel = True       
        Me.abgeschlossen_am = Null
'evtl. hier das Formular für Tabelle XY öffnen damit die Eingabe ergänzt
'werden kann
'entsprechend für die andere Tabelle
    End If

End Sub

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)