-
QtmhCvtDb numerischer Felder mit Dezimalkomma
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
-
... 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
-
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
-
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 ?
-
... 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
 Zitat von Fuerchau
Bist du sicher, dass du auch ein Komma zurückbekommst ?
-
Nun ja, dann kann ja je nach User (Land) wahlweise Komma oder Punkt kommen. Dann darf ich mich sowieso nicht auf das API verlassen.
-
... es sei denn, da ist Client seitig Code (Javascript) dazwischen, der dann auch die Decimal Points mit erledigen kann...
D*B
 Zitat von BenderD
... 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
-
 Zitat von Fuerchau
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
-
... 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
 Zitat von timeless
Wie mach ich das denn mit JavaScript?
timeless
-
-
 Zitat von timeless
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
Ich tausche das "," aus der Anwendereingabe gegen den ".",
bevor ich dann die API aufrufe.
Also, lesen Browserinput, dann diesen hier..:
*
* Aufbereitung Browser-Parameter
C clear w1pos 4 0
C do *hival
C eval w1pos =
C %scan('%6B':indata)
C if w1pos = *zeros
C leave
C endif
C eval %subst(indata:w1pos:3) = '%4B'
C enddo
und dann konvertieren.
Bitte, ja, das geht noch besser, es ist aber Jahre alt, und
funktioniert !
Vielleicht kommst du ja damit ohne java weiter !
Peet
-
 Zitat von Peet
C clear w1pos 4 0
C do *hival
C eval w1pos =
C %scan('%6B':indata)
C if w1pos = *zeros
C leave
C endif
C eval %subst(indata:w1pos:3) = '%4B'
C enddo
Code:
/Free
indata = %xlate ('%6B' :'%4B' :indata);
/End-Free
ist einfacher und du brauchst kein do-*hival-*pfui
Similar Threads
-
By steven_r in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 07-11-06, 11:01
-
By pedro-zapata in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 11-09-06, 12:34
-
By dino in forum NEWSboard Drucker
Antworten: 4
Letzter Beitrag: 01-09-06, 12:54
-
By Xanas in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 13-06-06, 14:38
-
By uweulmer in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 08-01-01, 13:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks