Hallo Bernhard,
Das war mir klar
Folgendermaßes will ich mit einer Aktion die Druckmaske befüllen:
____________________________________________________________
Sub CreatePrintForm(uidoc As NotesUIDocument)
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim printdoc As NotesDocument
Dim nam As NotesName
Dim profiledoc As NotesDocument
Dim counter As Integer
Dim puidoc As NotesUIDocument
On Error Goto ErrorSection
Set s = New NotesSession
Set db = s.CurrentDatabase
Set profiledoc = db.GetProfileDocument("Profil", "Profil")
Set doc = uidoc.Document
Set printdoc = db.CreateDocument
printdoc.Form = "DocPrint"
printdoc.CreatedBy = doc.CreatedBY(0)
printdoc.ServiceLocation = doc.ServiceLocation(0)
usw usw usw...
If Not (doc.CreatedBy(0) = "") Then
Set nam = s.CreateName(doc.CreatedBy(0))
printdoc.CreatedBy = nam.Common
End If
If Not (doc.ServiceLocation(0) = "") Then
printdoc.ServiceLocation = doc.ServiceLocation(0)
End If
usw usw usw...
printdoc.Remarks = profiledoc.Remarks(0)
printdoc.ReportNumber = Cstr(profiledoc.ReportNumber(0))
counter = profiledoc.ReportNumber(0)
counter = counter + 1
Call profiledoc.ReplaceItemValue("ReportNumber", counter)
Call profiledoc.Save(True, False)
Call ws.EditDocument(True, printdoc)
Set puidoc = ws.CurrentDocument
Call SetMeasurementValues(doc, puidoc, db)
'Füllen des Feldes DocID mit der Document UNID
Call doc.ReplaceItemValue("DocID", udoc.UniversalID)
Call ws.EditDocument(True, doc)
Exit Sub
ErrorSection:
'Return Error Number and Error Message
boxType% = 0 + 64
flag = Messagebox("Ein interner Fehler ist aufgetreten: "& Str(Err) & " (" & Error$ & "), Zeile " & Str(Erl()) & ". Bitte geben Sie beide Angaben an IT weiter.", boxType%, "Interner Fehler")
Exit Sub
End Sub
_______________________________________________________________________
Ich habe nun eine versteckte Ansicht gemacht, die die Werte aus der DocPrint-Maske anzeigt.
Da ich ja nicht nun weiß, wieviele Dokumente zum Druck markiert werden, habe ich jetzt mal 9 Zeilen in der Druckmaske geschaffen. Die Schwierigkeit ist jetzt, diese dynamisch zu füllen. Mein Ansatz hier ist:
Sub SetMeasurementValues(doc As NotesDocument, uidoc As NotesUIDocument, db As NotesDatabase)
Dim v As NotesView
Dim sdoc As NotesDocument
Dim dc As NotesDocumentCollection
Dim i As Integer
Dim c As Integer
Dim dt As NotesDateTime
On Error Goto ErrorSection
Set v = db.GetView("(PrintByID)")
Set dc = v.GetAllDocumentsByKey(Cstr(doc.UniversalID), True)
i = 0
c = 1
If (dc.Count > 0) Then
Set sdoc = dc.GetFirstDocument
'Call uidoc.FieldSetText("Type", sdoc.Type(0))
While Not sdoc Is Nothing
DateFieldName = "Date_" & Cstr(i)
TimeSFieldName = "TimeS_" & Cstr(i)
TimeEFieldName = "TimeE_" & Cstr(i)
DescriptionFieldName = "Description_" & Cstr(i)
usw usw usw...
c = c + 1
i = i + 1
Set sdoc = dc.GetNextDocument(sdoc)
Wend
Call uidoc.Save
Call uidoc.Refresh
End If
Exit Sub
ErrorSection:
'Return Error Number and Error Message
boxType% = 0 + 64
flag = Messagebox("Ein interner Fehler ist aufgetreten: "& Str(Err) & " (" & Error$ & "), Zeile " & Str(Erl()) & ". Bitte geben Sie beide Angaben an IT weiter.", boxType%, "Interner Fehler")
Exit Sub
End Sub
_______________________________________________________________________
So, und irgendwie hab ich da wohl in meiner Taktik nen Denkfehler drin. Kann mir jemand auf die Sprünge helfen?
Danke + Gruss Gere