Die letzte Woche fragte ich, wie man einen Fehler in einem evaluate statement
(Error in Evaluate statement macro) zu lösen.Auswerten Anweisung (@DbLookUp) funktioniert nicht mit Lotusscript
Sobald es zu beheben, habe ich andere Fehler mit der gleichen Auswertung, es gibt mir keinen Wert.
Ich werde beschreiben, was ich habe und was ich versuche.
@DbLookup in berechnen Text
Ich habe diesen Code in in einem Text berechnen und es funktioniert gut.
suc := @Trim(@Left(LlcPoliza;2));
_lkp := _lkp := @DbLookup("":"NoCache";"C1256EAD:00478951";"People2"; "D"+suc; "FullName");
@If(@IsError(_lkp) ; " " ; _lkp);
@Name([CN];_lkp)
LlcPoliza
is a document field (doc.LlcPoliza
) and in a document it has for example the value C2H2H2.The formula give first the value C2 and then look up into
People2
who is D+C2 and give me a person.It works fine.
Bewerten Statement (@DbLookup) in der Klasse
ich eine Klasse DirectorSucursal haben.
Class DirectorSucursal
Private m_branch As String
'Constructor class
Public Sub New (branch)
Dim subString As String
subString = Left(branch, 2)
me.m_branch = subString
End Sub
'Deleter Class
Public Sub Delete
End Sub
'Sub show the code about Suc
Public Sub GetCodSuc
MsgBox m_branch
End Sub
'Function get the name director
Public Function getNameDirector As String
Dim varResult As Variant
varResult = Evaluate({@DbLookup("":"NoCache";"C1256EAD:00478951";"People2"; "D} & m_branch & {"; "FullName)"})
getNameDirector = CStr(varResult(0))
End Function
End Class
Dann in einer Schaltfläche instanziiert ich das neue Objekt DirectorSucursal mit dem Parameter des Feldes doc.LlcPoliza (0) wie folgt aus.
Sub Click(Source As Button)
Dim director As New DirectorSucursal(doc.LlcPoliza(0))
director.GetCodSuc
director.getNameDirector
end Sub
The field
doc.LlcPoliza(0)
has the value C2H2H2.GetCodSuc
show the value C2, but the functiongetNameDirector
doesn't work.It shows the error: Operation failed
Bewerten Statement (@DbLookup) in Klick-Taste
ich das gleiche, aber in einem Klick Unter versucht haben.
Sub Click(Source As Button)
Dim subString As String
subString = Left(doc.LlcPoliza(0), 2)
Dim eval As String
eval = Evaluate({@DbLookup("":"NoCache";"C1256EAD:00478951";"People2"; "D} & subString & {"; "FullName)"})
Msgbox eval
End Sub
The field
doc.LlcPoliza(0)
has the value C2H2H2. But it doesn't workIt shows the error: Operation failed
Meine Frage ist: , was mache ich falsch? Warum funktioniert der Code in einem Text mit @Formula, aber mit Lotusscript nicht?
Danke.
EDIT 1:
ich hinzugefügt haben und Error Goto, modifiziert, um den Klassencode, modifizierte @DbLookup in calculate Text, und ich habe diesen Fehler:
Error in EVALUATE macro
Vielen Dank für Ihre Ratschläge Karl. Und der Refactor des Codes ist besser als das Original. Ich stimme Ihnen zu, dass es lesbarer und einfacher zu pflegen ist. Ich schätze wirklich Ihre Ratschläge. Vielen Dank. In die Zukunft werde ich versuchen, die notesdocuments-Klasse zu verwenden. Ich muss viel lernen. – David