Laden...

typisiertes DataSet - Boolean - 0/1

Erstellt von Froggie vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.099 Views
F
Froggie Themenstarter:in
323 Beiträge seit 2007
vor 13 Jahren
typisiertes DataSet - Boolean - 0/1

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?

G
538 Beiträge seit 2008
vor 13 Jahren

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)

F
Froggie Themenstarter:in
323 Beiträge seit 2007
vor 13 Jahren

Leider habe ich keinen zugriff auf das SQL-Statement.
Gibt es keine andere Lösung dafür?

W
955 Beiträge seit 2010
vor 13 Jahren

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?

T
156 Beiträge seit 2010
vor 13 Jahren

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