Domino 9 und frühere Versionen > ND6: Entwicklung
Problem mit LotusScript
thomas_xyz:
Hallo - ich habe ein Problem, an dem ich bereits seit Stunden sitze und ich verstehs nicht. Hoffe, mir kann irgend jemand erklären, was ich falsch mache!!
Folgendes: in einer DB (R6) existiert ein 1. Hauptdokument mit der Versionsnummer 0 und das Feld Archiv ist auch auf 0. Jetzt passiert folgendes: User sitzt auf Dok in Ansicht, klickt auf Aktion, die per Script eine Kopie des Dokumentes erstellt (dabei ein paar Felder und die ID des zu grunde liegenden Dokumentes füllt und ausliest). Alles wunderbar. In dem neuen Dokument nun gibt es eine weitere Aktion, die die gemachten Änderungen im neuen Dokument sper Script speichert und das Feld Archiv mit dem Wert 1 belegt, so dass das Dok ins Archiv verschoben wird und nur das neue, geänderte Dok noch existent ist. Das klappt alles ganz wunderbar beim erstn Mal. Wenn ich mich nun aber auf das eben erstellte Dokument setzte, welches jetzt die Versionsnr. 1 hat, eine neue Version erstelle (dann also ein neues Dok mit Vers.-nr.2) und dann die Änderungen speichern will, macht er das zwar, setzt mir aber nicht mehr den Wert 1 in das Archiv-Feld des nun zu grunde liegenden Dokumentes. Versteht ihr? Ich hoffe, ich hab mich schlüssig ausgedrückt.
Was mich eben so iritiert, ist, dass es beim erstn Mal funktioniert und ab dann nicht mehr. Werd gleich bekloppt.
Vielen Dank für die Hilfe - ich poste das Script direkt mal dazu:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.CurrentDocument
Dim item As NotesItem
Dim session As New NotesSession
Dim db As NotesDatabase
Set db = session.CurrentDatabase
Dim doc As NotesDocument
Set doc = uidoc.document
Dim doc_arch As NotesDocument
Dim stamm_archiv As String
Dim resp_item As NotesItem
Dim i As Integer
Dim user As String
user=session.commonusername
i=Messagebox ("Wollen Sie die Änderung speichern?",4,"Änderung speichern")
If i = 6 Then
If doc.KTO(0)<>doc.KTO_1(0) Then
Messagebox "Überprüfen Sie die Kontonummern auf Übereinstimmung",OK,"Kontonummern stimmen nicht überein!"
Exit Sub
Else
If doc.Kennwort(0)<>doc.Kennwort_1(0) Then
Messagebox "Überprüfen Sie die Kennworte auf Übereinstimmung",OK,"Kennworte stimmen nicht überein!"
Exit Sub
Else
Dim unitnr As String
unitnr=doc.docidarchivrev(0)
Set doc_arch = db.GetDocumentByUNID(unitnr)
doc_arch.stamm_archiv=1
Call doc_arch.save(True,True)
'Hier kommen Belegungen für Autoren-Felder ....
Call uidoc.Save
Call uidoc.Close
Call doc.Save(True, True)
Call doc_arch.save(True,True)
Call doc.Save(True, True)
End If
End If
End If
End Sub
koehlerbv:
Was spricht der Debugger?
Steht in doc.docidarchivrev auch die erwartete UuniversalID?
Bernhard
thomas_xyz:
Hallo Bernhard -
Debugger sagt nix, IDs stimmen überein. Das is ja der Witz, dass es beim ersten mal hinhaut, alles was dann kommt, ist ja eigentlich nur eine Wiederholung. Die ID wird einfach immer wieder mitkopiert.
Grüße - Thomas.
koehlerbv:
Da der Code nicht vollständig ist (zwischen dem ersten doc_arch.Save und dem zweiten muss ja noch was passieren), wird es schwer, Deinen logischen Fehler von aussen zu entdecken. Der Code, den wir kennen, macht alles richtig (oder ich habe Tomaten auf den Augen).
Mehr Code - oder stell eine abgespeckte Version der DB hier ein, mit der man den Fehler reproduzieren kann. Was anderes sehe ich momentan nicht.
Bernhard
thomas_xyz:
Super - mach ich entweder heute später oder morgen im Laufe des Tages. Vielen Dank fürs schaen auf alle Fälle!
Grüße - Thomas
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln