Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Vigeli am 22.11.05 - 11:38:18

Titel: Agent: Dokumente speichern
Beitrag von: Vigeli am 22.11.05 - 11:38:18
Hallo zusammen,

ich habe eine Ansicht (lssave), in der Dokumente angezeigt werden. Ein periodischer Agent soll nun alle Dokumente in deiser Ansicht im Hintergrund öffnen und speichern.

Dies funktioniert aber nicht richtig. Was ist hier falsch?
Mein Agent sieht so aus:

Sub Initialize
   
   Dim session As New notessession
   Dim db As notesdatabase
   Dim doc As notesdocument
   Dim view As notesview
   
   Set db = session.currentdatabase
   Set view = db.getview("lssave")
   Set doc = view.GetFirstDocument
   
   While Not(doc Is Nothing)
      
      Call doc.ComputeWithForm(False,False)
      Call doc.save(False,False)
      Set doc = view.GetNextDocument(doc)
   Wend
End Sub
Titel: Re: Agent: Dokumente speichern
Beitrag von: klaussal am 22.11.05 - 11:43:40
Zitat
Dies funktioniert aber nicht richtig.

Was heisst das im Klartext ?
Titel: Re: Agent: Dokumente speichern
Beitrag von: Vigeli am 22.11.05 - 11:55:54
...es handelt sich um eine maske mit berechneten felder (@DbLookup). beim öffnen eines Formulares werden ein berechnetes feld und andere normale Textfelder mit eerten gefüllt. wenn ich nun nichts ändere und auf speichern klicke, dann wird der wert des berechneten feldes richtig gespeichert.

mit @Command([ToolsRefreshAllDocs]) funktioniert dies auch einwandfrei.
Titel: Re: Agent: Dokumente speichern
Beitrag von: umi am 22.11.05 - 15:25:30
Das könnte daran liegen das RefreshAllDocs und ComputeWithForm nicht ganz die gleiche Funktionalität bieten.
Aus der Hilfe
Zitat
Validates a document by executing the default value, translation, and validation formulas, if any are defined in the document form
Zitat
Refreshes the fields of all the documents in a view or folder.
Titel: Re: Agent: Dokumente speichern
Beitrag von: Axel am 22.11.05 - 20:00:37
Das könnte daran liegen das RefreshAllDocs und ComputeWithForm nicht ganz die gleiche Funktionalität bieten.

Daran liegt es auch.

Versuch doch mal, ob @Command([ToolsRefreshAllDocs]) auch in periodischen Agenten funktioniert. Ich bin mir da nicht sicher, ob's geht.

Axel
Titel: Re: Agent: Dokumente speichern
Beitrag von: Vigeli am 23.11.05 - 12:51:46
habs probiert, funktion "@Command([ToolsRefreshAllDocs])" funktioniert nicht bei periodischen agenten  >:(
Titel: Re: Agent: Dokumente speichern
Beitrag von: Axel am 23.11.05 - 19:57:06
Das habe ich befürchtet. Im Backend wirst du da schlechte Karten haben. Im Moment habe ich leider keine gute Idee, wie man das lösen könnte.

Axel
Titel: Re: Agent: Dokumente speichern
Beitrag von: smoki am 23.11.05 - 21:23:19
Hallo!

Ich verwende den ComputeWithForm im Backend nie. Da hier auch oft seltsamste Ergebnisse entstehen, nach meiner Erfahrung.

Wenn ich es mir einfach machen will mit berechneten Feldern, gehe ich so vor, dass ich die Formel via Evaluate auch in das Script einfüge. (OK, dann hat man das Problem, dass die gleiche Logik an verschieden stellen ist, aber manchmal ist das die beste Lösung...)

Das sieht dann so aus:

doc.zBerechnetesFeld = Evaluate(|
@DBLookup( ..... )
|,doc)

Wenn du nur wenige (eine hand voll?) Felder hast, kannst du es ja mal damit probieren.

Gruß
Smoki
Titel: Re: Agent: Dokumente speichern
Beitrag von: Axel am 24.11.05 - 10:14:02
Wenn ich es mir einfach machen will mit berechneten Feldern, gehe ich so vor, dass ich die Formel via Evaluate auch in das Script einfüge. (OK, dann hat man das Problem, dass die gleiche Logik an verschieden stellen ist, aber manchmal ist das die beste Lösung...)

Das funktioniert aber auch nur, wenn du keine aufwändige Formel hast. Sonst stösst du hier sehr schnell an Grenzen.


Axel