Laden...

Verhindern, dass es in einer Tabelle doppelte Einträge gibt

Erstellt von Paddy93 vor 11 Jahren Letzter Beitrag vor 11 Jahren 7.389 Views
Thema geschlossen
Hinweis von herbivore vor 11 Jahren

Der Original-Titel war "DataGridView auf Doppelte Einträge prüfen". Offensichtlich ist es aber besser, das Problem an den Wurzel zu packen.

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 11 Jahren
Verhindern, dass es in einer Tabelle doppelte Einträge gibt

Hallo Community,

ich arbeite gerade an einem Werkzeuglager für eine Kunststofffirma. In dem Programm werden sämtliche Produkte editiert die zu viel hergestellt wurden und gelagert.
Jetzt habe ich das Problem das ein Datensatz 2mal in der Datenbank vorhanden ist.
Ziel ist es das ich für meine Spalte Zeichnungsnummer auch genau einen einzigen Datensatz in meiner Datenbank habe. Ist es möglich eine Art Fehlermeldung kommen zu lassen, indem ich vorher Prüfen ob in meiner Spalte Zeichnungsnummer derselbe Eintrag bereits in meiner Datenbank vorhanden ist?

Als Datenbank wird eine Access-Datenbank verwendet, diese binde ich simpel mit dem Assistenten von Visual Studio 2010 ein.

Danke schon einmal für die Antworten
Paddy

M
184 Beiträge seit 2012
vor 11 Jahren

Setze in der Access-"Datenbank" die Spalte Zeichnungsnummer doch auf "indiziert (ohne Duplikate)", dann lässt die Datenbank doppelte Eingaben gar nicht erst zu und du bekommst eine entsprechende Exception.

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 11 Jahren

Das geht doch nur in Excel oder irre ich mich da jetzt?

M
184 Beiträge seit 2012
vor 11 Jahren

Du irrst dich.

Öffne deine Datenbank mal in Access. Klicke auf die entsprechende Tabelle mit der rechten Maustaste und wähle "Entwurfsansicht".
Nun solltest du deine Tabellendefinition sehen (also die Spalten, Feldtypen usw.) Dort wählst du dann dein Feld aus, und definierst dieses als "Indiziert (Ohne Duplikate)".

Aber das sind eigentlich Grundlagen von Datenbanken...

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 11 Jahren

Okay,

ich probiere das gleich mal aus.
Bisher hatte ich das in der Schule noch nicht, bin zur Zeit noch im 1. Lehrjahr.
Wenn das denn dann funktionieren sollte wäre es ja wunderbar, da ich bisher stundenlang im Netz gesurft hatte.

Melde mich dann gleich mit dem Ergebnis. 😃

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 11 Jahren

Also,

eine Exception bekomme ich soweit schon einmal, also garnicht schlecht.
Der Haken ist nur, das das Programm auf alle Spalten reagiert.
Das heißt wenn ich bei Zeichnungsnummer einen Wert mit '1' eintrage und bei Spalte A auch eine '1' kommt ebenfalls eine Exception.

Kann ich das noch irgendwie anders abfangen?

Hab es gerade gelöst, es lag am PrimeryKey, hab diesen entfernt und es funktioniert, alles easy, perfekt. 😃

Danke,Danke,Danke:)

1.696 Beiträge seit 2006
vor 11 Jahren

Ähm ... wie meinst du das? Es geht um den gesamten Datensatz und nicht um eine Spalte, d.h. wenn du in der einen Spalte die Regel verletzt, wird natürlich die Exception geworfen, unabhängig davon, ob du in den anderen Spalten Werte korrekt hast oder nicht.

Wenn du aber Datensatz nur ändern willst dann mußt du UPDATE absetzen und nicht INSERT!

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

M
184 Beiträge seit 2012
vor 11 Jahren

Du solltest aber trotzdem einen Primärschlüssel in deiner Tabelle haben. Normalerweise wird dieser als ID (Typ: Autowert) angelegt.

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 11 Jahren

Bisher hatte ich es so, dass wenn in der Datenbank unter der Spalte "Zeichnungsnummer" ein 'A' drin steht, und ich einen neuen Datensatz hinzufüge, und ebenfalls unter "Zeichnungsnummer" ein A editiere ich eine Exception bekomme.

Das war soweit auch richtig.

Nun möchte ich aber, das mehrere Spalten schon geprüft werden auf Dublikate.
Das ganze soll dann in etwa so aussehen:
ID A B C Zeichnungsnummer
1 1 1 1 M25S
2 1 2 1 M25S

Das Programm soll diesen Datensatz mit in die Datenbank nehmen, zwar ist A,C und Zeichnungsnummer gleich, jedoch die Spalte B nicht.
Wenn also A = B = C =Zeichnungsnummer in der Datenbank bisher eingegeben wurde, soll eine Exception kommen.

Kann mir da vielleicht jemand einen Denkanstoß geben? 😃

Gruß,
Paddy

4.221 Beiträge seit 2005
vor 11 Jahren

PrimaryKey=ID

UniqueKey= A, B ,C, Zeichnungsnummer

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

1.696 Beiträge seit 2006
vor 11 Jahren

Hallo,

Google mal nach: multi column unique/primary key

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

4.221 Beiträge seit 2005
vor 11 Jahren

Wobei wenn klar ist, dass mehrere Felder zusammen Unique sind, dann musst Du Dir gut überlegen, ob du diese Zusammen nicht als PrimaryKey einsetzen willst (und auf das ID-Feld verzichten willst).

Nachtrag: Aber das sind eigentlich Datenbank-Grundlagen

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

P
Paddy93 Themenstarter:in
62 Beiträge seit 2011
vor 11 Jahren

Ich schau mir das nacher und Morgen noch einmal an, und werde mich da mal schlau machen, bei Fragen melde ich mich wenn dann direkt morgen spätestens dann aber Dienstag, und vielen Dank erst einmal für weitere Tips. 😃

Hinweis von herbivore vor 11 Jahren

Nein, damit muss es jetzt mal gut sein. Programmierhans hat es gesagt: das sind Datenbank-Grundlagen, siehe [Hinweis] Wie poste ich richtig? Punkt 1.1.1.

Thema geschlossen