Domino 9 und frühere Versionen > ND6: Entwicklung
Felder setzen
animate:
zu 1: schau dir mal die Hilfe zu @Today an
zu 2: theoretisch dürfte das Dokument nicht mehr auftauchen (wenn die Auswahlformel korrekt ist). Bei dem Thema steig ich aber auch noch nicht so ganz durch. Du könntest versuchen, die ComputeWithForm-Methode deines Document-Objekts aufzurufen, bevor du es speicherst, vielleicht ändert das was an dem Verhalten.
Abgesehen davon finde ich die Vorstellung, dass ein Benutzer alleine durch das Öffnen eines Dokuments einen Feldwert ändert, ohne davon irgendwas mitzukriegen (Messagebox o.Ä.), beängstigend
TripleH:
Hallo!
Ich hab schon probiert aber irgendwo hab ich einen Denkfehler ich hoffe jemand kann mir bei meinem Skript helfen.
Sub Postopen(Source As Notesuiview)
Dim s As NotesSession
Set s = New NotesSession
Dim db As notesdatabase
Set db = s.CurrentDatabase
Dim c As NotesDocumentCollection
Set c = db.UnprocessedDocuments
Dim doc As NotesDocument
For i = 1 To c.Count
Set doc= c.GetDocument(i)
Next
Call doc.ReplaceItemValue("Status","Bitte")
Call doc.Save(True,True)
End S
Also erklärt hab ich genauer 2 weiter oben.
Es handelt sich um eine Ansicht der Spalten wert ist:
name +"," + vorname
und ausgewählt welche Dukomente in der Ansicht stehen ist
select status = "fällig"
Status ist ein Feld.
So bis zur For Schleife ist noch alles Ok. Nur Variablendefinitionen
und das ich nur mit den ausgwählten Dokumenten arbeiten möcht. Das Skript soll eigentlich wenn man ein Skript bearbeitet also öffnet dann das Statusfeld auf "Bitte" setzen.
Ich hab eine For Schleife hier(mit If hab ichs auch schon probiert)
In der For Schleife wird jetzt durchgezählt. Aber da ich maximal nur eins aufeinmal öffnen kann dürfte die Schleife ja eigentlich nur einmal durchlaufen oder?
Kann ich die Dokumente überhaupt so durchzählen das sie nicht nummeriert sind (sie Spaltenwert) oder haben sie im Hintergrund immer noch Nummern?
Mit Set doc= c.GetDocument(i)
dachte ich das ich dann das aktuelle ausgewählte Dokument habe oder?
Und ab hier ist dann wieder richtig denk ich
Call doc.ReplaceItemValue("Status","Bitte")
Call doc.Save(True,True)
End S
Nur im kleinen Mittelteil hakt es irgendwo.Ich hoffe es kann mir jemand helfen. Ich probiers schon den halben Nachmittag.
Vielen Dank.
Gruß
Basti
Glombi:
So geht's:
Sub Postopen(Source As Notesuiview)
Dim s As NotesSession
Set s = New NotesSession
Dim db As notesdatabase
Set db = s.CurrentDatabase
Dim c As NotesDocumentCollection
Set c = db.UnprocessedDocuments
Dim doc As NotesDocument
Set doc= c.GetFirstDocument
While not (doc is nothing)
Call doc.ReplaceItemValue("Status","Bitte")
Call doc.Save(True,True)
Set doc= c.GetNextDocument(doc)
Wend
End Sub
Andreas
animate:
oh, jetzt seh ich es erst. du hast dein Script ja ins postopen-Event der View gepackt.
das event wird ausgelöst, sobald die Ansicht geöffnet wird bzw kurz danach.
ich glaube, das, was du da machst, ist äußerst abenteuerlich, weil du da nicht genau voraussehen kannst, welche Dokumente gerade markiert sind
>Das Skript soll eigentlich wenn man ein Skript bearbeitet also öffnet dann das Statusfeld auf "Bitte" setzen.
Wenn man das Dokument öffnet oder wenn man es bearbeitet?
>In der For Schleife wird jetzt durchgezählt. Aber da ich maximal nur eins aufeinmal öffnen kann dürfte die Schleife ja eigentlich nur einmal durchlaufen oder?
Wie gesagt, dein Script wird nicht gestarte, wenn du ein Dokument öffnest, sondern wenn du die Ansicht öffnest. Und da können theoretisch kein, ein oder mehrere Dokumente gewählt sein.
>Kann ich die Dokumente überhaupt so durchzählen das sie nicht nummeriert sind (sie Spaltenwert) oder haben sie im Hintergrund immer noch Nummern?
Verstehe ich leider nicht. Ist aber wahrscheinlich auch nicht wichtig.
>Mit Set doc= c.GetDocument(i)
dachte ich das ich dann das aktuelle ausgewählte Dokument habe oder?
wenn genau ein Dkument gewählt ist, dann ja
Kurzum, dein Problem liegt vermutlich nicht an deinem Script, sondern an der Stelle, an der du dein Script hast
TripleH:
Hallo!
Ja Postmoker Postopen ist problematisch.
Deshalb hab ich das Skript jetzt jetzt in der Ansicht unter QueryOpenDocument gespeichert.
Das bedeutet das das Skript ausgeführt wird wenn das Dokument geöffnet wird oder seh ich das falsch?
Ich hab Andreas sein Skript eingefügt aber das geht leider auch nicht. Ich würd sagen es ist an der richtigen Stelle.
Dim s As NotesSession
Set s = New NotesSession
Dim db As notesdatabase
Set db = s.CurrentDatabase
Dim c As NotesDocumentCollection
Set c = db.UnprocessedDocuments
Dim doc As NotesDocument
Set doc= c.GetFirstDocument
While not (doc is nothing)
Call doc.ReplaceItemValue("Status","Bitte")
Call doc.Save(True,True)
Set doc= c.GetNextDocument(doc)
Wend
Syntaktisch ist das Skript nachvollziehbar.
Es spielt doch aucf keinen Fall der Spaltenwert ne Rolle oder?
Eigentlich doch nur die markierten Dokumente die dann geöffnet werden.
Ich hoffe es kann mit noch jemand helfen und hat ne Idee worans liegen kann da ich kurz vorm Ende bin mit meiner kleinen Übung.
Gruß Bast
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln