Autor Thema: IsEmpty/CheckAndEvaluate  (Gelesen 3240 mal)

Offline Herr.Vorragend

  • Junior Mitglied
  • **
  • Beiträge: 55
  • Geschlecht: Männlich
    • www.carsten-volmer.de
IsEmpty/CheckAndEvaluate
« am: 13.02.08 - 16:40:36 »
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

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?

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: IsEmpty/CheckAndEvaluate
« Antwort #1 am: 13.02.08 - 17:19:04 »
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.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: IsEmpty/CheckAndEvaluate
« Antwort #2 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ß CheckAnd Evaluate nicht ordentlich initiiert wird
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Herr.Vorragend

  • Junior Mitglied
  • **
  • Beiträge: 55
  • Geschlecht: Männlich
    • www.carsten-volmer.de
Re: IsEmpty/CheckAndEvaluate
« Antwort #3 am: 13.02.08 - 17:56:57 »
Kannst du mal mehr zur verwendeten Notes Version sagen, bitte?
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.
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.

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

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.

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

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

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: IsEmpty/CheckAndEvaluate
« Antwort #4 am: 13.02.08 - 18:08:02 »
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.

« Letzte Änderung: 13.02.08 - 18:29:37 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Herr.Vorragend

  • Junior Mitglied
  • **
  • Beiträge: 55
  • Geschlecht: Männlich
    • www.carsten-volmer.de
Re: IsEmpty/CheckAndEvaluate
« Antwort #5 am: 14.02.08 - 11:03:20 »
oder füge einfach in die Funktion CheckAndEvaluate in der lib.appl.functions ein

CheckAndEvaluate = ""

am Anfang der Funktion ein

Das hat leider nicht funktioniert.

Ich denke, dass ich mich vom IsEmpty verabschieden muß. Wenigstens ist hier der Aufwand geringer.

Offline Herr.Vorragend

  • Junior Mitglied
  • **
  • Beiträge: 55
  • Geschlecht: Männlich
    • www.carsten-volmer.de
Re: IsEmpty/CheckAndEvaluate
« Antwort #6 am: 14.02.08 - 11:53:59 »
Hmm, ärgerlich.
Jetzt bin ich an einem Punkt, wo ich langsam Probleme bekomme.  :)

Ich habe nun im Feld User eine Emailadresse drinstehen, die beim Evaluate wirklich einen leere Wert zurückliefert.

Inhalt User (mit Anführungszeichen, etc.):
Code
"Vorname Nachname" <abcdef@domain.de>

Somit erhalte ich bei ...

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

... die Fehlermeldung:

Variant enthält keinen Container

Ein EvalVar(0) existiert halt nicht und EvalVar ist "".

Hat evtl. jemand einen Tipp, wie ich das dauerhaft lösen kann? Am besten direkt in der Funktion CheckAndEvaluate, um auch weitere Inkompatibilitäten abzusichern?

Danke.

[Update]
Irgendwie ärgert mich dieser Quick&Dirty-Workaround. Aber so funktioniert es halt:

Code
	isnotesuser = False
	If Isarray(EvalVar) Then
		If Trim(EvalVar(0)) <> "" Then isnotesuser = True
	Else
		If EvalVar<>""  Then isnotesuser = True
	End If
« Letzte Änderung: 14.02.08 - 13:43:38 von Herr.Vorragend »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz