Hallo "Accessfreunde",
habe da ein kleines Problem (wahrscheinlich liegt das Problem zwischen den Ohren), aber ich komme nicht weiter.
Ich habe ein Formular mit Unterformularen. Aus Bequemlichkeitsgründen möchte ich nach der Eingabe in Feld "SpName" des Hauptformulars (Frm_New) den Wert in dem Unterformular (Frm_E_Bank) in dem Feld "Kto_Name" eingetragen haben.
Ich bitte um Hilfe.
mit Dank im voraus
Asterix45
Hallo Asterix,
nicht nur in Gallien, nein auch hier in germanischen Landen ist es üblich, dass Haupt- und Unterformulare nicht unabhängig voneinander existieren.
Darum ist es meist so, dass ein Hauptformular durch eine Mastertabelle und das Unterformular von deren Detailtabelle mit Daten versorgt werden.
Somit bilden HF und UF die Gegebenheiten einer 1:n Beziehung auf Tabellenebene ab.
Wenn du nun einen bestimmten Wert in ein Hauptformular eingeben willst und danach den gleichen Wert im Unterform sehen willst so müsste das mit einem nicht normalisiertem Datenmodell einher gehen.
Sicherlich ist deine Vorstellung umsetzbar, wenn die entsprechenden Voraussetzungen auf Tabellenebene bestehen, sollte aber keinesfalls in der Form stattfinden, wie du das tun möchtest.
Warum ist das so?
Nun, wie bereits angesprochen zeigen HF und UF die Daten einer 1:n Beziehung an.
ALLE Daten, die sich ín einem UF befinden stehen daher mit dem aktuellen Datensatz des HF in Beziehung.
Wenn du nun in ein Feld des HF einen Wert eingibst, so gilt dieser Wert automatisch auch für alle Datensätze des UF.
In deinem konkreten Fall darf ich mal mutmaßen:
Im HF bearbeitest du einen Datensatz der im weitesten Sinn etwas mit Banken zu tun hat.
In das Feld SpName gibst du den Namen eines Kreditinstituts ein
Im UF werden DIESEM KONKRETEN Kreditinstitut des HF verschiedene Konten und weitere Infos zugeordnet (das sind mehrere Datensätze der Detailtabelle)
Es gibt ein Feld in der Detailtabelle, das im UF noch leer ist - Kto_Name
Nun soll in beispielsweise 20 Datensätzen des UF das Feld Kto_Name mit dem Namen des Kreditinstituts befüllt werden.
Dieser Vorgang ist aber ein klassischer Verstoß gegen die Normalisierungsregeln und führt zu einer redundanten Datenhaltung und ist somit FALSCH.
Wenn das so in deinen Tabellen der Fall ist, sollte das Feld Kto_Name aus der Detailtabelle rausgenommen werden, da es dort nichts zu suchen hat, die Information, die imFeld Kto_Name erscheinen soll befindet sich im Datensatz der 1-Seite deiner Beziehung, in der Mastertabelle.
Wie gesagt eine Mutmaßung von mir, da ich die tatsächlichen Gegebenheiten und Konstellationen deines Datenmodells mangels detaillierter Information nur vermuten kann.
Grüße
Peter
Hallo database,
habe mich vielleicht nicht ganz klar ausgedrückt.
Ich gebe noch weiter Infos zu meinem Problem:
1. Die DB ist eine Mitgliederverwaltung eines Sportvereins.
2. Die Tabellen stehen mit einer eindeutigen ID (als Primärschlüssel) in einer 1:1 Beziehung.
3. Das HF ist das Eingabeformular in dem das UF der Bankdaten ( also die Befüllung der "Bank-Tabelle") eingebunden ist.
Wenn ich nun der Spielernamen (Feld "SpName") eingetragen habe, möchte ich das der Wert in dem UF im Feld "Kto-Name erscheint. Dadurch existieren keine redundante Daten, da der Kto_Name, z.B. bei Kindern, vom Spielernamen abweichen kann.
Zur Verdeutlichung habe ich ein Screenshot angehängt
Gruß
Asterix45
[Anhang gelöscht durch Administrator]
Hallo,
"2. Die Tabellen stehen mit einer eindeutigen ID (als Primärschlüssel) in einer 1:1 Beziehung."
ist falsch.
Zusätzlich zu den Ausführungen von database lege ich Dir u. st. Links #1 und #2 ans Herz.
Alle Felder, die im Bank-UFO zu finden sind, sind Attribute eines Mitgliedes und bedürfen deshalb keiner separaten Tabelle. Sie gehören in die Mitglieder-Tabelle.
Wenn der im Feld "Name" (Reservierte Wörter, sowie Sonder-/Leerzeichen in Namen vermeiden!) eingebene Name auch im Feld "Kto-Name" erscheinen soll, dann könnte das so aussehen:
1) bei Feld im selben Formular:
Sub [Name]_Afterupdate()
Me![Kto-Name] = Me![Name]
End sub
2) bei Feld im UFO
Sub [Name]_Afterupdate()
Me![frm_E_Bank].Form![Kto-Name] = Me![Name]
End Sub
Hallo,
@Asterix
Aijaijai...
Zitat
3. Das HF ist das Eingabeformular in dem das UF der Bankdaten ( also die Befüllung der "Bank-Tabelle") eingebunden ist.
Wenn ich nun der Spielernamen (Feld "SpName") eingetragen habe, möchte ich das der Wert in dem UF im Feld "Kto-Name erscheint. Dadurch existieren keine redundante Daten, da der Kto_Name, z.B. bei Kindern, vom Spielernamen abweichen kann.
Dass bei einer Konstellation, wie du sie betreibst (1:1) keine Redundanzen bestehen halte ich schlichtweg für ein Gerücht - zumindest ändert sich das schlagartig, wenn ein Spieler mehr als 1 Kind hätte. Leise beschleicht mich der Verdacht, dass du den Begriff 'Redundanz' in Bezug auf Datenhaltung in Tabellen noch nicht ganz richtig interpretierst.
Im Fall von mehreren Kindern (was es ja auch geben kann) MUSST du dann die Spielerdaten für jedes Kind wiederholt (redundant) erfassen, sonst kannst du die Daten des Kindes nicht eingeben. ;)
Tabellen, die durch eine 1:1 Beziehung verbunden sind können theoretisch zu einer Tabelle zusammengefasst werden!
Die 1:n Beziehung schließt jedoch nicht aus, dass zu einem Mastersatz nur 1 Detailsatz besteht!
Du solltest in dem Zusammenhang bei NÄCHSTER Gelegenheit unbedingt die Links in der Signatur von DF6GL konsumieren.
Grüße
Peter
Hallo DF6GL und database.
Erstens DANKE an DF6GL.
Dein aufgezeigter 2ter Code ist der den ich gesucht habe. Wie ich schon gemeint habe lag mein Problem zwischen den Ohren.
Zweitens, database.
Du hast recht mit den redundanten Daten. Da habe ich mich nicht ganz deutlich ausgedrückt. Natürlich sind das redundante Daten, wenn der Spielername mit dem Kto-Namen übereinstimmt. Aber die Tabellen werden im Verein von verschiedenen Personen bearbeitet. Daher möchte ich denjenigen nur die persönlichen Daten der Mitglieder überlassen/zur Verfügung stellen, die er für seine Arbeit benötigt um den Datenschutz wenigstens etwas gerecht zu werden. Deshalb nehme ich den "klassischer Verstoß gegen die Normalisierungsregeln" und die Trennung der Tabellen, hier in Kauf.
Danke für den Hinweis und ich werde natürlich bei NÄCHSTER Gelegenheit die Links in der Signatur von DF6GL konsumieren, ich will ja auch nicht dumm sterben ;).
Nochmals DANKE an euch für die Hilfe,
euer Asterix45
Hallo Asterix,
meine Hinweise sollten nicht den Charakter einer Massregelung annehmen. ;D
Wie auch immer du das jetzt handhaben willst, wenns für dich so passt mag das schon in Ordnung sein.
Ob nun eine, zwei oder mehrere Personen mit der DB arbeiten - mit Einhaltung oder Gerechtwerden des Datenschutzes hat das absolut NICHTS zu tun.
Die Einhaltung von Normalisierungsregeln bedeutet nicht gleichzeitig Verzicht auf Datensicherheit - ich glaube, da hast du was nicht richtig verstanden, da hier genau das Gegenteil der Fall ist. :o
Die Normalisierung von Relationen sollen gewährleisten, dass die Daten in GEORDNETER Form in der Tabelle stehen, sie vermeiden Redundanzen, fördern die Effizienz und sind einer Einhaltung von Datenschutzbestimmungen mit
halsbrecherischer Sicherheit NICHT IM WEGE. ;)
Du kannst getrost davon ausgehen, dass die Verwendung einer 1:1 Beziehung NIEMANDEN davon abhalten KANN Daten zu lesen oder zu schreiben, die er nicht soll.
Zitatich werde natürlich bei NÄCHSTER Gelegenheit die Links in der Signatur von DF6GL konsumieren
...hinterläßt bei mir dann doch noch die Hoffnung, dass du in absehbarer Zeit Verständnis für die Regeln und Gesetzmäßigkeiten bei der Datenbankentwicklung erlangen KÖNNTEST
Viel Erfolg weiterhin
Peter