Domino 9 und frühere Versionen > ND7: Entwicklung
Problem mit IsNumeric
ewald:
Hallo zusammen,
grad' steh ich irgendwie aufm Schlauch: Ich hab ein numerisches Feld, das möchte ich gern abfragen, ob auch wirklich ein numerischer Wert drinsteht. In der Designe Help hab ich nur IsNumeric gefunden, ich möcht aber eigentlich andersrum abfragen: NotIsNumeric.
Wie stell' ich den das an?
Gruss Ewald
LN4ever:
Indem du statt einem
If IsNumeric(expr) Then ...
schreibst
If Not IsNumeric(expr) Then ...
Gruß
Norbert
ewald:
@Norbert,
das hab ich auch gedacht...
If Not Isnumeric(mIOT_Spend) Then
Messagebox "keine zahl",MB_OK+MB_ICONSTOP, BoxTitle$
uidoc.gotofield("mIOT_Spend")
Continue = False
Exit Function
End If
Wenn in dem Feld mIOT_Spend aber Character stehen, kommt nicht meine Messagebox sondern nur 2 Notes-Fehlermeldungen und genau das wollt ich ja vermeiden.
Gruss Ewald
flaite:
Theoretisch kannst du Errorhandling dafür benutzen. Das ist aber aus verschiedenen Gründen keine gute Idee:
a) verwirrt spätere maintainance Programmierer.
b) ist viel code
c) sieht unschön aus.
d) sehr schlecht für die Performance.
Funktioniert aber und hat funktional keine Nebenwirkungen. (natürlich performance und Wartbarkeit, aber das ist nicht-funtional)
Code für einen Button in einer Maske:
--- Code: ---Sub Click(Source As Button)
On Error Goto FehlerGlobal
Dim isANumber As Boolean
Dim xTremeNotNumeric As Variant
' RUNDE 1
isANumber = True
xTremeNotNumeric = "zwei"
On Error Goto FehlerSpezial1
zweiUndPfirsich= 4 * xTremeNotNumeric
Goto weiter1
FehlerSpezial1:
If (Err = 13) Then
isANumber = False
Resume Next
End If
weiter1:
on Error goto FehlerGlobal
If (isANumber = False) Then
Msgbox |"| &Cstr(xtremeNotNumeric) & |"|& " is Not a number."
Else
Msgbox |"| &Cstr(xtremeNotNumeric) & |"|& " is a number."
End If
' RUNDE 2
isANumber = True
xTremeNotNumeric = 2
On Error Goto FehlerSpezial2
zweiUndPfirsich= 4 * xTremeNotNumeric
Goto weiter2
FehlerSpezial2:
If (Err = 13) Then
isANumber = False
Resume Next
End If
weiter2:
on Error goto FehlerGlobal
If (isANumber = False) Then
Msgbox |"| &Cstr(xtremeNotNumeric) & |"|& " is Not a number."
Else
Msgbox |"| &Cstr(xtremeNotNumeric) & |"|& " is a number."
End If
isANumber = true
Exit Sub
FehlerGlobal:
Print "Fehler:" & Error$ & "(" & Cstr(Err) & ") in Zeile:" & Cstr(Erl)
Exit Sub
End Sub
--- Ende Code ---
koehlerbv:
Ewald, Du hast leider die "2 Notes-Fehlermeldungen" nicht mit gepostet.
Ich vermute, dass Nr. 1 lautet, dass Text nicht in Zahl umgewandelt werden kann.
Nr. 2 könnte daher rühren, dass Du im QuerySave Code stehen hast und dieser jetzt nochmal meldet, dass die Feldvalidierung fehlgeschlagen ist (QuerySave startet gleich mit einem ErrorCode > 0).
Hier konkurrieren Backend und Frontend. Das Frontend stellt fest, dass im Zahlenfeld gar keine Zahl steht. Das Backend hat ein Problem damit, dass das ganze Item nicht greifbar ist, da aus dem Feld mit diesem Typ im Backend von Notes nichts angelegt werden kann.
Die Frontend-Meldung kannst Du nur schwerlich umgehen, im Backend musst Du vorab entsprechende Prüfungen einbauen.
Mit noch ein paar mehr Infos von Dir werden wir auch besser helfen können.
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln