toInt() aus SQL-Datenbank bringt kein Ergebnis

Alles rund um die Programmierung mit Qt
Antworten
mucmonkey
Beiträge: 5
Registriert: 5. März 2009 10:31
Wohnort: München

toInt() aus SQL-Datenbank bringt kein Ergebnis

Beitrag von mucmonkey »

Hallo Forum,

seit der Qt Version 4.4.3 habe ich ein merkwürdiges Verhalten gefunden.
Ich wollte meine bisher funktionierenden Projekte von der Qt Version 4.4.1 auf die 4.4.3 oder 4.5.0 updaten. Aber es gibt ein Problem:

Alle Gleitkomma-Zahlenwerte, die per odbc aus nem SQL-Server in eine QSqlQuery eingelesen werden und dann per toInt() konvertiert werden sollen, geben nur 0 zurück. Die Umwandlung schägt also fehl.
Konvertiert die SQL-Abfrage den Wert selber schon in Integer, dann funktioniert es.
Laut Qt ist der Rückgabewert ein String (z.B. "9000.0").

Is das ein Fehler im Odbc, QString oder sonstiger Komponente oder wird nun strikter auf die Datentypen geachtet?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

9000.0 ist aber kein Int.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Christian81 hat geschrieben:9000.0 ist aber kein Int.
Ja und?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Das heißt ein String muss einen Int enthalten, damit Qt einen Int davon machen kann.
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

Das würde bedeuten die Tabelle hat eine varchar Spalte statt decimal. Andernfalls sollte QVariant::toInt() funktionieren.
mucmonkey
Beiträge: 5
Registriert: 5. März 2009 10:31
Wohnort: München

Beitrag von mucmonkey »

Dass "9000.5" kein Integer ist is mir klar. Aber das ist der Wert, den die QSqlQuery beinhaltet.

Die Datenbankspalte ist vom Typ "float".
mucmonkey
Beiträge: 5
Registriert: 5. März 2009 10:31
Wohnort: München

Beitrag von mucmonkey »

Hat jemand eine idee oder dieselbe Erfahrung gemacht?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Tja... wenn es ein float ist würde ich einfach mal QString::toFloat() probieren... :roll:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
mucmonkey
Beiträge: 5
Registriert: 5. März 2009 10:31
Wohnort: München

Beitrag von mucmonkey »

Ich habs.. Keine Lösung aber zumindest den Grund :)

Für den Fehler gibt es bei qtsoftware im Task Traker bereits einen Fehler:
When using ODBC driver, type FLOAT (ODBC type SQL_C_DOUBLE) should become QVariant::Double.

With Qt 4.4.2, SQL_C_DOUBLE is QVariant::String.
Hier der Eintrag im Task Traker:
http://www.qtsoftware.com/developer/tas ... &id=228387
Antworten