Hallo,
ich stoße bei einem Thema immer wieder auf einen Fehler. Ich wähle bei einem Formular über ein Combofeld eine Information aus einer vorhandenen Tabelle aus, die ich in einer Zieltabelle mit andern Informationen zusammen führen möchte. Dabei wird jedoch nicht der Wert, sondern der Primärschlüssel gespeichert.
aktuelles Beispiel:
Ich habe Bereiche und Räume in denen unterschiedliche Ausstattung an Bett und Nachtschrank vorhanden ist. Die Typen der Betten und Nachtschränke sind bekannt und begrenzt.
Ich habe Bereiche in einer tbl_bereich, Bett Typ in einer tbl_Betttyp und Nachtschrank in einer tbl_Nachtschrank. Jetzt möchte ich über ein Eingabeformular pro Bereich verschiedene Kombinationen an Bett Typ, Nachtschrank und weiteren Informationen erfassen, die in einer Tabelle abgespeichert werden sollen.
Soweit ich jeweils jede Information einzeln eingebe passt alles. Mit der Auswahl der Typen über Kombifelder wird jedoch, anstatt des Wertes, der Primärschlüssel der jeweiligen Tabelle gespeichert.
Wie kann ich das abstellen?
Ich danke für Hinweise.
Sven
Hallo,
ZitatWie kann ich das abstellen?
gar nicht, das solltest Du so lassen. Das ist der Sinn von Schlüsselfeldern in einer Datenbank. Es wird niemals der Klartext gespeichert, sondern immer die Schlüsselzah. Alles andere wäre grob falsch.
Zitatin einer tbl_Betttyp und Nachtschrank in einer tbl_Nachtschrank.
Auch das ist falsch. Alle Möbel kommen in eine Tabelle mit einem Fremdschlüsselfeld für den Typ. Demzufolge ist auch eine Tabelle für die Möbeltypen erforderlich (Bett, Nachtschrank etc.)
In einer Kombinationstabelle werden dem Bereich die Möbel als je ein Datensatz zugeordnet, aber auch nur die Schlüsselzahlen.
Die Grundstruktur der DB ist bereits fehlerhaft und sollte dringend geändert werden. Und wenn Du in das Feld manuell (also ohne Kombi) eine Zahl oder einen Text eingeben kannst, hast Du auch drastische Fehler bei den Datentypen. Und bei den Beziehungen kann auch keine referentielle Integrität eingestellt werden.
Kannst Du mal ein Bild des Beziehungsfensters hochladen ?
Hallo Klaus,
anbei das Beziehungsfenster.
Ich bin mir nicht sicher, wer jetzt etwas falsch verstanden hat. Ich habe ja jeweils separate Tabellen der Möbel, sowie der Bereiche, jeweils mit eigenem Schlüssel.
Ich verstehe auch die Speicherung der Fremdschlüssel in der erstellten Tabelle. Dann benötige ich zur Textansicht im Form oder Bericht eine Abfrage, die mir das zusammen setzt. - So Richtig?
Dann stell ich das mal zusammen.
Ich möchte ja nach jeder Eingabe der Daten im HF die Übersicht im UF angezeigt bekommen.
Für das Konzept der DB stellt sich mir noch die Frage nach dem PS für die zu erstellende Tabelle.
Da jedes Bett mit einer eindeutigen Nummer versehen werden soll, könnte diese Nummer den Primärschlüssel der erstellten Tabelle darstellen. Allerdings ist bei dem Großteil der Betten bereits eine Nummer vergeben, die übernommen werden muss.
Was ist sinnvoller, ein neuer PS oder die Übernahme der vorhandenen Nummer da eindeutig und führend.
Danke erstmal
Sven
Hallo,
das ist mir alles noch unklar, zumal ich mit den englischen Bezeichnungen nicht zurecht komme.
ZitatIch habe ja jeweils separate Tabellen der Möbel,
alle Möbel in
eine Tabelle.
Zitatkönnte diese Nummer den Primärschlüssel der erstellten Tabelle darstellen
ja, aber nur wenn dies Nummer eine reine Zahl ist.
Die Frage ob Abfrage oder nicht, stellt sich nicht. Für Bericht und Formular verwendet man immer eine Abfrage und nie die Tabelle direkt.
Bitte erkläre mal den Zweck der DB genauer.
Ok,
Zitat von: MzKlMu am Februar 16, 2015, 12:14:32
das ist mir alles noch unklar, zumal ich mit den englischen Bezeichnungen nicht zurecht komme.
geht mir hier genau so.
Zitatalle[/b] Möbel in eine Tabelle.
Die Zuordnung Bett zu Nachtschrank soll aber unabhängig erfolgen. Das ist die Praxis. Deswegen machen doch zwei Tabellen auch mehr Sinn, oder?
ZitatZitatkönnte diese Nummer den Primärschlüssel der erstellten Tabelle darstellen
ja, aber nur wenn dies Nummer eine reine Zahl ist.
Ja, das ist sie.
ZitatDie Frage ob Abfrage oder nicht, stellt sich nicht. Für Bericht und Formular verwendet man immer eine Abfrage und nie die Tabelle direkt.
Hmm, da hatte ich in der Vergangenheit schon mal Probleme bei der Bearbeitung und hier im Forum den Hinweis zur Verwendung der Tabelle erhalten.. Gut, aber das dann im nächsten Schritt.
ZitatBitte erkläre mal den Zweck der DB genauer.
Wir haben ein Haus mit Bereichen, mit einer definierten Anzahl an Zimmern, die über die Nummer eindeutig dem Bereich zuzuordnen sind. Hier sind unterschiedliche Betten mit unterschiedlichen Nachtschränken enthalten. Mal ein Bett, mal zwei.
Ich möchte jetzt zunächst eine Aufstellung welches Bett mit welchem Typ Nachtschrank an welcher Position in welchem Zimmer steht.
Ich habe eine Aufstellung bei der aber die Nummern der Betten nun hinzu gefügt werden müssen.
Ziel ist es den Bestand der Betten zu verwalten.
Übersicht und Verfolgung von Bettverschiebungen sind die Notwendigkeiten.
Ist das zur Erklärung ausreichend?
Grüße
Sven
Hallo,
ZitatDeswegen machen doch zwei Tabellen auch mehr Sinn, oder?
nein, 2 Tabellen machen keinen Sinn. Du benötigst nur ein Kennzeichen ob Bett oder Nachtschrank. Auch mit einer Tabelle kannst Du unabhängig zuordnen. Nachtschrank und Bett sind dann 2 Datensätze in der Zuordnungstabelle. In diese Tabelle müssen auch noch 2 Datumsfelder für die geforderte Historie. VonDatum und BisDatum.
Zitatund hier im Forum den Hinweis zur Verwendung der Tabelle erhalten..
Das hast Du entweder falsch verstanden, oder der Hinweis war falsch. Datenbasis von Formularen und Berichten ist im Regelfall immer eine Abfrage. Nur dann ist eine definierte(=sortierte) Reihenfolge der Datensätze gewährleistet. Außerdem ist der Zugriff auf die Daten über eine gespeicherte Abfrage schneller als mit der Tabelle direkt.
Denn auch bei Zugriff über Tabelle wird von Access im Hintergrund eine Abfrage erstellt. Diese Abfrage muss aber bei jedem Zugriff auf die Tabelle neu erstellt werden, was bei eine gespeicherten Abfrage entfällt. Außerdem nimmt man in eine Abfrage nur die Felder auf, die man auch benötigt.
Hallo Klaus,
Mit der gemeinsamen Tabelle tue ich mich noch schwer.
Ich kann ein Kriterium ob Bett oder Nachtschrank festlegen, ok. Es haben allerdings nur die Betten eindeutige Nummern, für die Nachtschränke ist das noch nicht vorgesehen.
Kann ich dann auch die Auswahl welcher Bett- /Nachtschranktyp vorhanden ist unabhängig über jeweils ein Combofeld eingeben?
Ich skizziere mal beispielhaft.
Ich habe also eine tbl_Moebel (ID;Mbltyp;Mblbez;Änd_Datum), tbl_Station( ID; Stat), tbl_Bettenzuordnung(ID;Stat;Zi_Nr;Pos;Bett;NS) , die dann über eine Abfrage zusammengeführt bzw. gefüllt werden.
Dabei verwende ich ein Formular mit Eingabe- und Combifeldern. Kann ich denn dann das Ergebnis in der tbl_Bettenzuordnung speichern oder brauche ich dann eine neue Tabelle? - Eine, die ja ihrerseits stetig aktualisiert werden muss.
Gruß Sven
Hallo,
was ist das Änd_Datum, welches Datum soll da eingetragen werden ?
Du benötigst nach meiner Auffassung folgende Tabellen:
- tblStation
- tblMoebel (mit extra Primärschlüssel als Autowert)
- tblZuordnung (FS MoebelID, ZiNr, DatumVon, DatumBis)
FS=Fremdschlüssel
In der 3 Tabelle wird einfach für jedes Möbel ein Datensatz angelegt. Für das Bett und den Nachtschrank je ein DS. Die Datensätze bei denen das DatumBis Feld leer ist, ist die aktuelle Belegung.
Hi Klaus,
ok, ich verstehe Dein Konzept.
Ich bin mir nur nicht sicher ob das für meine Zwecke passt.
Muss ich denn dann nicht die tblMoebel vorher, also vor der Zuordnung, füllen?
Ich möchte a, meine Anzahl an Bettypen (Anzahl 5 , Typ a, b, c, d, e) und meine Anzahl an Nachtschranktypen 7 Typ d, e, f, g, h, i, j) nicht aus einer Auswahl von 1200 Artikeln auswählen müssen.
Beim Datum reicht mir das Datum der letzten Bewegung, deswegen nur Änd_Datum.
Grüße
Sven
Hallo,
die Tabelle für die Möbel sollte natürlich befüllt sein. Wenn die Betten Nummern haben, so ist das ja auch zwingend notwendig.
Du kannst zur Auswahl ob Bett oder Nachtschrank zunächst mal auf Bett oder Nachtschrank filtern und dann auch noch den Typ. Dann geht die Auswahl schnell.
Das Änd_Datum ist ersatzlos überflüssig, das Datum der letzten Aktion ergibt sich aus der Zuordnungstabelle.
Hall Klaus,
ich denke dann macht es mehr Sinn die Bettnummer erst in der Zuordnungstabelle vorzunehmen.
Denn sonst muss ich jedes Bett und jeden Nachtschrank zweimal aufnehmen.
Ich denk da bis morgen mal drüber nach, vielen Dank erst mal für die Diskussion!
Grüße
Sven
Hallo,
ZitatDenn sonst muss ich jedes Bett und jeden Nachtschrank zweimal aufnehmen.
wie kommst Du darauf ?
Bett und Nachtschrank werden nur 1x aufgenommen, nämlich in der Tabelle "tblMoebel". Sonst nirgends.
In die Zuordnungstabelle kommt nur der Primärschlüssel des Möbelstücks als Fremdschlüssel. Und die Auswahl erfolgt per Kombi.
Hallo Klaus,
Zitat von: MzKlMu am Februar 16, 2015, 17:06:51
wie kommst Du darauf ?
Ich muss im wesentlichen ja zwei Informationen erfassen, welche Nummer hat ein Bett, (1.Schritt) und dann wo dieses Bett platziert ist(2.Schritt).
Um hier alles in einem Schritt aufnehmen zu können muss ich die zugeordnete Nummer des Bettes bei der Zuordnung erfassen. Mir liegen die Anzahlen an Bett- und Nachtschranktypen ja vor, aber nicht alle Bettnummern. OK.
Grüße
Sven
Hallo,
Zitatwelche Nummer hat ein Bett, (1.Schritt) und dann wo dieses Bett platziert ist(2.Schritt).
aber dazu muss das Bett doch nicht 2x erfasst werden. Es wird ja nur mit Schlüsselfeldern gearbeitet.
Hallo Klaus,
datenbankseitig nicht, das verstehe ich schon, aber praktisch schon.
Zitat von: MzKlMu am Februar 16, 2015, 16:37:02
Hallo,
die Tabelle für die Möbel sollte natürlich befüllt sein. Wenn die Betten Nummern haben, so ist das ja auch zwingend notwendig.
Wie gesagt, ich kenne die jetzigen Nummern der Betten nicht, die stehen auf diesen drauf und um die zu erfassen muss ich einmal physisch hingehen. In diesem Zug nehme ich gleich die Lokalisation und alles andere auf und möchte nachher alles nur einmal eingeben, nicht erst die Liste der Möbel erstellen und dann nochmal alles zuordnen.
Das macht bei mir zwei Schritte. Dabei spielt es für mich keine Rolle ob ich das Bett bei der Zuordnung mit Nr aus der DB abrufe oder in diesem Schritt die Nummer mit eingebe.
Oder anders gesagt möchte ich die Nummer mit allen anderen Informationen zusammen erfassen.
Grüße
Sven
Hallo,
eigentlich ist alles geesagt.
Du musst unterscheiden in die Stammdaten und Bewegungsdaten. Da Du eine Historie haben willst, benötigst Du zwingend eine Bewegungstabelle in der kontinuierlich die Bewegungsdaten von Bett und Nachtschrank erfasst werden.
Du musst also erst die Möbel erfassen für die Stammdaten und im nächsten Schritt dann die Möbel den Zimmern zuordnen. Da bleibt Dir nix anderes übrig. Die Datenbank weiß ja nicht von alleine was wo steht.
Diese beiden Schritte musst Du zwingend machen wenn die DB noch leer ist.
Das kann man durchaus in einem Arbeitsgang machen.