Domino 9 und frühere Versionen > ND8: Entwicklung

Evaluate-statement liefert manchmal falsches Ergebnis

<< < (4/5) > >>

DAU-in:
ein kurzes Update:

1.) umstellen auf 'berechnet beim Anlegen' für das abgefragte Feld zeigte keinen Unterschied
2.) mit temporärem Dokument liefert es ebenfalls falsche Ergebnisse

das Feld isoliert in einer lokalen DB und einem Button mit den 3 verschiedenen Evaluates auf dieses Feld funktionierten problemlos.

Ich bin ratlos.

hier ist der Kot:
   Dim session As New Notessession
   
   Dim doc As Notesdocument
   Dim strFormel1 As String
   Dim strFormel2 As String
   Dim strFormel3 As String
   
   Dim var1 As Variant
   Dim var2 As Variant
   Dim var3 As Variant
   
   
   strFormel1 = { Eingabe = "blabla"}
   
   strFormel2 = { @getField("Eingabe") = "blabla"}
   
   strFormel3 = { @if(@getField("Eingabe") = "blabla"; @True; @False)}
   
   Set doc = ws.currentDocument.Document
   
   var1 = Evaluate(strFormel1, doc)
   Messagebox strFormel1 & " " & Cstr(var1(0))   
   var2 = Evaluate(strFormel2, doc)
   Messagebox strFormel2 & " " & Cstr(var2(0))
   var3 = Evaluate(strFormel3, doc)
   Messagebox strFormel3 & " " & Cstr(var3(0))


Peter Klett:
Wenn es in einer lokalen DB mit den separaten Feldern funktioniert, probiere doch mal diese DB auf dem Server. Wenn es dann auch funktioniert, kann man wohl lokal <> Server ausschließen.

Gibt es irgendwelche Besonderheiten bezüglich der Felder, auf die Du zugreifst?

- (zugriffsgesteuerte) Abschnitte
- Teilmasken
- gemeinsame Felder

DAU-in:
Hallo Peter,

das Feld ist in einer versteckten Teilmaske.

Ansonsten sind in der Maske ca.8 Teilmasken enthalten, sowie ineinander geschachtelte tabbed tables und 6 zugriffsgesteuerte Abschnitte, da liegt das Feld aber nicht drin.

ich probiere es nächste Woche wieder.

gute Nacht

Dau-in

Peter Klett:
Hast Du schon einmal probiert, mit Evaluate den Wert des Feldes ausgeben zu lassen?

Also so:

strFormel1 = {Eingabe}
var1 = Evaluate(strFormel1, doc)
Messagebox strFormel1 & " " & Cstr(var1(0))   

Was verstehst Du unter einer versteckten Teilmaske? Hast Du in der Maske den Bereich mit der Teilmaske verborgen (wüsste nicht, dass das geht)? Oder ist die Teilmaske eine "ganz gewöhnliche" und nur die Felder in der Teilmaske sind verborgen?

Testweise würde ich die Felder aus der Teilmaske entfernen und in die Maske einfügen.

Du kannst auch nur die Teilmaske entfernen, ohne das Feld in die Maske zu kopieren, denn Du greifst ja auf das Item im Dokument zu, das muss vorhanden sein, unabhängig davon, ob das Feld in der (Teil-)Maske definiert ist (zumindest im Client, Du arbeitest doch im Client und nicht im Browser?)

Ich gebe zu, dass das alles keine fundierten Vorschläge sind, sondern eher ein wildes Suchen. Aber das Problem ist absolut unlogisch und eigentlich nicht zu greifen. Da kannst Du nur alles Mögliche und Unmögliche probieren, um dann wohl eher zufällig zu einer Lösung (hoffentlich) zu kommen.

Bastel123:
Probier mal aus, ob es einen Unterschied macht wenn das Dokument im "Lesen" oder "Bearbeiten" Modus ist.

Wenn es nicht vorher gespeichert wurde ist im "Bearbeiten" Modus das doc aus ws.uidoc.document "noch nicht soweit", d.h. es hat noch die alten Werte.  

Ich arbeite dann mit uidoc.Fieldgettext("xxx")

Sebastian

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln