Domino 9 und frühere Versionen > ND7: Entwicklung

Problem mit IsNumeric

(1/7) > >>

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