Domino 9 und frühere Versionen > ND6: Entwicklung
Kopieren von docs über View
iworks:
Hallo zusammen,
ich habe hier ein kleines Problemchen, ich denke es wird gleich auffallen wenn man sich den code anschaut. Zunächst aber was ich möchte ist, über eine view entsprechend X docs markieren und enige Feldwerte in ein neues doc kopieren. Das kopierte doc trägt dabei nach dem Kopiervorgang einen anderen Maskennamen.
Hier der code komplett: (das Ganze läuft als Action)
Sub Click(Source As Button)
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim newdoc As NotesDocument
Dim zaehler As Integer
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
Set newdoc = New NotesDocument(db)
zaehler = 1
While Not (doc Is Nothing)
newdoc.Form = "namemaske"
newdoc.Feld1 = "Kopie"
newdoc.Feld2 = doc.Feld2
newdoc.Feld3 = doc.Feld3
newdoc......
newdoc.Feld20 = doc.Feld20
If zaehler = 1 Then Print zaehler & "Dokument bearbeitet" Else Print zaehler & "Dokument bearbeitet"
Call newdoc.ComputeWithForm(True,False)
Call newdoc.Save(True, False)
Set doc = dc.GetNextDocument(doc)
zaehler = zaehler + 1
Wend
End Sub
Nun zum Problem......meine LS Kenntnisse sind eher Anfänger.
1.Problem ist zunächst dass nicht alle in der view markierte docs kopiert werden, sondern immer nur der lettze in der view. Ich denke hier fällt einfach etwas code irgendwo oder?
2.wie leicht lässt sich das Löschen der bearbeiteten docs hier einbauen.
Danke schon mal für eure Hilfe.
dirk_2909:
zu 1. Du musst den Code in einen Agenten einbauen - Ausführung manuell -> Ziel "gewählte Dokumente"
Zu 2: sehr leicht - ich würde mir die kopierten Docs in einer "Liste" (Collection) "merken" und nach dem ganzen Kopierern löschen ( doc.Remove( .. ) )
--- Code: ---...
call collDel.AddDocument( doc )
Set doc = dc.GetNextDocument(doc)
zaehler = zaehler + 1
Wend
Call collDel.RemoveAll ...
--- Ende Code ---
iworks:
Hi,
danke für prompte Antwort.
Ok habe ich soweit gemacht...also den Agenten als "On event" --> Action menu selection" und Target --> "All selected Documents". Es wird dennoch nur ein doc erstellt, immer das letzte der vorhin markierten docs in der view.
Das Ding sieht jetzt so aus:
Sub Initialize
Dim ws As New NotesUIWorkspace
Dim s As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Set db = s.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
Dim wert As String
Dim zaehler As Integer
Dim vStringArray As Variant
Dim values(1) As Variant
values(0) = "Carlos Parés-Salvador"
values(1) = "Ralf Finger"
vStringArray=ws.Prompt (PROMPT_OKCANCELLIST,"GF Setzen", "Bitte legen Sie einen GF fest",values(0), values)
If Isempty(vStringArray) Then Exit Sub
zaehler=1
While Not (doc Is Nothing)
If doc.Form(0)="Maske1" Then
doc.GF=vStringArray
Elseif doc.Form(0)="frmKontakt" Then
doc.Branche_resp=vStringArray
End If
If zaehler=1 Then Print zaehler & " Dokument bearbeitet" Else Print zaehler & " Dokumente bearbeitet"
Call doc.Save(True, True)
Set doc = dc.GetNextDocument(doc)
zaehler=zaehler+1
Wend
End Sub
DerAndre:
Das Ding erstellt ja auch keine neuen Dokumente sondern füllt nur eine Feld.
Oder verstehe ich mal wieder was falsch?
iworks:
Oh no....sorry mein Fehler. Habe ausversehen den falschen Agenten Code hier kopiert.
Das wäre jetzt also das Ding noch mal.
Sub Initialize
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim newdoc As NotesDocument
Dim zaehler As Integer
Set db = session.CurrentDatabase
Set dc = db.UnprocessedDocuments
Set doc = dc.GetFirstDocument
Set newdoc = New NotesDocument(db)
zaehler = 1
While Not (doc Is Nothing)
newdoc.Form = "namemaske"
newdoc.Feld1 = "Kopie"
newdoc.Feld2 = doc.Feld2
newdoc.Feld3 = doc.Feld3
newdoc......
newdoc.Feld20 = doc.Feld20
If zaehler = 1 Then Print zaehler & "Dokument bearbeitet" Else Print zaehler & "Dokument bearbeitet"
Call newdoc.ComputeWithForm(True,False)
Call newdoc.Save(True, False)
Set doc = dc.GetNextDocument(doc)
zaehler = zaehler + 1
Wend
End Sub
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln