Domino 9 und frühere Versionen > ND6: Entwicklung

Problem mit LotusScript

(1/3) > >>

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