Der Original-Titel war "DataGridView auf Doppelte Einträge prüfen". Offensichtlich ist es aber besser, das Problem an den Wurzel zu packen.
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
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.
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...
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. 😃
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:)
Ä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
**:::
Du solltest aber trotzdem einen Primärschlüssel in deiner Tabelle haben. Normalerweise wird dieser als ID (Typ: Autowert) angelegt.
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
PrimaryKey=ID
UniqueKey= A, B ,C, Zeichnungsnummer
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
Hallo,
Google mal nach: multi column unique/primary key
Grüße
**:::
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...
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. 😃
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.