Das mit den Tabs ist vom Vertrieb extra gewünscht. Man soll in einem Dokument alle Informationen beisammen haben und nicht nochmal in ein extra Dokument springen müssen. Deshalb auch kein "CopyAllItems", was mir stundenlange Programmierarbeit erspart hätte.
Ich kann unmöglich das gesamte Coding der Schaltfläche einstellen, denn dieses umfasst zu viele Zeilen. Anbei deshalb ein Auszug, der hoffentlich ausreichend ist (Punkte sollen kennzeichnen, dass es in analoger Weise weitergeht):
Sub Click(Source As Button)
Dim thisws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
…
Dim protokoll As String
Dim autor As String
Dim vpruefer As String 'vorhergehender Prüfer
Dim npruefer As String 'nächster Prüfer
Dim qw As String
Dim entwicklung As String
…
Set thisdb = thisws.CurrentDatabase
Set thisdoc = thisws.CurrentDocument
Set db = session.CurrentDatabase
Set doc = thisdoc.document
Set maildoc = New NotesDocument( db )
Set link = New NotesRichtextItem( maildoc, "Body")
'Globale Werte aus Feldern auslesen
entwurf = doc.GetItemValue("entwurf")(0)
status = doc.GetItemValue("status")(0)
Pruefer_QW = doc.GetItemValue("Pruefer_QW")(0)
Pruefer_Entwicklung = doc.GetItemValue("Pruefer_Entwicklung")(0)
Pruefer_Produktion = doc.GetItemValue("Pruefer_Produktion")(0)
Pruefer_Druck = doc.GetItemValue("Pruefer_Druck")(0)
Pruefer_Dispo = doc.GetItemValue("Pruefer_Dispo")(0)
Pruefer_Einkauf = doc.GetItemValue("Pruefer_Einkauf")(0)
Pruefer_Etikettierung = doc.GetItemValue("Pruefer_Etikettierung")(0)
Pruefer_Vertrieb = doc.GetItemValue("Pruefer_Vertrieb")(0)
Materialbeschreibung = doc.GetItemValue("Materialbeschreibung")(0)
currentuser = session.username
berechtigung = "false"
j=0
'Prüfung ob lokal oder am Server gearbeitet wird (Außendienstler)
If ( db.Server = "" ) Then
Set nab = New NotesDatabase ("", "unseradressbuch.nsf") 'Lokale hbnames.nsf
Else
Set nab = New NotesDatabase ("servername", "names.nsf")
End If
Set view = nab.GetView ("Groups")
Set viewentry = view.GetEntryByKey("ZHB_Lastenheft_Vertrieb")
Set person = viewentry.Document
Forall item In person.GetItemValue("members")
user(i)=item
If user(i) = currentuser Then
berechtigung = "true"
End If
End Forall
If berechtigung = "false" Then
Messagebox "Sie sind nicht berechtigt ein Dokument zur Prüfung einzureichen",64,"Achtung"
Exit Sub
Else
continue = True
End If
'Pfichtfelder prüfen --------------
Print "Status des Dokuments wird überprüft ..."
If status = "vertrieb" Then
Print "Pflichtfelder für Vertrieb werden geprüft ..."
Forall item In doc.GetItemValue("UmweltaspekteVertrieb")
UmweltaspekteVertrieb (j) = item
j=j+1
End Forall
…
End If
'Prüfung Pflichtfelder Ende ----------
'Feldwerte in andere Bereiche überführen
Print "Felder werden in andere Bereiche übertragen ... Bitte warten..."
doc.DLastenheft1 = doc.GetItemValue("Lastenheft1")(0)
doc.ELastenheft1 = doc.GetItemValue("Lastenheft1")(0)
doc.DLastenheft2 = doc.GetItemValue("Lastenheft2")(0)
doc.ELastenheft2 = doc.GetItemValue("Lastenheft2")(0)
doc.DZeichung = doc.GetItemValue("Zeichung")(0)
doc.EZeichung = doc.GetItemValue("Zeichung")(0)
…
'QW
doc.QualitaetHygieneText1 = doc.GetItemValue("VQualitaetHygieneText1")(0)
doc.QualitaetHygieneText2 = doc.GetItemValue("VQualitaetHygieneText2")(0)
doc.QualitaetHygieneText3 = doc.GetItemValue("VQualitaetHygieneText3")(0)
'Entwicklung
doc.Schrumpffolie = doc.GetItemValue("VSchrumpffolie")(0)
doc.MonaxialBiaxial = doc.GetItemValue("VMonaxialBiaxial")(0)
…
'Druck
doc.dpfd = doc.GetItemValue("pfd")(0)
doc.ppfd = doc.GetItemValue("pfd")(0)
…
'Produktion
doc.MaschinenNrP = doc.GetItemValue("VMaschinenNr")(0)
doc.DMaschinenNrP = doc.GetItemValue("VMaschinenNr")(0)
…
'Disposition
doc.DNadelperforation2 = doc.GetItemValue("VNadelperforation2")(0)
doc.DPerforationsart2 = doc.GetItemValue("VPerforationsart2")(0)
doc.DLochung2 = doc.GetItemValue("VLochung2")(0)
…
'Feldwerte in andere Bereiche übertragen Ende -------
'Entwurfsmodus des Dokuments beenden
Call doc.Replaceitemvalue("entwurf", "nein")
'Das Protokollfeld füllen
autor = doc.GetItemValue("Display_Autor")(0)
protokoll = "Zur Prüfung eingereicht am " + Now() + " von " + session.CommonUserName
materialnummer = doc.GetItemValue("Materialnummer")(0)
i=0
'Den ersten Prüfer ermitteln
qw = doc.GetItemValue("Pruefer_QW")(0)
entwicklung = doc.GetItemValue("Pruefer_Entwicklung")(0)
produktion = doc.GetItemValue("Pruefer_Produktion")(0)
…
thisdoc.EditMode = True
'Nächsten Prüfer ermitteln
Print "Prüfer werden ermittelt ..."
If qw <> "Keine Prüfung" Then
npruefer = "ZHB_Lastenheft_QW"
status = "qw"
recipients = "ZHB_Lastenheft_QW"
Elseif entwicklung <> "Keine Prüfung" Then
npruefer = "ZHB_Lastenheft_Entwicklung"
status = "entwicklung"
recipients = "ZHB_Lastenheft_Entwicklung"
Elseif produktion <> "Keine Prüfung" Then
…
End If
'Felder setzen
Call doc.Replaceitemvalue("vpruefer", "ZHB_Lastenheft_Vertrieb")
Call doc.Replaceitemvalue("npruefer", npruefer)
Call doc.Replaceitemvalue("status", status)
'Protokoll ausfüllen
Print "Protokoll ausfüllen..."
Forall item In doc.GetItemValue("protocol")
neuesProtokoll(i)=item
i=i+1
End Forall
neuesProtokoll(i) = protokoll
Call doc.Replaceitemvalue("protocol", neuesProtokoll)
Call thisdoc.Save
Call thisdoc.Close
'Mailversand
maildoc.Form = "Memo"
maildoc.Subject = "Ein Lastenheft liegt für Sie zur Bearbeitung vor (" + Materialbeschreibung + ")"
maildoc.SendTo = recipients
Call link.AppendText("Das folgende Lastenheft liegt für Sie zur Bearbeitung vor!")
Call link.AddNewLine( 2 )
Call link.AppendText("Hier ein direkter Link = > ")
Call link.AppendDocLink(doc, doc.Subjekt (0))
maildoc.Send( False)
'Infobox
Messagebox "Dokument wurde zur Prüfung eingereicht",64, "Hinweis"
Call thisdoc.Close
End Sub