Seite 1 von 1
Markierfeldwerte werden falsch ausgelesen
Verfasst: Mi 1. Feb 2023, 16:53
von MPs-Con
Ich habe eine Abfrage per sql-Statement im Makro auf eine Artikeltabelle zum Auslesen der Artikelwerte geschrieben.
Bei Ausführung wird mir für die 4 Markierfelder in der Zeile immer der Wert '0' zurückgegeben, gleichgültig, ob eine 1 oder eine 0 tatsächlich in der Tabelle steht. Alle anderen Daten, wie z.B. ArtikelNr, Artikelbeschreiung, -Preis usw. werden korrekt den dafür vorgesehenen Variablen übergeben. Ich greife mit
iresult.next und get.int (habe auch get.short probiert) auf das Abfrageergebnis zu.
Was mache ich da falsch?
Viele Grüße
Mani
Re: Markierfeldwerte werden falsch ausgelesen
Verfasst: Mi 1. Feb 2023, 18:53
von F3K Total
Moin,
welchen Datentyp haben denn die Spalten der zugrundeliegenden Tabelle? Boolean?
Versuche es mit
Auf keinen Fall geht
wenn, dann
...usw.
Gruß R
Re: Markierfeldwerte werden falsch ausgelesen
Verfasst: Mi 1. Feb 2023, 20:18
von MPs-Con
Hallo R.,
danke für Deine Reaktion.
In der Tabelle haben die Felder den "Bit"-Typ, also 0 oder 1.
boolean habe ich auch schon ausprobiert, kommt "false", obwohl im Feld eine "1" steht.
.getint(), .getshort() und die anderen möglichen Typen habe ich ausprobiert, kommt als Ergebnis immer die 0 oder false, jedenfalls nicht der Wert, der im Feld steht. Die gleiche sql-Abfrage direkt in der Datenbank eingegeben liefert die richtigen Ergebnisse.
Gruß
Mani
Re: Markierfeldwerte werden falsch ausgelesen
Verfasst: Mi 1. Feb 2023, 21:55
von F3K Total
Moin,
habe gerade keinen Rechner, denke aber, dass es daran liegen könnte. Nimm doch mal boolean als Datentyp.
Gruß R
Re: Markierfeldwerte werden falsch ausgelesen
Verfasst: Do 2. Feb 2023, 07:48
von RobertG
Hallo Mani,
ich habe das gerade getestet und kann das für die MariaDB nachvollziehen. In Tabellen, Abfragen und Formularen klappt es mit der bit-Variablen. Starte ich aber eine Abfrage über Extras → SQL, dann kommt da statt der Inhalte für die bit-Variable ein leeres Feld. Gleiches gilt für Macros.
Die Botschaft, dass es sich um Ja bzw. Nein handelt scheint dennoch über zu kommen. Das zeigen ja schon Tabellen, Abfragen und Formulare.
Ich habe einmal die folgende Abfrage erstellt:
Code: Alles auswählen
SELECT CASE WHEN `Bool` THEN 1 ELSE 0 END FROM `test`.`tbl_Wert`
Die ergibt auch über Extras → SQL und über die Abfrage in Makros (mit getString oder getInt) '0' und '1' bzw mit getBoolean False und True.
Kommt natürlich gleich ins zukünftige Handbuch 7.6 - Kapitel MySQL/MariaDB, da das kein besonderes Kennzeichen der Makrobehandlung ist.
Ich habe das als Bug für die direkte Verbindung zur MariaDB weiter gegeben:
https://bugs.documentfoundation.org/sho ... ?id=153317
Taucht bei der JDBC-Verbindung nicht auf.
Gruß
Robert
Re: Markierfeldwerte werden falsch ausgelesen
Verfasst: Do 2. Feb 2023, 13:48
von MPs-Con
Hallo Robert,
erneut danke, mit dem work-around klappt es tatsächlich, wäre ich nie drauf gekommen.
Viele Grüße
Mani