[brauche Hilfe] ADO MDB SQL Abfrage Rueckgabe eines Boolean Wertes Sprachunterschiede "Wahr und true"



  • Ich hab eine Access Datenbank in der ein Feld als Ja/Nein definiert ist, wenn ich diese abfrage, bekomme ich den String "Wahr" zurück. Wenn ich diesen String nun in einer if - Anweisung auf Wahr setze bekomme ich bei einem englisch sprachigen Client Probleme da bei der Abfrage die Rückgabe des Wertes "true" wäre und dieser nicht mehr der if - Anweisung entspricht.

    int a = IntToBool(Query->FieldByName("status")->AsBoolean);
    

    Ist natürlich so falsch und funktioniert nicht, hat jemand ein Tip wie ich das schreiben muss?

    Ich kann das Feld leider nicht mit Integer ansprechen....



  • Hallo

    Ein ordentliches Bool-Feld arbeitet mit den Werten 1 und 0 oder mit Konstanten True und False. Wenn das von dem Access-Bool-Feld nicht gemacht wird, dann solltest du entweder auf einen Integer-Typ ausweichen (mit 0 und 1), oder besser gleich Access gegen ein vernünftiges modernes DBMS austauschen.

    Edit : Den Sinn deiner Zeile verstehe ich aber auch nicht ganz. Warum nicht einfach

    bool a = Query->FieldByName("status")->AsBoolean;
    

    bis bald
    akari



  • wenn ich den bool in int wandele koennte ich if (a!=1) schreiben und die bejaung der negation erfragen quasi

    wenn du dein account nicht existiert dann erstelle einen

    da ja if immer gleich angibt muss wahr sein um zu funktionieren und alles andere am else bleibt

    habs aber anders geloest durch die direkte abfrage in der if anweisung, ich wollte mir das else sparen aber so gehts auch

    dank dir trotzdem fuer den tip werds mal notieren



  • Hallo

    lionellvp schrieb:

    wenn ich den bool in int wandele koennte ich if (a!=1) schreiben und die bejaung der negation erfragen quasi

    Und warum must du dazu den bool in ein int umwandeln?

    bool a = ...;
    if (a != true)
    {
    }
    // oder noch kürzer
    if (!a)
    {
    }
    

    da ja if immer gleich angibt muss wahr sein um zu funktionieren und alles andere am else bleibt

    habs aber anders geloest durch die direkte abfrage in der if anweisung, ich wollte mir das else sparen aber so gehts auch

    😕 Für den Fall das ich dich nicht komplett falsch verstanden habe :
    Dir ist schon klar, das man jede beliebige Bedingung, die man in einem if verwenden kann, auch negieren kann?

    if (a != b)
    {
      // Tue A
    }
    else
    {
      // Tue B
    }
    // Die Bedingung negieren, dann drehen sich die beiden Fälle um
    if (a == b)
    {
      // Tue B
    }
    else
    {
      // Tue A
    }
    

    bis bald
    akari



  • wusste nicht das es auch fuer datenzugriffe moeglich ist

    if (!Query->FieldByName("active")->AsBoolean)

    sollte dann die negation der abfrage erzeugen gut zu wissen thx


Anmelden zum Antworten