Sorry, aber der Code ist Humbug...
Folgendes machst Du:
Du holst Dir Dok
dann erstellst Du eine neue Variable dok2, die auf das selbe Dokument referenziert.
Dann kopierst Du dok2, aber ohne eine Referenz auf das neu kopierte Dokument (in dem Fall dok3) zu erhalten.
Und schliesslich speicherst Du das dok2 (das gleichzeitig das ursprüngliche dok ist) neu ab und änderst dadurch das "Quelldokument" für Deine Kopieraktion nochmal ab...
Deine Feld- Änderungen sind nach dieser Aktion in BEIDEN Dokumenten, weil Du zuerst das Original- Dokument änderst, dann von der Änderung eine Kopie erstellst, und danach das Original- Dokument mit den neuen Werten abspeicherst....
So müsste es aussehen, dann tut es auch das, was Du willst:
| Sub Click(Source As Button) |
| |
| Dim session As New notessession |
| Dim db As notesdatabase |
| Dim col As NotesDocumentCollection |
| Dim doc As notesdocument |
| Dim doc2 As notesdocument |
| Dim nuiw As New NotesUIWorkspace |
| |
| Set db = session.currentdatabase |
| |
| Set col = db.UnprocessedDocuments |
| |
| |
| If col.Count <> 1 Then |
| Messagebox "Bitte genau 1 Dokument zum Kopieren markieren.", 0,"Achtung" |
| Exit Sub |
| End If |
| |
| |
| Set doc = col.GetFirstDocument |
| |
| Set doc2 = doc.CopyToDatabase(db) |
| |
| |
| doc2.form = "Hardware" |
| |
| |
| |
| doc2.Seriennummer = "hallo Testeingabe" |
| |
| |
| |
| Call doc2.Save(True,False) |
| |
| |
| Call nuiv.SelectDocument(doc) |
| Call nuiw.ViewRefresh |
| |
| |
| End Sub |
EDIT: Ich hoffe, Du hast sauber gefüllte Autoren- Felder in dem Dokument oder Deine User haben mehr als Autoren- Rechte in der Datenbank. Denn sonst wirst Du nach dem
set doc2 = doc.CopyToDatabase(db)
das doc2 unter Umständen nicht mehr bearbeiten können, weil auch die Autoren- Felder mitkopiert wurden. Dann bekommst Du beim Versuch des Speichern die Fehlermeldung "Sie können keine Dokumente ändern, für die sie nicht als zulässiger Autor aufgeführt sind" (oder so ähnlich)