Wie kann ich gleiche Werte in einer Tabelle vermeiden?
Hallo,
Wie kann ich vermeiden, dass in einer Tabelle ein Wert mehrfach vorkommt. Ich habe in meiner DB eine Tabelle “Artikel“ und ein Formular, das mit dieser Tabelle verknüpft ist. Der Benutzer soll im Formular die Artikelnamen selbst eintragen können. Wenn er aber mehrere Male den gleichen Artikelnamen eingegeben hat, wird dieser mehrfach in der Tabelle gespeichert (verschiedene IDs). Wie kann ich dieses Phänomen aus der Welt schaffen.
Danke im Voraus
Antwort schreiben
Hallo,
dann musst du (unter Access) einfach in der Entwurfsansicht für das Feld "Artikel" unter 'Indiziert' Ja (Ohne Duplikate) einstellen. Allerdings wird dir das nicht viel bringen, da schon eine in einem Zeichen unterschiedliche Schreibweise des Artikelnamens die Sache wieder aushebelt. Darum ist es günstiger, eine eindeutige Artikelnummer zu verwenden, ggf. die EAN oder die Bestellnummer des Lieferanten.
Gruß
Pausenfüller
Antwort 2 von NochEinGast vom 14.11.2019, 10:37 Options
Danke für schnelle Antwort Pausenfüller.
Das mit der unterschiedlichen Schreibweise ist kein Problem, soll auch als ein anderer Artikel in die Tabelle geschrieben werden. Wenn aber exakt gleich geschriebene Artikelbezeichnung noch mal vorkommt soll nicht mehr in die Tabelle „Artikel“ geschrieben werden, sondern in der Zwischentabelle „Bestellpositionen“ die gleiche Artikel_ID benutzt werden, die in „Artikel“ schon vorhanden ist. Dein Vorschlag mit „Ja (Ohne Duplikate)“ geht leider nicht, weil der Benutzer eine Meldung bekommt, dass er diesen Artikelnamen nicht schreiben darf, das soll aber erlaubt sein.
Gruß
NochEinGast
Hallo NochEinGast
mal ein Vorschlag von mir...
Hast du bei deiner Tabelle einen Primärschlüssel definiert? Wenn du den Primärschlüssel auf den Artikel legst, sind exakt gleichgeschriebene Artikel nicht mehr möglich
gruß
morpheus
Antwort 4 von NochEinGast vom 14.11.2019, 11:09 Options
Hallo morpheus,
in meiner Tabelle "Artikel" gibt es u.a. Spalten: "Artikel_ID" (Primärschlüssel) und "Artikelbezeichnung".
Und trotzdem sind gleiche Artikelbezeichnungen möglich, die unterschiedliche IDs bekommen.
Danke
Gruß
NochEinGast
Antwort 5 von RalfH vom 14.11.2019, 11:23 Options
Hallo,
Das was Du da vorhast ist absoluter Mist.
Angenommen jemand schreibt als Artikel Schuhsohle, der nächste schreibt Suhsohle und wieder ein andere schreibt Schusole. Wie willst Du das, bzw. die Datenbank unterscheiden ?
Am vernüftigsten ist, die Tabelle Artikel mit einer Artikelnummer zu versehen, Primärschlüssel drauf und eine Artikelbezeichnung.
Tbl_Artikel:
Artikel_Nr ( Primärschlüssel)
Art_Bezeichnung
Diese Tabelle kannst Du dann als Grundlage für eine Abfrage nehmen, und diese wiederum als Grundlage für Listboxen, Kombifelder etc.
Als Beispiel ein Kombifeld:
Sollte ein Artikel nicht in der Tabelle vorhanden sein, kannst Du z. B. ja über das Ereignis BEI DOPPELKLICK die Grundlagentabelle öffnen ( besser wäre eine Abfrage), und man kann dort einen neuen Artikel einpflegen. Der erhält dann auch eine Artikel_Nr und ist somit eindeutig.
Als weiteres Ereignis beim Kombifeld nehmen wir Beim Verlassen, und dort als VBA Code
DoCmd.Requery "Dein Kombifeld"
Me!Deinformular!Irgenntein_Textfeld.SetFocus
Damit ist gewährleistet, das wenn Du ins Formular zurückkehrst, das Kombifeld mit den neuen Werten sofort zu Verfügung steht.
Gruß Ralf
Antwort 6 von NochEinGast vom 14.11.2019, 12:22 Options
Hallo Ralf,
in diesem Mist sind schon einige Gedanken dahinter. Wenn z.B in der Tabelle „Artikel“ tausende von Artikeln untergebracht sind, scheidet das Kombifeld aus (einfacher ist Artikelnamen zu schreiben als im Kombifeld zu suchen). Der Aufbau der Tabelle ist genau so wie Du beschrieben hast.
Der Benutzer soll den Artikel eingeben können und wenn dieser schon vorhanden ist, soll Artikel_ID des vorhandenen Artikels benutzt werden anstatt in die Tabelle „Artikel“ neu zu schreiben.
Danke
Gruß
NochEinGast
Antwort 7 von Teddy7 vom 14.11.2019, 12:27 Options
Wenn Du im Kombifeld die Artikelbezeichnung als erste Spalte nimmst, dann brauchst Du nur die ersten Buchstaben einzutippen und die Anzeige "springt" automatisch auf den ersten Treffer.
Gruß
Teddy
Antwort 8 von RalfH vom 14.11.2019, 13:11 Options
Hallo nochmal,
.
Zitat:
in diesem Mist sind schon einige Gedanken dahinter. Wenn z.B in der Tabelle „Artikel“ tausende von Artikeln untergebracht sind, scheidet das Kombifeld aus (einfacher ist Artikelnamen zu schreiben als im Kombifeld zu suchen).
Antwort 7 von Teddy dürfte da für Klarheit sorgen.
Gruß Ralf
Antwort 9 von NochEinGast vom 14.11.2019, 14:21 Options
Hallo,
diese Alternative klingt vernünftig, ist zwar mit großen Veränderungen in meiner DB verbunden, aber ich werde mal versuchen. Dann habe ich sofort noch eine Frage: Wie kann ich im Kombinationsfeld einen Beitrag z.B. „nicht in der Liste“ an letzte Stelle setzen? Dieser ist dafür da, wenn drauf geklickt wird, öffnet sich die Eingabemaske, die mit der Tabelle „Artikel“ verknüpft ist.
ich bedanke mich im Voraus
Gruß
NochEinGast