Autor Thema: neue Dokumente erstellen  (Gelesen 11856 mal)

Offline tooot

  • Frischling
  • *
  • Beiträge: 20
Re: neue Dokumente erstellen
« Antwort #20 am: 03.09.09 - 15:43:08 »
Hey,

also ich habe es jetzt so gelöst:

1. habe ich eine View erstellt die mir nur die Dokumente mit den flag true anzeigt
2. habe ich den Agenten erstellt:


Sub Initialize
   
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Set db=session.CurrentDatabase
   Dim view As NotesView
   
   Dim doc As NotesDocument
   Dim newdoc As NotesDocument   
   
   Set view=db.GetView("View")
   
   Set doc = view.GetFirstDocument
   
   Do Until doc Is Nothing
      Set newdoc = New NotesDocument (db)
      newdoc.Form="Form"
      
      newdoc.Feld2 = doc.FeldA
                newdoc.Feld3 = doc.FeldB
                newdoc.Feld4 = doc.FeldC
                newdoc.Feld5 = doc.FeldD
      Call newdoc.Save(True,True)
      
      doc.feld="false"
      Call doc.Save(True,True)
      'wieder zum ersten Dokument da der Zeiger false das erste Dokument "weg nimmt"
      Set doc=view.GetFirstDocument
   Loop
   
End Sub


Nochmals vielen Dank für eure Hilfe

Christoph

Offline TRO

  • Senior Mitglied
  • ****
  • Beiträge: 296
Re: neue Dokumente erstellen
« Antwort #21 am: 03.09.09 - 20:55:03 »
Für ne history dauernd neue Dokumente anlegen? Warum dass den? Du kannst doch einfach Felder mit Mehrfachwerten machen. Eins für das Datum, eins für den Änderungs-Author und eins für die Action.
...
Vllt. ist das ja auch eine Lösung :) (also ich würde das so machen)


Du rennst mit dieser Lösung aber m.E. mit großer Wahrscheinlichkeit in ein Replizierkonfliktproblem:
Maske ist auf "Mischen RepKonflikte" gesetzt (-> $ConflictAction = 1)
jetzt bearbeiten zwei Leute in jeweils einer Replik-Instanz das selbe Dokument, aber in unterschiedlichen Feldern. Ergebnis nach dem Replizieren (ohne Deine Historie): alles paletti, die Dokumente werden sauber gemerged.
Jetzt mit Deiner Historien-Variante: obwohl unterschiedliche Felder bearbeitet wurden ist doch in beiden Instanzen das/die Historien-Felder geändert ... und das knallt dann beim Replizieren!

Die einzig saubere Variante so etwas abzufangen ist wirklich mit separaten Historien-Dokumenten. Die können dann ja durch einen Nacht-Agenten (nur eine Instanz!) im Haupt-Dokument gesammelt werden.


Thomas

samWare

  • Gast
Re: neue Dokumente erstellen
« Antwort #22 am: 04.09.09 - 08:58:08 »
Mal ne blöde Frage, aber sind Do Schleifen nicht dafür bekannt dass sie ihr Run-Statement am Ende tragen?

Bsp:

Do
...
...
...
Loop while true

-----------------------

Du hast hier eher die While Syntax angewandt. Sauberer wärs also folgendermaßen:

While (irgendwas=true)
...
...
...
Wend

-----------------------

Kann natürlich sein dass ich mich irre, ich bin mir aber ziemlich sicher ;)
Noch ne Sache: bist du sicher dass er den Document Index neu aufbaut? Müsstest du dazu nicht erst die View refreshen, oder geht dass auch so? :-: Sauberer wärs glaubich mit ner "NotesDocumentCollection" bzw. "NotesViewEntryCollection". Schaus dir doch mal an!

(Kann natürlich sein dass ich mich überall Irre, aber dann hätte ich wenigstens wieder was neues dazugelernt ;))

Offline tooot

  • Frischling
  • *
  • Beiträge: 20
Re: neue Dokumente erstellen
« Antwort #23 am: 04.09.09 - 09:06:27 »
Mal ne blöde Frage, aber sind Do Schleifen nicht dafür bekannt dass sie ihr Run-Statement am Ende tragen?
-----------------------

Noch ne Sache: bist du sicher dass er den Document Index neu aufbaut? Müsstest du dazu nicht erst die View refreshen, oder geht dass auch so? :-: Sauberer wärs glaubich mit ner "NotesDocumentCollection" bzw. "NotesViewEntryCollection". Schaus dir doch mal an!
(Kann natürlich sein dass ich mich überall Irre, aber dann hätte ich wenigstens wieder was neues dazugelernt ;))

Hey, also das mit der Do Schleife stand so in der Literatur...

Also die View wird automatisch aktualisiert... habe mich da auch gewundert mein erster Ansatz sah da auch anders aus^^...

Die NotesDocumentCollection usw. schau ich mir natürlich noch an...


samWare

  • Gast
Re: neue Dokumente erstellen
« Antwort #24 am: 04.09.09 - 09:20:14 »
Hab auch eben noch in der LS-Hilfe nachgeschaut... Krank^^

Hier damit du verstehst warum ich das nicht verstanden habe: Die Do-While Schleife (eig. überall das selbe)

Bitte nicht böse sein, ich habs nur gut gemeint  :knuddel: :love:

Offline tooot

  • Frischling
  • *
  • Beiträge: 20
Re: neue Dokumente erstellen
« Antwort #25 am: 04.09.09 - 10:40:44 »
Bitte nicht böse sein, ich habs nur gut gemeint  :knuddel: :love:

Bin ich nicht, bin ja über jeden Tipp/ über jede Hilfe dankbar...will ja was lernen... :)

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: neue Dokumente erstellen
« Antwort #26 am: 04.09.09 - 10:43:01 »
Ich finde es ungünstig, einen Agenten mit Dokumenten aus einer View zu bestücken und diese dann in jeder Schleife den Index neu aufzubauen. Die Admins hassen einen gerne für so etwas.

Da würde ich lieber eine NotesDocumentCollection erstellen, die durchgehen und am Ende mit Stampall die Items entfernen.
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

BigWim

  • Gast
Re: neue Dokumente erstellen
« Antwort #27 am: 04.09.09 - 11:05:40 »
Zitat
Ich finde es ungünstig, einen Agenten mit Dokumenten aus einer View zu bestücken und diese dann in jeder Schleife den Index neu aufzubauen. Die Admins hassen einen gerne für so etwas
Kann ich nur bestätigen ...

Deshalb hatte ich mir Hilfsansichten gebaut. Diese waren eine 1:1 Kopie der Ansicht ohne Sortierung; aber das habe ich u. a. auch hier im Forum gelernt (Nochmals Danke!):

Aus der Designer-Hilfe zu NotesView, Eigenschaft AutoUpdate

Zitat
Read-write. Indicates whether a view is automatically refreshed by the currently running code when a navigation method touches an update (addition, deletion, or change) to the database that occurred after view creation or the last refresh.


Markus

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
Re: neue Dokumente erstellen
« Antwort #28 am: 04.09.09 - 17:30:35 »
ich dachte mehr an:

Set notesDocumentCollection = notesDatabase.FTSearch( query$, maxdocs%, [ sortoptions% ], [ otheroptions% ] )

query$ = Selectionsformel deiner Ansicht

danach die Dokumente durchgehen mit getFirstDocument/getNextDocument

nach getaner Arbeit dann ein
Call notesDocumentCollection.StampAll( itemname, value )

Vorteil: du hältst keine View vorrätig, du baust keinen Index immer neu auf, du speicherst nicht jedes Dokument extra ab.

Fällt bi 3 Dokumenten nicht auf, bei 30.000 dann schon irgendwann.

Grüsse

Dau-in



mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz