PDA

View Full Version : QtmhCvtDb numerischer Felder mit Dezimalkomma



Seiten : [1] 2

timeless
22-04-10, 07:40
Hallo,
Wenn ich in meinem CGI-Programm in den H-Bestimmungen
"H DECEDIT('0,')" angebe,
die Felder mit
"%editc(XXX:'3')" alphanumerisch wandele und anschließend mit
"QtmhWrStout" ausgebe,
werden sie wie gewünscht im Format
999,99 dargestellt.

Lese ich dieses Format (999,99) nun mit
"QtmhGetEnv" wieder ein und schreibe es mit
"QtmhCvtDb" in das Datebankfeld zurück, ist das Datenbankfeld Null (0,00) und der Wert weg.

Ohne die H-Bestimmungen wird das Format 999.99 ordentlich übertragen.

Nun habe ich an anderer Stelle gelesen, dass "QtmhCvtDb" wohl mit dem Komma ein Problem hat.

Aber wie kann man das Problem lösen?

Alle numerische Felder alphanumerisch übertragen und im CGI-Programm selber ins numerische Datenbankfeld übertragen?

Oder gibt es da noch eine andere Lösung?

Viele Grüße
timeless

BenderD
22-04-10, 07:54
... selbstredend gibt es da besseres: Java Server Pages, selbst PHP dürfte da noch eleganter sein als CGI.

- lass mich raten: das API ist Ami, tausch mal vor dem Aufruf das Komma gegen einen decimal point

D*B

timeless
22-04-10, 08:11
Vielen Dank für die schnelle Antwort.

Das Komma vor dem Aufruf von "QtmhCvtDb" durch den Punkt zu ersetzen würde natürlich in anderen Textfeldern zu Änderungen führen.

Die Numerischen Felder einzeln gezielt im QueryString ändern ist auch recht aufwändig.

Gibts denn da nichts eiheitliches, irgendeine Einstellung, vielleicht im API
"QtmhCvtDb"?

viele Grüße
timeless

Fuerchau
22-04-10, 08:32
Ggf. geht das API von der Job-Einstellung des Dezimalformates aus (es kann ja nichts von deiner RPG-Einstellung wissen.

Ich gehe mal davon aus, dass das API einen Dezimalpunkt erwartet.

Ist die Struktur, die du zurückbekommst fest definiert ?
Dann kannst du dies auch ohne API halt einzeln übertragen und per %dec() den Wert zurückbekommen.
Bist du sicher, dass du auch ein Komma zurückbekommst ?

BenderD
22-04-10, 09:07
... HTML kennt nur Textfelder, du bekommst also das zurück, was du selber hingesendet hast, oder das, was der Benutzer in das Formular reingetippt hat.

Dieter


Bist du sicher, dass du auch ein Komma zurückbekommst ?

Fuerchau
22-04-10, 10:49
Nun ja, dann kann ja je nach User (Land) wahlweise Komma oder Punkt kommen. Dann darf ich mich sowieso nicht auf das API verlassen.

BenderD
22-04-10, 11:03
... es sei denn, da ist Client seitig Code (Javascript) dazwischen, der dann auch die Decimal Points mit erledigen kann...
D*B


... HTML kennt nur Textfelder, du bekommst also das zurück, was du selber hingesendet hast, oder das, was der Benutzer in das Formular reingetippt hat.

Dieter

timeless
22-04-10, 12:11
Ggf. geht das API von der Job-Einstellung des Dezimalformates aus (es kann ja nichts von deiner RPG-Einstellung wissen.

Ich gehe mal davon aus, dass das API einen Dezimalpunkt erwartet.

Ist die Struktur, die du zurückbekommst fest definiert ?
Dann kannst du dies auch ohne API halt einzeln übertragen und per %dec() den Wert zurückbekommen.
Bist du sicher, dass du auch ein Komma zurückbekommst ?

Vielen dank euch beiden.

Die Jobeinstellungen sind OK.

Das API verlangt den Dezimalpunkt.

Die Struktur ist dynamisch.

Das Komma kommt auch zurück.

Es gibt nun wohl 2 Möglichkeiten:

1. Query String gezielt modifizieren und dann in die Datenbank mit dem API schreiben.

2. JavaScript

Wie mach ich das denn mit JavaScript?

timeless

BenderD
22-04-10, 12:23
... Voraussetzung für den Einsatz von Javascript ist erst mal, dass alle verwendeten Browser das können und zulassen!
Das Scriptlet muss dan im CGI generiert werden und an den Browser gesendet werden. Für das Scriptlet selber, solltest du mal die Suchmaschine deines Vertrauens bemühen, oder die Frage an ein JavaScript Forum adressieren.

D*B



Wie mach ich das denn mit JavaScript?
timeless

BenderD
22-04-10, 12:55
JavaScript : Formular : Eingabe Prüfen (http://www.i-coding.de/www/de/javascript/formular/eingabe-pruefen.html)

das hier sieht ganz gut aus!

D*B