Domino 9 und frühere Versionen > ND6: Entwicklung

Problem mit LotusScript

<< < (2/3) > >>

koehlerbv:
Na dann: Willkommen im Forum, Thomas!

Bernhard

thomas_xyz:
Guten Morgen und vielen Dank.
Anbei der Rest des Codes, es werden aber tatsächlich nur nich ein paar Autorenfelder gesetzt. Ich hatte zwischendurch auch den Effekt, dass das Archiv-Kennzeichen in das aktuelle Dokument geschrieben wird. Aber immer nur bei Versionen größer 1.... Hatte den Eindruck, dass ich mit Front- und Backend durcheinandergeraten bin, aber dann dürfte auch die erste Archiv-Aktion nicht funktionieren. Oder seh ich da was falsch? Wie auch immer: über Hilfe freue ich mich sehr.
Der Code in gänze - bei den Autoren-Feldern hab ich ein bisschen gespielt, aber wie gesagt - die erste Archivierung funktioniert:

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)
            
            Set item = doc.GetFirstItem ("autoren_1")
            Call item.Remove
            Set item= New NotesItem( doc , "autoren_1" , "[admin]")
            item.IsAuthors = True         
            
            Set resp_item = doc_arch.GetFirstItem ("autoren_1")
            Call resp_item.Remove
            Set resp_item = New NotesItem( doc_arch , "autoren_1", "[admin]" )
            resp_item.IsAuthors=True            
            
            Set item = uidoc.document.GetFirstItem ("autoren_1")
            Call item.Remove
            Set item= New NotesItem( uidoc.document, "autoren_1" , user)
            item.IsAuthors = True
            
            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

dirk_2909:
Hallo,

Du sagst


--- Zitat ---User sitzt auf Dok in Ansicht,
--- Ende Zitat ---

Heißt das, dass er eine Ansicht geöffnet hat und ein min. ein Dokument markiert hat?
Betätigt er eine Aktion innerhalb der Ansicht?

Dann kannst/solltest Du nicht das CurrentDocument vom workspace nehmen.
Nimm lieber die UnprocessedDocuments:

....
dim coll as NotesDocumentCollection
set coll = db.UnprocessedDocuments
if coll.Count = 0 Then
     '??
else

set doc = coll.GetFirstDocument

While not doc is Nothing
     'dein COde
   Set doc = coll.GetNextDocument( doc )
Wend
end if

thomas_xyz:
Hallo Dirk -
der Ablauf ist wie folgt: User wählt ein Dokument in der Ansicht, klickt auf Aktion, die das Dokument kopiert und das neue Dokument zur Bearbeitung öffnet. Wenn der User dann die Änderungen durchgeführt hat, klickt er wieder auf eine Aktion (er befindet sich jetzt aber im Dok) und daraufhin soll die Vorgängerversion archiviert werden, also mit dem Kennzeichen 1 im Feld stamm_archiv versehen werden. Aber eben erst, wenn das neue, veränderte Dok abgeschlossen wurde.
Über weitere Hilfe würde ich mich immer noch sehr freuen, bin nämlich noch kein Stück weiter....
Grüße - Thomas.

dirk_2909:
Hallo


--- Code: --- unitnr=doc.docidarchivrev(0)           
            Set doc_arch = db.GetDocumentByUNID(unitnr)                 
           
            doc_arch.stamm_archiv=1
            Call doc_arch.save(True,True)
--- Ende Code ---

Hier würde ich ein wenig mehr Fehlerbehandlung einbauen  ;)


Sind in dem Dokument "Version 1" auch alle Autorenfelder korrekt gesetzt?

Warum speicherst Du das Dokument am Ende nochmal??


--- Code: --- Call uidoc.Close
            Call doc.Save(True, True)
            Call doc_arch.save(True,True)
            Call doc.Save(True, True)   
--- Ende Code ---
         


Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln