Aducom sqlite Komponenten AsFloat liefert Exception



  • Hallo, habe eine SQLite Datenbank in der ich eine Tabelle mit Numeric Feldern habe.
    Wenn ich nun auf diese Tabelle über ein Query zugreife, meldet er mir z.B. das 7.5 kein gültiger Gleitkommawert ist.
    Ich kann natürlich den Wert als String einlesen, dann den Punkt durch ein Komma ersetzen und dann in einen Gleitkommawert casten. Nur kann man das nicht anders lösen ?



  • Hallo

    Das kommt mir schon ungewöhnlich vor. Normalerweise werden Numeric-Felder immer richtig konvertiert. Bist du sicher das dieses konkrete Feld wirklich den Numeric-Typ hat? Wenn es ein Ergebnisfeld einer Rechnung in einer Abfrage ist könnte es sein das es den Typ verliert und nur noch varchar ist.

    Als Workaround kannst du ja mal die Konstante DecimalSeparator von ',' auf '.' setzen und schauen ob das reicht. Aber das beeinflußt die Umwandlung Programmweit.

    bis bald
    akari



  • Ja, das Feld ist vom Typ numeric.
    Das umstellen des DecimalSeparators funktioniert. Nur verstehen tue ich das nicht, da es auch kein Ergebnisfeld ist.
    Das ist die SQL Query

    SELECT * FROM stunden WHERE kw = '1' ORDER BY datum;
    

    Da gibt es eine Spalte vom Typ 'numeric' arbeitsstunden.
    Da greife ich dann so drauf zu:

    stunden = query->FieldByName("arbeitsstunden")->AsFloat;
    

    😕



  • Hallo

    Also ich kenne die Datenbank-Anbindung der VCL nur so, das sie Dezimalzahlen mit '.' speichern, schon alleine um die Daten zwischen verschiedenen Sprachversionen austauschen zu können. Das scheint ein spezieller Fehler deiner Datenbank-Komponenten zu sein.

    bis bald
    akari



  • Wenn ich den Datentyp in Float ändere, dann klappt es.



  • The problem with , and . within floats has been solved and will be published within a few days.

    aducom software


Anmelden zum Antworten