Hallo!
Ich möchte ein typisiertes DataSet erstellen (über VS 2008). Dieses enthält eine Spalte mit dem Typ Boolean.
In der DB (Access) ist diese Spalte als string (also Text in Access) angelegt. Allerdings enthält diese Spalte entweder 1 oder 0.
Wenn ich das DatSet füllen will bekomme ich die Meldung, dass 0/1 nicht in Boolean gewandelt werden kann. Vermutlich soweit korrekt, ABER:
Wie kann ich dennoch den Typ der Spalte im DataSet auf Boolean lassen?
Kann man das beim Füllen irgendwie umwandeln?
Du könntest dein SQL zum Laden anpassen mit einem IF THEN ELSE Konstrukt für das besagte Feld ...
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)
Leider habe ich keinen zugriff auf das SQL-Statement.
Gibt es keine andere Lösung dafür?
Hi,
Du kannst eine berechnete Spalte anfügen
Erstellen von Dataset-Spalten mit Ausdrücken
Und dann als Ausdruck sowas wie myStringSpalte == "1". Willst Du die geänderten DataTable-Rows auch zurückschreiben können?
Hallo,
ein weiter Weg wäre, dass Du die zu der Row, die das betrifft, im DataSet eine partielle Klasse anlegst und dort eine bool-Property implementierst. Und diese gibt dann also "geparst" die andere Property zurück oder setzt diese als string-Wert.
So kannst Du den Datentyp in der Table belassen, musst nichts an dem Selct-Statement ändern und hast auch kein Stress beim evtl. speichern. Dies würde dann so in etwa aussehen:
public partial class DataSet1
{
public partial class Table1Row
{
public bool BoolProperty
{
get { return StringProperty.Equals("0") ? false : true; }
set { StringProperty = value ? "1" : "0"; }
}
}
}
Aber das ist eigentlich nur eine Notlösung, denn in der Datenbank kann allse möglich als String stehen. Und wenn das dann auch noch DBNull annehmen soll, wird das noch spaßiger.
LG, Marko