Hallo,
Ich habe die typische Fehlermeldung System.Data.NoNullAllowedException: Spalte 'ID' lässt nicht 'nulls' zu.
Viele Suchergebnisse habe ich bereits durchgelesen, aber keines hat mir wirklich geholfen, das Problem zu lösen.
Grundlagen zur Fragestellung
Ich erstelle in VS 2010 eine C# WindowsForm-Anwendung, auf der sich ein DataGridView ( dgvAdressen ) befindet.
Als Datenquelle nutze ich eine AccessDB ( .mdb ), da es bei Verwendung eines SQL Server 2012 Express bereits am Verbindungsaufbau scheitert ( selbst mit sa keine Chance ).
Nun habe ich zunächst über Projekt -> Klasse hinzufügen eine typisierte neue DataSet-Klasse zugefügt ( adressenDataSet ).
Im Designer habe ich dann einen TableAdapter hinzugefügt und mir die Queries für UPDATE und INSERT generieren lassen.
In der DataGridView dgvAdressen dann als Datenquelle die im DataSet adressenDataSet verfügbare Tabelle adressen ausgewählt.
Wen wundert's, es werden mir im DGV alle Daten sauber angezeigt.
Wo ist mein Problem
Mein Problem liegt bei dem generierten INSERT-Befehl in Verbindung mit der GUID-Spalte ID in der AccessDB.
Vor einigen Monaten hatte Ralf Jansen mir beim UPDATE-Problem bereits geholfen: Änderungen in DataGridView in Datenbank übernehmen
Nun kommt aber hinzu, daß auch INSERTS über die Maske laufen sollen.
Das Problem liegt wie gesagt in der ID-Spalte, die als ReplikationsID ( GUID ) in Access definiert wurde.
Die DGV generiert aber logischerweise keine eindeutige GUID, so daß er natürlich ein Problem beim INSERT hat ( siehe oben ).
Meine Frage
Welche Möglichkeiten habe ich jetzt, neue Rows über die DGV sauber in die DB-Tabelle zurückzuschreiben.
Die Verwendung soll nach Möglichkeit ohne weiteren Button beibehalten bleiben. Ich möchte gerne beim Verlassen der neuen DS-Zeile auf die INSERT-Query des TableAdapter zurückgreifen.
Ich komme da einfach nicht weiter und habe bereits Stunden mit Suchen und nachvollziehen verbracht.
Danke
Ich habe die typische Fehlermeldung System.Data.NoNullAllowedException: Spalte 'ID' lässt nicht 'nulls' zu.
Viele Suchergebnisse habe ich bereits durchgelesen, aber keines hat mir wirklich geholfen, das Problem zu lösen.
Grundlagen zur Fragestellung
Ich erstelle in VS 2010 eine C# WindowsForm-Anwendung, auf der sich ein DataGridView ( dgvAdressen ) befindet.
Als Datenquelle nutze ich eine AccessDB ( .mdb ), da es bei Verwendung eines SQL Server 2012 Express bereits am Verbindungsaufbau scheitert ( selbst mit sa keine Chance ).
Nun habe ich zunächst über Projekt -> Klasse hinzufügen eine typisierte neue DataSet-Klasse zugefügt ( adressenDataSet ).
Im Designer habe ich dann einen TableAdapter hinzugefügt und mir die Queries für UPDATE und INSERT generieren lassen.
In der DataGridView dgvAdressen dann als Datenquelle die im DataSet adressenDataSet verfügbare Tabelle adressen ausgewählt.
Wen wundert's, es werden mir im DGV alle Daten sauber angezeigt.
Wo ist mein Problem
Mein Problem liegt bei dem generierten INSERT-Befehl in Verbindung mit der GUID-Spalte ID in der AccessDB.
Vor einigen Monaten hatte Ralf Jansen mir beim UPDATE-Problem bereits geholfen: Änderungen in DataGridView in Datenbank übernehmen
Nun kommt aber hinzu, daß auch INSERTS über die Maske laufen sollen.
Das Problem liegt wie gesagt in der ID-Spalte, die als ReplikationsID ( GUID ) in Access definiert wurde.
Die DGV generiert aber logischerweise keine eindeutige GUID, so daß er natürlich ein Problem beim INSERT hat ( siehe oben ).
Meine Frage
Welche Möglichkeiten habe ich jetzt, neue Rows über die DGV sauber in die DB-Tabelle zurückzuschreiben.
Die Verwendung soll nach Möglichkeit ohne weiteren Button beibehalten bleiben. Ich möchte gerne beim Verlassen der neuen DS-Zeile auf die INSERT-Query des TableAdapter zurückgreifen.
Ich komme da einfach nicht weiter und habe bereits Stunden mit Suchen und nachvollziehen verbracht.
Danke
Comment