Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Hendrik T. am 16.05.12 - 12:22:36

Titel: @Text(ReplicID;"*")
Beitrag 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

Titel: Re: @Text(ReplicID;"*")
Beitrag von: ascabg am 16.05.12 - 12:59:25
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
Titel: Re: @Text(ReplicID;"*")
Beitrag von: Glombi am 16.05.12 - 13:30:31
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
Titel: Re: @Text(ReplicID;"*")
Beitrag von: Hendrik T. am 16.05.12 - 13:35:53
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!
Titel: Re: @Text(ReplicID;"*")
Beitrag von: cebolina am 16.05.12 - 15:05:22
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
Titel: Re: @Text(ReplicID;"*")
Beitrag von: ghostmw am 16.05.12 - 15:42:55
äähhh ...

sorry nicht ganz

bei
Zitat
"@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;""*"")"
Titel: Re: @Text(ReplicID;"*")
Beitrag von: cebolina am 16.05.12 - 15:55:20
Marco, Danke für den Hinweis.
Titel: Re: @Text(ReplicID;"*")
Beitrag von: ghostmw am 16.05.12 - 15:58:59
... gerne ...  :)
Titel: Re: @Text(ReplicID;"*")
Beitrag von: Peter Klett am 16.05.12 - 16:11:50
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.
Titel: Re: @Text(ReplicID;"*")
Beitrag von: ata am 18.05.12 - 10:27:31
... deshalb verwende ich standardisiert die geschweiften Klammern...
Titel: Re: @Text(ReplicID;"*")
Beitrag von: cebolina am 18.05.12 - 10:44:32
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
Titel: Re: @Text(ReplicID;"*")
Beitrag von: Axel am 18.05.12 - 12:40:47
Ist angekommen. Ich werde mal sehen was sich daraus machen lässt. Im Moment fehlt mir aber leider ein bisschen die Zeit dazu.

Axel