Domino 9 und frühere Versionen > ND6: Entwicklung

Felder setzen

<< < (2/6) > >>

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