Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: dia am 10.11.04 - 09:20:59

Titel: neuestes Dokument finden
Beitrag von: dia am 10.11.04 - 09:20:59
Hallo. Ist für euch bestimmt ganz leicht, aber ich finds nicht raus...
Hab per LotusScript das markierte Dokument in einer Ansicht kopiert und wieder eingefügt. Jetzt muss ich das Dokument noch einmal öffnen um dort ein Feld zu ändern. Wie finde ich nun dieses Dokument? Es müsste ja das neueste in der Datenbank sein oder? Also ich dachte mir ich fange dann so an:

Set collection = db.search(...???...)

Jetzt brauch ich nur noch ne Formel mit der man das neueste Dokument findet. Natürlich vorausgesetzt meine Annahme ist richtig. Also dass das neueste Dokument das kopierte sein muss.
Titel: Re: neuestes Dokument finden
Beitrag von: Axel am 10.11.04 - 09:26:29
Hi,

im Prinzip ist es da neueste, aber nur solange, wie kein anderer ein Dokument eingefügt oder geändert hat. Diese Methode halte ich nicht für sehr zuverlässig.

Gib mal ein paar mehr Infos was das werden soll. Vielleicht fällt uns ein anderer Weg ein.


Axel
Titel: Re: neuestes Dokument finden
Beitrag von: Semeaphoros am 10.11.04 - 09:40:12
Hm, aber wenn Du das mit LotusScript kopierst und wieder einfügst, hast Du doch ein Handle bzw. ein NotesDocument-Objekt zur Verfügung auf das kopierte Dokument, warum musst Du es dann wieder suchen?
Titel: Re: neuestes Dokument finden
Beitrag von: Glombi am 10.11.04 - 09:40:59
Ist das eine einmalige Aktion oder gehört das zum Programm.
Bei 1: Erstelle eine Ansicht, die nach @Created Absteigend sortiert ist. Das neueste Dokument steht dann oben.
Die Ansicht sollte flach sein, d.h. keine Antworthierarchie.
Als Zugriffsformel: SELECT @All

Andreas
Titel: Re: neuestes Dokument finden
Beitrag von: dia am 10.11.04 - 09:51:22
Also hier noch ein paar mehr Infos. Es soll eine Gemeinsame Aktion sein die auf etwa 50 Ansichten angezeigt wird. Die Ansichten sind natürlich alle unterschiedlich sortiert und die Dokumente sind auch unterschiedlich. Sind also mit verschiedenen Masken erstellt worden. Die Entwicklerin dieser Datenbank hat Copy and Paste verboten. Ich soll nun Copy and Paste wieder erlauben. Die Entwicklerin meinte dass es dann zu Inkonsestenzen komme. Man müsse nach dem Kopieren sofort das neue Dokument öffnen und wieder speichern um dies zu vermeiden. Und ich wollte noch gern in einem Namensfeld "Kopie von " & alterName rein schreiben um die Kopie erkenntlich zu machen. Verstehe nicht wie ich das kopierte Dokument schon haben soll. Meiner Meinung nach hab ich nur das Original. Hier mal mein Code bisher:

Code
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim collection As NotesDocumentCollection
	Dim doc As NotesDocument	
	Set db = session.CurrentDatabase
	Set collection = db.UnprocessedDocuments	
	If collection.count > 1 Then
	Messagebox "Es sollte immer nur ein Dokument auf einmal kopiert werden.", 64, "Hinweis"
	Exit Sub
	End If
	Set doc = collection.GetFirstDocument()
	Call doc.copyToDatabase(db)
	
	Set collection = db.search()
Titel: Re: neuestes Dokument finden
Beitrag von: dia am 10.11.04 - 09:57:43
Kann es sein dass es so geht?

Set neuesDoc = doc.copyToDatabase(db)

Dann müsste neuesDoc doch das Dokument sein was ich suche oder?

Bin ich durch Semeaphoros' Post drauf gekommen... -.-
Titel: Re: neuestes Dokument finden
Beitrag von: Axel am 10.11.04 - 10:03:26
Hi,

das sollte so gehen.


Axel
Titel: Re: neuestes Dokument finden
Beitrag von: dia am 10.11.04 - 10:08:57
Ok, vielen Dank an alle. Werds gleich mal testen. Aber sieht ganz gut aus glaub ich.
Titel: Re: neuestes Dokument finden
Beitrag von: Semeaphoros am 10.11.04 - 10:10:24
Genau so geht es, das copytodatabase gibt das neue Notesdocument zurück.

Wobei, offenbar hat die Enwicklerin irgendwelche QuerySave oder ähnliche Anpassungen im Code drin, weshalb sie diese Anweisung gegeben hat mit dem Oeffnen und wieder speichern, bedeutet, dass man das dummerweise tatsächlich sichtbar machen muss für den User (sprich mit NotesUIWorkspace.EditDocument) und dann dort speichern und schliessen, so dass die Events und allenfalls vorhandenen Berechnungen durchgeführt werden. Ungünstiges, aber häufigst anzutreffendes Design, da sollte man die Berechnungen in eine Sciptlib auslagern, auf die man dann zugreiffen kann, um auch im Backend die notwendigen Berechnungen auslösen zu können .....
Titel: Re: neuestes Dokument finden
Beitrag von: dia am 10.11.04 - 10:49:05
Ohh, danke Semeaphoros. Du hast natürlich recht und ich werds auch genau so machen. Ist natürlich ne ganz schöne Fleißarbeit jetzt aus allen Masken den Code rauszukopieren und in allen Ansichten die richtige Funktion der passenden Maske aufzurufen. Dadurch wird mein Idee mit der gemeinsamen Aktion schon hinfällig. Danke nochmal an alle. Müsste jetzt klappen. Also das kopierte Dokument hab ich auch jeden fall schonmal. Hab ich schon getestet.