Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Hendrik T. am 16.05.12 - 12:22:36
-
Ich muss euch mal wieder behelligen ;)
Es geht um einen Agenten, der unsere Datenbanken in einer Dafür angelegten Datenbank pflegen soll, als eine Art Übersicht. Idee ist es daher, die benötigten Daten der Anwendungen aus dem Katalog(7) (catalog.nsf) zu ziehen. Funktioniert so weit auch prima prima.
DOCH: Die Replic ID, wie sie angezeigt ist im Katalog und wir sie auch haben möchten, entsteht durch ein Feld berechnet zur Anzeige. Diese Berechnung bezieht sich auf ein anderes Feld (ReplicID), welches mit der Formel @Text(ReplicID;"*") die Replich ID (Ein Datum) in das von uns gewünschte Format überführt.
Unser Problem: Wie komme ich an das gewünschte Format? Die Methode "Evaluate" will er nicht, die Methode CStr$ wandelt das Datum einfach in eine Zeichenkette um, aber ändert sonst am Format nichts.
Ein Beispiel, wie das Format sich ändert:
ReplicID: 25.02.2002 13:40:52
Anzeige im Katalog nach der erwähnten @Formel: C1256B6B0045A8D3
Wie bekomme ich nun diese Umwandlung auch meinem Agenten beigebracht?
Achja: Notes Client ist 8.5.3
-
Hallo,
Der Beschreibung entnehme ich, dass es mit Script gemacht werden soll?
Wenn Ja.
Dann sie Dir doch mal die Klasse 'NotesDatabase' etwas genauer an.
Hier gibt es die Eigenschaft NotesDatabase.ReplicaID.
Andreas
-
Wer "will" kein Evaluate ?
Also folgendes geht problemlos:
Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim ret_eval As Variant
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
ret_eval = Evaluate( |@Text(ReplicaID;"*")|, doc )
Msgbox ret_eval(0)
Andreas
-
Wer "will" kein Evaluate ?
Also folgendes geht problemlos:
Dim session As NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim ret_eval As Variant
Set session = New NotesSession
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
ret_eval = Evaluate( |@Text(ReplicaID;"*")|, doc )
Msgbox ret_eval(0)
Andreas
Einwandfrei, das funktioniert tadellos :)
In der Hilfe hat er mir nicht die | angezeigt für die Syntax. Die habe ich noch benutzt, jetzt macht er das genau wie gewünscht :)
Dank dir!
-
In der Hilfe hat er mir nicht die | angezeigt für die Syntax. Die habe ich noch benutzt, jetzt macht er das genau wie gewünscht :)
Evaluate erwartet die Formel als String.
Du kannst die Formel mit "<Formel>", |<Formel>| oder {<Formel>} schreiben.
Also so:
"@Text(ReplicaID;"*")"
oder so:
|@Text(ReplicaID;"*")|
oder so:
{@Text(ReplicaID;"*")}
Da Evaluate mit " in der Formel schnell unübersichtlich wird, verwenden viele Entwickler eben | oder {}.
Gruß Stefan
-
äähhh ...
sorry nicht ganz
bei "@Text(ReplicaID;"*")"
müssen die " in der Formel escaped (=maskiert) werden, indem man ein weiteres " voranstellt, also wäre es so dann syntaktisch richtig.
"@Text(ReplicaID;""*"")"
-
Marco, Danke für den Hinweis.
-
... gerne ... :)
-
Was aber die Aussage unterstützt, dass es unübersichtlich wird. Gleiches gilt für |, wenn man das irgendwo angibt, z.B. als ODER in einer Selektionsformel in einem db.Search.
-
... deshalb verwende ich standardisiert die geschweiften Klammern...
-
Vielleicht wäre es hilfreich, wenn Axel in seinem Best-Practice-Aritkel zu Evaluate http://atnotes.de/index.php/topic,28334.0.html die Problematik aufnimmt und ein paar erläuternde Worte findet?
Gruß Stefan
-
Ist angekommen. Ich werde mal sehen was sich daraus machen lässt. Im Moment fehlt mir aber leider ein bisschen die Zeit dazu.
Axel