überprüfung von isNumber

Community help and discussion for RapidRep Designer Application

überprüfung von isNumber

Postby xuxin27 » 12 Jun 2017, 10:25

Hallo Morgen Werner,
ich möchte mal gerne testen, ob ein Attribut nur numerisch in Source File ist.
In SQL funktioniert: length(TRIM(TRANSLATE($Attribute, '+-.0123456789', ' '))), aber in Rapidrep nicht.
Ich habe auch versucht, LENGTH(TRIM(REPLACE($Attribute, '+-.0123456789', ' ')))is not null or LENGTH(TRIM(replace(EM_KURS, '+-.,0123456789', ''))) !='0' aber falsche Fehlermeldung werden geliefert, Fehlermeldung trotz Numerischen Ausprägungen.

es wäre dir sehr dankbar, wenn du mir bei den Punkte weiterhelfen könntest.
vielen dank im Voraus und vielen Dank
Xin
xuxin27
 
Posts: 10
Joined: 12 Jun 2017, 09:46

Re: überprüfung von isNumber

Postby maerklw » 12 Jun 2017, 10:51

Hi Xin,

REPLACE geht in diesem Fall so nicht, weil die funktion nur den ganzen String sucht und Du möchtest ja eigentlich zeichenweise ersetzen.
Von der Idee her gut, aber die Umsetzung machen wir in der Regel anders:

1. du legst in Deiner Reportdef eine JavaScript Funktion namens isNumeric an (siehe definition unten).
2. im Regelwerk schreibst Du ${IDB}.isNumeric(EM_KURS)

Wichtig ist, dass die Javascript Funktion im Erweitert/Advanced Tab als "function is available in the internal database" gekennzeichnet wird. Wegen der Signatur und Rückgabe der Funktion habe ich dir einen Screenshot angehängt.

// z.B. 123.324432 liefert: wahr/true
// z.B. 1.E5 liefert wahr (Exponentialdarstellung)
// z.B. 12A liefert false
// z.B. 54,76 liefert false (wegen "," Zeichen)
return Number(parseFloat($column))== $column;


Ob ein Text eine Ganzzahl repräsentiert kann man z.B. über isInteger(EM_KURS) prüfen. Dabei kommt ein regulärer Ausdruck zum Einsatz:

return $column.replace(/[0-9]/g, '').length == 0;
Attachments
function_Javascript.jpg
definition der Funktion
function_Javascript.jpg (72.68 KiB) Viewed 1971 times
function_AdvancedTab.jpg
Einstellungen im Advanced/Erweitert tab
function_AdvancedTab.jpg (59.89 KiB) Viewed 1971 times
maerklw
 
Posts: 15
Joined: 20 Feb 2014, 22:51

Re: überprüfung von isNumber

Postby maerklw » 12 Jun 2017, 11:08

eine nicht ganz so präzise Methode um DQ auf Zahlen durchzuführen ist:

WHERE NOT (LOWER(id) = UPPER(id))

Damit werden auf jeden Fall schon mal Buchstaben erkannt, die in einer Zahl nichts verloren haben.
Allerdings kann dabei ein +, - oder ein Komma/Punkt an beliebiger Stelle und beliebig oft vorkommen.
maerklw
 
Posts: 15
Joined: 20 Feb 2014, 22:51


Return to RapidRep Designer



Who is online

Users browsing this forum: No registered users and 1 guest

cron