Lotus Notes / Domino Sonstiges > Help-Desk Applikation !!Help!!

IsEmpty/CheckAndEvaluate

(1/2) > >>

Herr.Vorragend:
Kurze Frage.
Ihr habt in diversen Aktionen (Annehmen,Schließen,etc.) die Funktion CheckAndEvaluate, dessen Ergebnis anschließend mit IsEmpty überprüft wird:


--- Code: --- Evalstring = |@unique(@NameLookup ( [Exhaustive]; "| + uidoc.Document.user(0) + |" ;"FullName"))|
EvalVar = CheckAndEvaluate(Evalstring, uidoc.document)
If IsEmpty(EvalVar) Then
isnotesuser = False
Else
isnotesuser = True
End If
--- Ende Code ---

Als Ergebnis von CheckAndEvaluate erhalte ich (Debugger) ...
EvalVar as Variant
-  EvalVar(0) As String

Und bei der IsEmpty-Abfrage spring Notes grundsätzlich immer zum Else-Teil.

Fazit: IsEmpty prüft, meiner Laienmeinung nach, nicht korrekt.
Selbst wenn ich vorab (testweise) EvalVar = "" setze, springt die IF-Abfrage immer zum Else-Teil.

Hat jemand einen Tipp, woran das liegen könnte?

eknori (retired):
Kannst du mal mehr zur verwendeten Notes Version sagen, bitte?
Diese Routine ist schon recht lange in der Datenbank. Ich bin mir ziemlich sicher, daß die bisher immer so funktioniert hat, wie sie designed wurde.

Wenn die Funktion, wie bei dir , immer in den else Zweig springt, dann scheint EvalVar nicht leer zu sein.

Du könntest statt des IsEmpty ein

if trim(EvalVar(0)) ="" then

...

probieren.

Ich suche dann mal derweil, ob es zu Isempty irgendwelche KB EInträge gibt.

eknori (retired):
oder füge einfach in die Funktion CheckAndEvaluate in der lib.appl.functions ein

CheckAndEvaluate = ""

am Anfang der Funktion ein

Ich befürchte, daß CheckAnd Evaluate nicht ordentlich initiiert wird

Herr.Vorragend:

--- Zitat von: eknori am 13.02.08 - 17:19:04 ---Kannst du mal mehr zur verwendeten Notes Version sagen, bitte?
--- Ende Zitat ---
Notes 6.5.5 / Win


--- Zitat ---Wenn die Funktion, wie bei dir , immer in den else Zweig springt, dann scheint EvalVar nicht leer zu sein.
--- Ende Zitat ---
Ich bin mit dem Debugger im Einzelschrittmodus durchgegangen und er liefert nur ein EvalVar(0) mit "" aus. (Am Rande: Natürlich funktioniert die Funktion, wenn der User auch wirklich ein Notesuser ist)


--- Zitat ---Du könntest statt des IsEmpty ein
if trim(EvalVar(0)) ="" then
... probieren.
--- Ende Zitat ---


--- Zitat ---Ich suche dann mal derweil, ob es zu Isempty irgendwelche KB EInträge gibt.
--- Ende Zitat ---

So habe ich es heute auch abgeändert. Es hat mich halt nur interessiert, wieso es nicht klappt. Und ich vermute (mal wieder) ganz stark einen Client-Bug.


--- Zitat von: eknori am 13.02.08 - 17:33:17 ---oder füge einfach in die Funktion CheckAndEvaluate in der lib.appl.functions ein

CheckAndEvaluate = ""

am Anfang der Funktion ein

Ich befürchte, daß CheckAndEvaluate nicht ordentlich initiiert wird

--- Ende Zitat ---

Ich habe den Code zwar gerade nicht greifbar, aber ich habe noch in Erinnerung, dass CheckAndEvaluate bis zum "echten" Evaluate ein Variant mit Inhalt "Null" ist. Erst durch das Evaluate wird es zu einem leeren String.

Danke,
Carsten

eknori (retired):
im 7.0.3 und im 8.0 Client ist das reproduzierbar ...

Ist übrigens ein gutes Beispiel, wofür man die "Dynamischen Aktionen" von Anton Tauscher ( ata ) in der Datenbank zum Zwecke der Fehlersuche einsetzen kann. Man muss dann nicht am eigentlichen Code rumbasteln und kann auch mit den Live Daten probieren.

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln