Domino 9 und frühere Versionen > ND7: Entwicklung

Problem mit IsNumeric

<< < (5/7) > >>

koehlerbv:
Jo, das scheint genau so eine Sache gewesen zu sein, die irgendwann zu frühen R3-Zeiten auf der Lotusphere gewesen sein muss (anders ist es irgendwie nicht zu erklären!):
Da hocken zu später Stunde die Jungs und Mädels von Iris (für die Neieinsteiger: Das war das ursprüngliche Entwicklungsteam von Notes) auf einer After-Show-Party mit Entwicklern von Third-Party-Produkten zusammen, die Notes das Drucken beigebracht haben (wir wollen hier jetzt keine vermutete Firmennamen nennen ..). Irgendwas läuft auf der Party aus dem Ruder (auch hier ist pure Phantasie angesagt), und kurz darauf werden Forderungen angemeldet: "Ihr lasst das jetzt so mit den "Druckmöglichkeiten von Notes, und wir haben unser Geschäft ... und halten den Mund!"  ;D

Wie gesagt: Anders ist es kaum zu erklären, dass Notes bei simplen Druckaufträgen schon scheitert. Ausser, meine These ist korrekt: Sie meinen es wirklich ernst mit der Richtlinie "Notes macht Drucken überflüssig!". Dafür spricht ja auch einiges. Wenn sich die Organisationen umstellen würden ...

In diesem Sinne: Rettet den Wald!

Bernhard

Mark³:
Javascript im Client ist deutlich schneller als andere Sprachen zur Validierung, weil die Loopbacks zum Server entfallen. Das habe ich bereits in einer Notes 5-Schulung mal gelernt. In unserem Unternehmen (30k Anwender) hat niemand Javascript abgeschaltet (wenn doch muss er es einschalten, kann man auch programmatisch triggern:

--- Code: ---If session.GetEnvironmentValue("EnableJavaScript", True) = 0 Then
Call session.SetEnvironmentVar("EnableJavaScript", 1, True)
Msgbox "Diese Datenbank benötigt JavaScript-Unterstützung. " & Chr(10) _
& "Bitte starten Sie nun den Notes-Client neu, um die JavaScript-Unterstützung automatisch zu aktivieren.", _
48, "Neustart erforderlich"
Call SendCTRLF4
Exit Sub
End If

--- Ende Code ---

Einen Beispielcode für die Nummerneingabe findet ihr in eurer Lieblingssuchmaschine über den Suchsatz "You can force numbers-only entries" auf searchdomino.techtarget.com. Javascript hat ein paar Fußangeln im Client aber viele Dinge gehen NUR mit Javascript oder eben gar nicht. Und wer im Web 2.0-Zeitalter Javascript abschaltet der kann eh nichts mehr machen  ;)
Die Idee des Tipps ist, eine Javascript-Funktion in einem kurzen Intervall (jede 10ms oder so) sich selbst aufrufen zu lassen solange man in dem zu prüfenden Feld steht. Sobald ein Zeichen ungleich numeric erscheint wird es wieder entfernt. Ist nicht perfekt, aber funktioniert.

m3:

--- Zitat von: Mark³ am 02.04.07 - 07:49:38 ---Javascript im Client ist deutlich schneller als andere Sprachen zur Validierung, weil die Loopbacks zum Server entfallen.
--- Ende Zitat ---
If Client == Webbrowser.

Wenn Du im Notes-Client bist, entfällt der Roundtrip zum Server bei LotusScript ebenfalls.

Mark³:
ja das hört sich logisch an.
JavaScript (JS) hat gegenüber LotusScript (LS) aber den Vorteil, mehr Events bereitzustellen. Und benötigt man bei LS nicht oft auch uidoc.refresh? Hab lange nicht mehr für den Client programmiert, daher habe ich keine konkreten Beispiele dafür...

Und bei LS hat man im uidoc doch keinen Zugriff auf den Alias von Werten, oder? Mit JS kann man dagegen mit .text den Wert und mit .value den Alias ansprechen.

Kann das jemand bestätigen? Hab das alles in Notes 5 zum letzten Mal intensiv genutzt, weiß daher nicht mehr alle Details...

ewald:
@Bernhard,

boah, jetzt wird' aber heftig... ;-)
Es geht wirklich nur um Notes. Kein HTML, kein JS und nur Notes Client.

Ich will einfach nur auf Knopfdruck (hinter dem Button steht eine Script-Funktion) prüfen, ob in einem bestimmten Feld der gerade geöffneten Maske (Feld heisst mIOT_Spend) auch wirklich Ziffern drinstehen. Das Feld ist als Zahlenfeld definiert.

So sieht mein code zum checken des Feldeintrages aus:

   If Not Isnumeric(mIOT_Spend) Then      
      Messagebox "keine zahl",MB_OK+MB_ICONSTOP, BoxTitle$      
      uidoc.gotofield("mIOT_Spend")
      Continue = False
      Exit Function
   End If

Und es sind 2 Fehlermeldungen die kommen:

1.
Cannot convert text to a number

2.
Notes Error - field didn't pass validation formula


Ich checke in diesem Script auch andere Felder, ob sie z.B. leer sind:

If doc.mIOT_Client(0) = "" Then
   Messagebox "Client(s)" + MsgMandatory$,MB_OK+MB_ICONSTOP, BoxTitle$
   uidoc.gotofield("mIOT_Client")
   Continue = False
   Exit Function
End If

Das funktioniert einwandfrei.

Grüsse Ewald




Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln