Fehler „Der Datentyp einer Spalte kann nicht geändert werden, sobald sie Daten enthält“ im Visual Studio 2005 DataSet Designer

StackOverflow https://stackoverflow.com/questions/47217

Frage

Ich habe ein DataSet in VisualStudio 2005.Ich muss den Datentyp einer Spalte in einer der Datentabellen ändern System.Int32 Zu System.Decimal.Wenn ich versuche, den Datentyp in zu ändern DataSet Designer Ich erhalte die folgende Fehlermeldung:

Der Eigenschaftswert ist ungültig.Der Datentyp einer Spalte kann nach Daten nicht geändert werden.

Nach meinem Verständnis sollte dies eine Änderung des Datentyps im Schema für das DataSet bedeuten.Ich verstehe nicht, wie es irgendwelche Daten geben kann, die diesen Fehler verursachen können.

Hat jemand irgendwelche Ideen?

War es hilfreich?

Lösung

Ich erhalte den gleichen Fehler, aber nur für Spalten mit DefaultValue auf einen beliebigen Wert (außer dem Standardwert) setzen <DBNull>).Ich habe dieses Problem folgendermaßen umgangen:

  1. Spalte Standardwert:Eintippen <DBNull>
  2. Speichern Sie den Datensatz und öffnen Sie ihn erneut

Andere Tipps

Da gefüllte Datentabellen keine Änderung im Schema zulassen, kann eine Problemumgehung wie folgt angewendet werden:

  1. Erstellen Sie eine neue Datentabelle

  2. Verwenden Sie die Klonmethode von DataTable, um das DataTable mit derselben Struktur zu erstellen und Änderungen an dieser Spalte vorzunehmen

  3. Verwenden Sie am Ende die Importrow -Methode von DataTable, um sie mit Daten zu füllen.

HTH

Ich habe eine Lösung gefunden.Wenn ich die Datenspalte lösche und sie mit dem anderen Datentyp wieder hinzufüge, funktioniert es.

Für diejenigen, die dies über Google finden und einen etwas anderen Fall haben, in dem Ihre Tabelle Daten enthält und Sie eine neue Spalte hinzufügen (wie ich): Wenn Sie die Spalte erstellen und den Datentyp in separaten Anweisungen festlegen, erhalten Sie ebenfalls dieselbe Ausnahme.Wenn Sie dies jedoch in derselben Anweisung tun, funktioniert es einwandfrei.

Also statt dessen:

var column = myTable.Columns.Add("Column1");
column.DataType = typeof(int); //nope, exception!

Mach das:

var column = myTable.Columns.Add("Column1", typeof(int));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top