Anmelden

View Full Version : QtmhCvtDb numerischer Felder mit Dezimalkomma



Seiten : 1 [2]

Peet
22-04-10, 13:07
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

andreaspr@aon.at
22-04-10, 14:18
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


/Free
indata = %xlate ('%6B' :'%4B' :indata);
/End-Free
ist einfacher und du brauchst kein do-*hival-*pfui ;)

Pikachu
22-04-10, 14:23
/Free
indata = %xlate ('%6B' :'%4B' :indata);
/End-Free
ist einfacher und du brauchst kein do-*hival-*pfui ;)

Wird denn damit nicht jede 6 in der Zeichenkette durch eine 4 ersetzt?

andreaspr@aon.at
22-04-10, 14:38
Wird denn damit nicht jede 6 in der Zeichenkette durch eine 4 ersetzt?

Ups, hab ich übersehen. Trotzdem ohne do-*hival-*pfui

/Free
Exec Sql Set :indata = Replace (:indata, '%6B' ,'%4B');
/End-Free

Fuerchau
22-04-10, 16:33
Wie kommst du auf '%6B' ?
Das ist die Zeichenkette "Prozent 6 B" und nicht das Komma. Ich denke du meinst X'6B'.
Ausserdem werden dann auch Kommata in Textfeldern ausgetauscht.

Du wirst wohl nicht um eine Feld für Feld Bearbeitung herumkommen.

BenderD
22-04-10, 16:43
... JavaScript hat mit Java nix zu tun, außer das der Name ähnlich ist.
Die entscheidende Frage ist ob die Clients Javascript zulassen. Außer Feldaufbereitung kann man auch elementare Prüfungen dahin verlagern, was wesentlich eleganter und performanter ist und solche Komponenten sind frei verfügbar!

D*B



Vielleicht kommst du ja damit ohne java weiter !
Peet

timeless
27-04-10, 06:38
Danke für die vielen Antworten.

Da das API QtmhCvtDb bei der Umsetzung numerischer Felder leider noch mehr Probleme bereitet, werde ich ganz darauf verzichten und die Umsetzung und Prüfung der Formulareingaben selber programmieren.

Probleme mit QtmhCvtDB:
1. Bei einem generellen xlate von Dezimalkomma zu Dezimalpunkt sind auch alle Komma in Textfeldern umgesetzt.
2. Eine Umsetzung mit JavaScript muß ich im CGI - Programm prüfen und wenn nicht erfolgt nachvollziehen.
3. Bei fehlerhaften Eingaben (alphanumerische Eingaben oder Leerstellen) wird ein numerisches Zielfeld auf Null gesetzt und der ursprüngliche Inhalt ist weg.

Viele Grüße

timeless

Pikachu
27-04-10, 08:10
Wie kommst du auf '%6B' ?
Das ist die Zeichenkette "Prozent 6 B" und nicht das Komma. Ich denke du meinst X'6B'.
Eigentlich ist %6B das kleine k wenn es denn %-kodiert (http://de.wikipedia.org/wiki/URL-Encoding) rüberkommt.