Mai 25, 2022, 12:29:50

Neuigkeiten:

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


Formular zum Zuweisen und Entfernen von Objekten aus einem Inventar

Begonnen von ScalingR, April 04, 2022, 15:17:42

⏪ vorheriges - nächstes ⏩

ScalingR

April 04, 2022, 15:17:42 Letzte Bearbeitung: April 04, 2022, 15:22:29 von ScalingR
Hallo zusammen! Ich sitze an einem kniffligen Problem, welches mir einiges Kopfzerbrechen bereitet. Die Basics der Datenmodellierung und das Entwickeln eines Frontends in Access sind mir soweit geläufig. Etwas VBA kann ich auch und weiß mir zu helfen.
Ich versuche zunächst das Problem in einer vereinfachten Form und den bisherigen Stand so klar und eindeutig wie möglich hier zu beschreiben und hoffe auf hilfreiches Feedback von euch!

Hintergrund:
Es existieren verschiedene Messstationen draußen in der Natur.
Jede Messstation hat verschiedene Technik verbaut: n Datenlogger an welche wiederum n Sonden angeschlossen sein können. Jede Technik hat objektbezogene Eigenschaften, wie z.B. Seriennummer und Kabellänge.
Durch die Kombination der Technik kommen neue Eigenschaften, wie die Lage der Sonden im Gelände und Einstellungen an den Datenlogger hinzu.
Es soll nun strukturiert erfasst werden können, welche Technik an welcher Messstelle verbaut ist und ein Überblick der vorhandenen, aber nicht verbauten Technik (Lager) gegeben werden.

Lösungsidee:
Datenlogger und Sonden werden in separaten Bestandslisten mit ihren Eigenschaften vorgehalten.
Beim Einbau an einer Messstation wird zu der Messstation eine Technikkombination erstellt, zu welcher Datenlogger und Sonden aus dem Bestand zugewiesen werden und welche zusätzliche Eigenschaften erhält.
Wird eine Technikkombination wieder gelöscht (weil z.B. ausgebaut) wird die Verbindung zu der Technik in den Bestandslisten entfernt. Die eigentlichen technischen Objekte mit ihren Eigenschaften bleiben dort jedoch erhalten.

Betrachten wir nun ausschließlich Messstelle und Datenlogger und lassen die Sonden mal beiseite.

Datenmodell: (Primärschlüssel)
Es existieren 4 Tabellen.
tbl_messstelle(ID_messstelle, name, nummer, ort)
tbl_technikkombination(ID_technikkombination, ID_messstelle, Lage)
tbl_dl_bestand(ID_dl_bestand, ID_dl_modell, Seriennummer, Firmware)
tbl_dl_modell(ID_dl_modell, Hersteller, Modell, IP-Fähig)

Eine Messtelle kann mehrere Technikkombinationen besitzen. (1:n)
Eine Technikkombination kann mehrere Datenlogger aus dem Bestand besitzen. (1:n) (Manchmal sind mehrere DL an der Messstelle verkettet)
Mehrere Datenlogger aus dem Bestand gehören zum selben Modell. (n:1)

Aufbau Benutzerformular:
Es existiert ein geteiltes Hafo frm_messstelle dessen Datensatzquelle die tbl_messstelle ist.
Im oberen Bereich ist die Tabellenansicht mit allen Eigenschaften der Messstelle untergebracht.
Im unteren Bereich im Formularfuß ist ein Registersteuerelement untergebracht auf dessen einzelnen Registern die Ufos platziert sind/werden.
Das Register Messtechnik enthält ein Ufo sfrm_technikkombination als Einzelformular mit der Datensatzquelle tbl_technikkombination. Hafo und Ufo sind über die ID_messstelle miteinander verknüpft. Besitzt ein Pegel mehrere Technikkombinationen, wird das Einzelformular über ein Steuerelement durchgeblättert.

Es existiert ein separates Hafo frm_dl_bestand als Datenblatt. Dieses hat als Datensatzquelle eine Abfrage: tbl_dl_bestand&dl_modelle. In diesem können neue Datenlogger angelegt werden. Dazu wird für einen neuen Datenlogger im Bestand über eine Kombobox ein Modell ausgewählt und dann die Eigenschafften, wie Seriennummer hinzugefügt.

Ab hier wirds für mich knifflig:
Ich möchte jetzt im Ufo sfrm_technikkombination bestehende Datenlogger aus dem Bestand hinzufügen können und dort auch deren Eigenschaften (Hersteller, Modell, Seriennummer) sehen.
Also die ID_technikkombination aus der tbl_technikkombination in die entsprechende Spalte in der tbl_dl_bestand schreiben lassen.
Dazu habe ich ein neues Ufo ssfrm_dl als Endlosformular erstellt, welches als Datensatzquelle eine Abfrage aus tbl_dl_bestand&tbl_dl_modell enthält.
Ich möchte nun einen Datenlogger aus dem Bestand über eine Kombobox oder auch einfach über ein Popup, mit dem noch nicht verbauten Bestand, auswählen und diesem zuweisen können.
Beim Löschen des Datenloggers soll lediglich die verbindende ID_technikkombination aus der tbl_dl_bestand entfernt werden, nicht jedoch die Eigenschaften des Datenloggers in der Bestandstabelle.
Lösche ich jetzt gerade einen Eintrag aus dem Endlosformular ssfrm_dl, während ich mich im übergeordneten sfrm_technikkombination befinde, werden auch die Eigenschaften des betreffenden Datenloggers in der Bestandstabelle gelöscht. (Vermutlich weil die Datensatzquelle eine Abfrage ist, welche die Eigenschaften, die ich sehen will mit einbindet.)

Wie bekomme ich das hin, dass ich ein Element aus dem Bestand auswählen und bei Bedarf wieder löschen kann und ich auch alle Informationen aus den verknüpften Detailtabellen sehe?

Ich bin für Hilfe wirklich sehr Dankbar!

Herzliche Grüße

Anbei eine vereinfachte Skizze des Benutzerformulars.
Sie dürfen in diesem Board keine Dateianhänge sehen.


Beaker s.a.

Eine Skizze des Datenmodells (Bild des Beziehungsfensters) wäre erstmal
wichtiger, nicht nur für uns, sondern primär für dich.
--
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.

ScalingR

April 04, 2022, 17:27:19 #2 Letzte Bearbeitung: April 04, 2022, 17:35:08 von ScalingR
Die Datenbank existiert schon und ist in Front und Backend aufgeteilt.
Das Datenmodell für das Technikmodul ist auch drin.
Mein Problem liegt eher beim Erstellen des richtigen Formulars und wie ich es hinbekomme, die Einträge aus der Bestandstabelle mit den Technikkombinationen zu verheiraten und auch wieder zu lösen, ohne die Einträge der Bestandstabelle zu löschen.

MzKlMu

Hallo,
wie soll man aus einem solchen Bild Zusammenhänge ableiten können.
Es sind noch nicht mal die Tabellennamen erkennbar.
Auch die Skizze des Formulars ist relativ zwecklos.

Trotzdem, zu dem was erkennbar ist, einige Anmerkungen:
- Wenn sich aus Feldnamen einer Datenbank Geheimnisse ableiten lassen, hat man was falsch gemacht.
- Es gibt mindestens eine 1:1 Beziehung die relativ selten notwendig sind, der Sinn müsste geprüft werden.
- Es gibt mindestens zwei Beziehungen ohne RI. Beziehungen ohne RI sind ein NoGo
-
Zitat von: undefineddie Einträge aus der Bestandstabelle mit den Technikkombinationen zu verheiraten und auch wieder zu lösen,
Das wird mit einer n:m Tabelle erledigt mit zwei 1:n Beziehungen. Eine solche Tabelle ist aber aus dem gezeigten Bild nicht erkennbar. Wie solldas sonst relisiert werden ?
Insgesamt gibt es da noch erheblichen Veränderungs/Verbesserungsbedarf.


Nur noch der Ordnung halber:
Zitat von: undefinedDie Datenbank existiert schon und ist in Front und Backend aufgeteilt.
Jeder User braucht sein eigenes Frontend auf seinem PC.
Gruß
Klaus

ScalingR

Vielen Dank für deine Antwort.

Jeder Nutzer hat sein eigenes Frontend und alle greifen auf das gleiche Backend zu. Mit Benutzerlogin und Rechtevergabe.
Wenn ich das Bild anklicke kann ich ganz entspannt alle relevanten Tabellennamen ohne Mühe lesen?
Es sind Teile geschwärzt um das für das Thema relevante hervorzuheben. Und ja, die Feldnamen lassen Rückschlüsse auf das Betätigungsfeld und Sektor meines Arbeitgebers zu.
Die 1:1 Beziehung besteht zwischen der Technikkombination und einer Tabelle mit Sim-Karten. Da jede Technikkombination nur eine SIM-Karte entgegennehmen kann und eine SIM-Karte auch nur einmal verbaut werden kann ist es eine 1:1 Beziehung. Die SIM selber kann aber auch ausgebaut und woanders eingebaut werden. Deshalb in einer eigenen Tabelle.
RI hatte ich testweise draußen, wurde wieder hinzugefügt - Fremdschlüssel sollen ja auch als Hauptschlüssel existieren müssen.
Die 2. fehlende RI die du da siehst, verknüpft eine Tabelle, welche beim Datenbankstart über einen Get-Request von einem externen Server Daten bezieht und über eine Aktualisierungsabfrage Felder in der tbl_pegel aktualisiert. Die fehlende RI ist in diesem speziellen Fall unwichtig.

Bist du dir sicher, dass eine m:n Verknüpfung hier richtig ist?
Ein Datenlogger kann nur zu einer Technikkombination hinzugefügt werden, nicht zu mehreren. Eine Technikkombination kann aber mehrere Datenlogger aufnehmen. Aus meiner Sicht ist das eine klare 1:n.
Lediglich muss die Verbindung auf der n Seite bei Bedarf durch Löschung des Fremdschlüssels gelöst werden, wenn der Datenlogger nicht mehr in der Technikkombination verbaut ist.
Das ist ja auch das Problem.
Möglicherweise ist die wie von dir vorgeschlagene Verknüpfungstabelle trotz 1:n auch der richtige Ansatz.

Zitat von: MzKlMu am April 04, 2022, 17:59:21Wie solldas sonst relisiert werden ?
Insgesamt gibt es da noch erheblichen Veränderungs/Verbesserungsbedarf.

Deswegen frag ich hier.

VG

MzKlMu

Hallo,
die 1:1 mit der SIM kannst Du lassen.
Was die Datenlogger betrifft, sehe ich da nach wie vor eine n:m, denn ich gehe davon aus, dass der Datenlogger bei Ausbau nicht verschrottet wird, sondern einer anderen Kombination zugeordnet wird bzw. werden kann.
Und es kann ja von Vorteil sein, wenn Du erkennen kannst, von wann bis wann der Datenlogger in einer Kombination war.
Gruß
Klaus