Autor Thema: Löschen von Antwortdokumenten  (Gelesen 1416 mal)

Offline Ulf

  • Frischling
  • *
  • Beiträge: 2
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Löschen von Antwortdokumenten
« am: 28.06.02 - 18:37:49 »
???Hallo,

ich habe folgende Frage. Ich erstellen eine Inventur Datenbank für PC's. Als Hauptdokument erstelle ich das Dokument für die Hardware und als Antwortdokument wird das Dokument für die Software erstellt.
Wenn ich jetzt das Hardwaredokument lösche, dann bleiben die entsprechenden Anwortdokumente auch erhalten.
Wie kann ich sicherstellen, dass ich mit dem Haupotdukument gleichfalls die zugehörigen Antwortdokumente lösche.

Wer kann mir dort weiterhelfen? Vielen Dank!

Ulf
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline DaJamz

  • Frischling
  • *
  • Beiträge: 38
  • Geschlecht: Männlich
  • Warum hat mich keiner gewarnt???
Re: Löschen von Antwortdokumenten
« Antwort #1 am: 28.06.02 - 18:47:42 »
Hallo Ulf,

du musst in der DB im Datenbank-Script bei Postdocumentdelete eine Abfrage reinbauen und prüfen ob eine Response vorhanden ist, wenn ja wird diese mitgelöscht.

Solong
DaJamz
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Löschen von Antwortdokumenten
« Antwort #2 am: 01.07.02 - 08:16:13 »
Hi,

hier eine Routine, die ich schon seit einiger Zeit einsetze.

Sub DeleteChilds(doc As NotesDocument)
     
     Dim responses As NotesDocumentCollection
     Dim dummy As NotesDocument
     Dim tmpdoc As NotesDocument
     
     Set responses = doc.Responses
     Set dummy = responses.GetFirstDocument
     While Not (dummy Is Nothing)
           Set tmpdoc = responses.GetNextDocument(dummy)          
           Call dummy.Remove(True)
           Set dummy = tmpdoc
     Wend
           
End Sub

Rufe die Routine auf bevor das Hauptdokument gelöscht
wird.

z.B.

...
Call DeleteChilds(doc)
Call doc.Remove(True)
...


Axel

« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Ulf

  • Frischling
  • *
  • Beiträge: 2
  • Geschlecht: Männlich
  • I love YaBB 1G - SP1!
Re: Löschen von Antwortdokumenten
« Antwort #3 am: 02.07.02 - 12:18:37 »
??? Hi

danke für die Antworten. Ich glaube mir fehlt jetzt doch noch etwas mehr im Lotus Script. Ich habe bisher nicht mit Scipts gearbeitet. Wir kann ich eigentlich zunächst mal ein Hauptdokument im Backend löschen. Ich werde aus der Notes Hilfe nicht schlau.

Vielen Dank,

Ulf

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Löschen von Antwortdokumenten
« Antwort #4 am: 02.07.02 - 12:26:50 »
Hi,

füge folgenden Code in einen Aktionsbutton in einer Ansicht ein.

Sub Click

Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim i As Integer
 
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments

For i = 1 to collection.Count
 Set doc = collection.GetNthDocument(i)
 Call doc.Remove(True)
Next

End Sub

So kann eine ganz einfache Aktion zum löschen von Dokumenten aussehen. Sie enthält allerdings keine Sicherheutsabfragen für den User usw.

Axel
« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline pippo

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 580
  • I love YaBB 1G - SP1!
Re: Löschen von Antwortdokumenten
« Antwort #5 am: 08.07.02 - 08:46:13 »
hallo zusammen,

bei datenbankscritp bei querydocumentdelete fogendes eingeben

If  Source.Documents.Count > 0 Then
Msgbox "Verwenden Sie bitte den Befehl 'Löschen' im Dokument!", 48,"Raiffeisen"
continue = False
Exit Sub
End If

damit generell die löschtaste nicht verwendet werden kann

anschließend in den masken eine schaltfläche mit folgenden script einbauen

gebe dir aus meiner projektdb eine prozedur (einfach nur das verwenden was du brauchst

schönen tag pippo

****************************************

Sub RemoveDoc(Doc As NotesDocument, UIDoc As NotesUIDocument, RWert As Integer)
     
     REM Löschen von Dokumenten
     
     Dim ws As New NotesUIWorkspace          
     Dim db As NotesDatabase
     Dim session As New NotesSession
     Dim userName As NotesName
     Dim NotRemove As Integer
     Set userName = session.CreateName(session.UserName)
     Set db = session.CurrentDatabase
     
     Dim tmpEffBeg As Variant,       tmpProID As String, tmpProArt As String
     tmpProArt= doc.ProArt(0)
     tmpProID = doc.ProID(0)
     REM Effektiver Beginn
     If doc.Form(0) = "frmProjekt" Then            
           REM Projekt
           tmpEffBeg = doc.ProEffBeg(0)
     Elseif doc.Form(0) = "frmPhase" Then            
           REM Phase
           tmpEffBeg = doc.PhaEffBeg(0)
     Elseif doc.Form(0) = "frmAufgabe" Then            
           REM Aufgabe
           tmpEffBeg = doc.AufEffBeg(0)
     Elseif doc.Form(0) = "frmTagAufwand" Then            
           REM Tagesaufwand
           tmpEffBeg = ""
     Else
           Msgbox "Fehler: Prozedur kann nicht von diesem Form aus gestartet werden!"
           RWert =1      
           Exit Sub
     End If
     
     NotRemove=0
     
     REM Nur LPH darf Projekt löschen
     If doc.Form(0) = "frmProjekt" Then      
           Dim tmpRolle
           REM Kontrolle SUPERVISOR
           tmpRolle = Evaluate("@IsMember('[SUPERVISOR]';@UserRoles)")
           If tmpRolle(0) = 1 Then
                 Goto WeiterSupervisor
           End If
           REM Kontrolle LPH
           tmpRolle = Evaluate("@IsMember('[LPH]';@UserRoles)")
           If tmpRolle(0) = 0 Then
                 Msgbox "Nur Lösungsphilosophen sind berechtigt Projekte zu löschen!" , 48, "Raiffeisen"      
                 RWert =1      
                 Exit Sub
           End If
     End If
     
WeiterSupervisor:
     REM Bei Neu darf nicht gelöscht werden
     If UIDoc.IsNewDoc = True Then
           Msgbox "Bei Neu darf nicht gelöscht werden!" , 48, "Raiffeisen"
           RWert =1
           Exit Sub      
     End If
     REM Phase 0 und Aufgaben 0 können nur von Supervosor gelöscht werden
     REM Kontrolle SUPERVISOR
     tmpRolle = Evaluate("@IsMember('[SUPERVISOR]';@UserRoles)")
     If tmpRolle(0) = 0 Then
           REM Phase
           If doc.Form(0) = "frmPhase" Then            
                 If doc.PhaNr(0) = 0 Then            
                       Msgbox "Sie sind nicht berechtigt Phase 0 zu löschen!" , 48, "Raiffeisen"      
                       RWert =1      
                       Exit Sub                  
                 End If
           End If
           REM Aufgabe
           If doc.Form(0) = "frmAufgabe" Then            
                 If doc.AufNr(0) = 0  And doc.ProArt(0) <> "30" Then            
                       Msgbox "Sie sind nicht berechtigt Aufgabe 0 zu löschen!" , 48, "Raiffeisen"      
                       RWert =1      
                       Exit Sub      
                 End If
           End If
     End If
     
     REM Status wird kontrolliert
     If doc.Form(0) <> "frmTagAufwand" Then                  
           If tmpProArt <> "10"  And tmpProArt <> "30" Then
                 Msgbox "Nur Projektanforderugen oder Wartungsprojekte können gelöscht werden!" , 48, "Raiffeisen - Löschen nicht möglicht!"
                 RWert =1
                 Exit Sub
           End If
     End If
     REM Kontrolle Ob User Berechtigung hat<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
     If UIDoc.IsNewDoc = False Then      
           Dim Continue As Variant
           Call KontrolleRemoveForm(doc, Continue)
           If Continue = False Then Exit Sub
     Else
           Exit Sub
     End If
     REM Effektiver Beginn wird kontrolliert
     Dim txtMsgbox As String
     txtMsgbox=""
     If tmpEffBeg <> "" Then
           If doc.Form(0) = "frmProjekt" Then            
                 txtMsgbox="Für das Projekt wurden bereits Tagesaufwände erfasst! Projekt kann nicht gelöscht werden"
           Elseif doc.Form(0) = "frmPhase" Then            
                 txtMsgbox="Für die Phase wurden bereits Tagesaufwände erfasst! Phase kann nicht gelöscht werden"
           Elseif doc.Form(0) = "frmAufgabe" Then            
                 txtMsgbox="Für die Aufgabe wurden bereits Tagesaufwände erfasst! Aufgabe kann nicht gelöscht werden"
           End If
           Msgbox txtMsgbox , 48, "Raiffeisen - Löschen nicht möglicht!"      
           RWert =1
           Exit Sub      
     End If
     REM Löschen Ja - Nein
     txtMsgbox=""
     If doc.Form(0) = "frmProjekt" Then            
           txtMsgbox="Möchten Sie das Projekt und alle seine Phasen und Aufgaben wirklich löschen?"
     Elseif doc.Form(0) = "frmPhase" Then            
           txtMsgbox="Möchten Sie die Phase und alle ihre Aufgaben wirklich löschen?"
     Elseif doc.Form(0) = "frmAufgabe" Then            
           txtMsgbox="Möchten Sie die Aufgabe wirklich löschen?"
     Elseif doc.Form(0) = "frmTagAufwand" Then            
           txtMsgbox="Möchten Sie den Tagesaufwand wirklich löschen?"
     End If
     If Msgbox (txtMsgbox,36,"Raiffeisen") = 7 Then
           Exit Sub
     End If
     
     If userName.Common <> "Franz Rauch" Then
           'Msgbox "i moches grod...     :-)"    
           'Exit Sub
     End If
     
     Dim curTag As NotesDocument, curAuf As NotesDocument, curPha As NotesDocument, curPro As NotesDocument
     Dim allTag As NotesDocumentCollection, allAuf As NotesDocumentCollection, allPha As NotesDocumentCollection
     Dim item As NotesItem, LockName As NotesName
     
     REM Profildocument wird gesucht für Servername und Filename von Dok
     Dim tmpProfile As NotesDocument      
     Set tmpProfile = db.GetProfileDocument("Profile_Pro")
     
     REM Projektdb wird neu geöffnet, um Änderungen eines anderen Users zu erkennen
     Dim dbLock As New NotesDatabase( "", "" )
     Dim tmpForm As String
     REM Projektdatenbank wird geöffnet, über Profile
     If dbLock.OpenByReplicaID(tmpProfile.ServerPro(0) ,Left(tmpProfile.RepIDPro(0),8) & Right(tmpProfile.RepIDPro(0),8) ) Then
           REM Msgbox  dbLock.Title & " gefunden..."
     Else
           Msgbox "Prokejtdb nicht gefunden..."
           RWert=1
           Exit Sub
     End If
     
     REM Jetzt wird Projekt gesucht - backend
     Set curPro = dbLock.GetDocumentByUNID( tmpProID )
     
     If curPro.LockUser(0)="" Then
           curPro.LockUser = userName.Canonical
           Call curPro.Save(True,False)
           curPro.LockUserDT =curPro.LastModified
           Call curPro.Save(True,False)
           REM Msgbox "Projekt von " & userName.Canonical & " gesperrt..." & curPro.Form(0) & curPro.LockUser(0)
     Else      
           Set LockName = session.CreateName(curPro.LockUser(0))
           Msgbox "Projekt " & curPro.ProName(0) & " kann nicht gelöscht werden! Wird von " & LockName.Common & " bearbeitet!",48,"Raiffeisen"      
           RWert=1
           Exit Sub
     End If      
     
     Dim PhaNr As Integer, AufNr As Integer
     If doc.Form(0) = "frmProjekt" Then            
           REM Suche Phasen
           Set allPha= curPro.Responses
           If AllPha.count > 0 Then
                 For PhaNr = 1 To AllPha.count
                       Set curPha = allPha.GetNthDocument(PhaNr)
                       REM Suche Aufgaben
                       Set allAuf= curPha.Responses
                       If AllAuf.count > 0 Then
                             For AufNr = 1 To AllAuf.count
                                   Set curAuf = allAuf.GetNthDocument(AufNr)
                                   REM Suche Tagesaufwände
                                   Set allTag= curAuf.Responses
                                   If allTag.count =0 Then
                                         
                                         REM Bei Aufgabe Wartung wird nun das HotlineDoc gesucht und Status zurückgesetzt
                                         If  curAuf.HasItem( "HotLID" ) Then
                                               Call AktDocHotlineWR(session , db ,curAuf ,RWert)            
                                               If RWert =1 Then
                                                     Exit Sub
                                               End If
                                         End If
                                         
                                         REM Aufgabe wird gelöscht
                                         Call curAuf.Remove(True)
                                   Else
                                         Msgbox "Fehler! Sie versuchen Dokumente eines Projektes zu löschen wo bereits Tagesaufwände erfasst wurden!",48,"Raiffeisen"
                                         RWert=1
                                         NotRemove=1
                                         Goto Ende
                                   End If
                             Next      
                       End If
                       REM Phase wird gelöscht
                       Call curPha.Remove(True)
                 Next      
           End If            
     Elseif doc.Form(0) = "frmPhase" Then            
           REM Aktuelle Phase
           Set curPha = doc
           REM Suche Aufgaben
           Set allAuf= curPha.Responses
           If AllAuf.count > 0 Then
                 For AufNr = 1 To AllAuf.count
                       Set curAuf = allAuf.GetNthDocument(AufNr)
                       REM Suche Tagesaufwände
                       Set allTag= curAuf.Responses
                       If allTag.count =0 Then
                             
                             REM Bei Aufgabe Wartung wird nun das HotlineDoc gesucht und Status zurückgesetzt
                             If curAuf.HasItem( "HotLID" ) Then
                                   Call AktDocHotlineWR(session , db ,curAuf ,RWert)            
                                   If RWert =1 Then
                                         Exit Sub
                                   End If
                             End If
                             
                             REM Aufgabe wird gelöscht
                             Call curAuf.Remove(True)
                       Else
                             Msgbox "Fehler! Sie versuchen Dokumente eines Projektes zu löschen wo bereits Tagesaufwände erfasst wurden!",48,"Raiffeisen"
                             RWert=1
                             NotRemove=1
                             Goto Ende
                       End If
                 Next      
           End If            
     Elseif doc.Form(0) = "frmAufgabe" Then            
           REM Aktuelle Aufgabe
           Set curAuf = doc
           REM Suche Tagesaufwände
           Set allTag= curAuf.Responses
           If allTag.count > 0 Then
                 Msgbox "Fehler! Sie versuchen Dokumente eines Projektes zu löschen wo bereits Tagesaufwände erfasst wurden!",48,"Raiffeisen"
                 RWert=1
                 NotRemove=1
                 Goto Ende
           End If
     Elseif doc.Form(0) = "frmTagAufwand" Then            
           REM OK      
     End If
     
Ende:
     If NotRemove=0 Then      
           Dim BackEndDoc As notesDocument
           REM Aktives Doc wird geschlossen
           UIDoc.close      
           If doc.Form(0) = "frmProjekt" Then            
                 REM Nun wird Projekt gelöscht
                 Call curPro.Remove(True)                  
           Elseif doc.Form(0) = "frmPhase" Then            
                 REM Nun wird Phase gelöscht
                 Set BackEndDoc = dbLock.GetDocumentByUNID( Doc.PhaID(0) )
                 Call BackEndDoc.Remove(True)                  
           Elseif doc.Form(0) = "frmAufgabe" Then            
                 REM Nun wird Aufgabe gelöscht
                 Set BackEndDoc = dbLock.GetDocumentByUNID( Doc.AufID(0) )
                 
                 REM Bei Aufgabe Wartung wird nun das HotlineDoc gesucht und Status zurückgesetzt
                 If BackEndDoc.HasItem( "HotLID" ) Then
                       Call AktDocHotlineWR(session , db ,BackEndDoc ,RWert)            
                       If RWert =1 Then
                             Exit Sub
                       End If
                 End If
                 
                 Call BackEndDoc.Remove(True)      
           Elseif doc.Form(0) = "frmTagAufwand" Then            
                 REM Nun wird gelöscht
                 Set BackEndDoc = dbLock.GetDocumentByUNID( Doc.TagID(0) )
                 Call BackEndDoc.Remove(True)      
           End If            
     End If
     
     REM Projektsperre wird aufgehoben
     If NotRemove=1 Then
           Msgbox "Projekt konnte nicht gelöscht werden!",48,"Raiffeisen"            
     End If
     
     If doc.Form(0) <> "frmProjekt" Or NotRemove=1 Then                  
           If doc.Form(0) = "frmTagAufwand" Then      
                 REM Projekt wird aktualisiert, damit Summen und Datum stimmt
                 REM Hier wird Projektsperre in Funktion aufgehoben
                 Call AktPro(doc.AufID(0), doc.PhaID(0), doc.ProID(0), "","Ja")            
                 Call ws.viewrefresh()
                 Exit Sub
           Elseif doc.Form(0) = "frmAufgabe" Then            
                 REM Projekt wird aktualisiert, damit Summen und Datum stimmt
                 
                 REM Kontrolle ob Phase noch eine Aufgabe hat
                       REM Aufgabe Ja            >      Projekt wird mit dieser Aufgabe aktualisiert            > OK(Exit)            1
                       REM Aufgabe Nein      >      Phase Daten auf NULL                                                                                    2
                             REM Kontrolle ob es weitere Phasen und Aufgaben gibt                                                      3
                                   REM Weitere Pha und Auf Ja:      suche Auf - Pro aktualisieren       > OK (Exit)            4
                                   REM es gibt keine Auf            >       Daten von Pro      auf Null                                                            5
                 
                 REM 1
                 Set curPha = dbLock.GetDocumentByUNID( Doc.PhaID(0) )                  
                 REM Suche Aufgaben
                 Set allAuf= curPha.Responses
                 If AllAuf.count > 0 Then
                       For AufNr = 1 To AllAuf.count
                             Set curAuf = allAuf.GetNthDocument(AufNr)
                             REM Aufgabe gefunden; nun wird Projekt aktualisert und Programm verlassen
                             REM Hier wird Projektsperre in Funktion aufgehoben
                             Call AktPro(curAuf.AufID(0), curAuf.PhaID(0), curAuf.ProID(0), "","Ja")            
                             Call ws.viewrefresh()
                             Exit Sub                                          
                       Next      
                 Else                        
                       REM 2
                       curPha.PhaGepBeg=""
                       curPha.PhaGepEnd=""
                       curPha.PhaEffBeg=""
                       curPha.PhaEffEnd=""
                       curPha.PhaGepAufW=""
                       curPha.PhaGepAufWT=""
                       curPha.PhaEffAufW=""
                       curPha.PhaEffAufWT=""
                       curPha.PhaErlPro=""
                       curPha.PhaGepAufWT=""
                       curPha.PhaEffAufWT=""
                       curPha.IcoB=""
                       curPha.IcoT=""
                       Call curPha.Save( True, False)            
                 End If
                 REM 3
                 Set allPha= curPro.Responses
                 If AllPha.count > 0 Then
                       For PhaNr = 1 To AllPha.count
                             Set curPha = allPha.GetNthDocument(PhaNr)
                             REM Suche Aufgaben
                             Set allAuf= curPha.Responses
                             If AllAuf.count > 0 Then
                                   For AufNr = 1 To AllAuf.count
                                         Set curAuf = allAuf.GetNthDocument(AufNr)
                                         REM 4
                                         REM Aufgabe gefunden; nun wird Projekt aktualisert und Programm verlassen
                                         REM Hier wird Projektsperre in Funktion aufgehoben
                                         Call AktPro(curAuf.AufID(0), curAuf.PhaID(0), curAuf.ProID(0), "","Ja")            
                                         Call ws.viewrefresh()
                                         Exit Sub                                          
                                   Next      
                             End If
                       Next      
                 End If      
                 REM 5
                 curPro.ProGepBeg=""
                 curPro.ProGepEnd=""
                 curPro.ProEffBeg=""
                 curPro.ProEffEnd=""
                 curPro.ProGepAufW=""
                 curPro.ProEffAufW=""
                 curPro.ProErlPro=""
                 curPro.ProGepAufWT=""
                 curPro.ProEffAufWT=""
                 curPro.IcoB=""
                 curPro.IcoT=""
                 Call curPro.Save( True, False)      
           Elseif doc.Form(0) = "frmPhase" Then            
                 REM Projekt wird aktualisiert, damit Summen und Datum stimmt                  
                 
                 REM Kontrolle ob es Phasen mit Aufgabe gibt
                       REM Aufgbe Ja            >      Projekt wird mit dieser Aufgabe aktualisiert            > OK(Exit)                        1
                       REM Aufgbe Nein      >      Daten von Pro auf NULL                                                                                                2
                 
                 REM 1
                 Set allPha= curPro.Responses
                 If AllPha.count > 0 Then
                       For PhaNr = 1 To AllPha.count
                             Set curPha = allPha.GetNthDocument(PhaNr)
                             REM Suche Aufgaben
                             Set allAuf= curPha.Responses
                             If AllAuf.count > 0 Then
                                   For AufNr = 1 To AllAuf.count
                                         Set curAuf = allAuf.GetNthDocument(AufNr)
                                         REM 4
                                         REM Aufgabe gefunden; nun wird Projekt aktualisert und Programm verlassen
                                         REM Hier wird Projektsperre in Funktion aufgehoben
                                         Call AktPro(curAuf.AufID(0), curAuf.PhaID(0), curAuf.ProID(0), "","Ja")            
                                         Call ws.viewrefresh()
                                         Exit Sub                                          
                                   Next      
                             End If
                       Next      
                 End If      
                 REM 2
                 curPro.ProGepBeg=""
                 curPro.ProGepEnd=""
                 curPro.ProEffBeg=""
                 curPro.ProEffEnd=""
                 curPro.ProGepAufW=""
                 curPro.ProEffAufW=""
                 curPro.ProErlPro=""
                 curPro.ProGepAufWT=""
                 curPro.ProEffAufWT=""
                 curPro.IcoB=""
                 curPro.IcoT=""
                 Call curPro.Save( True, False)      
           End If
           
           REM Sperre wird aufgehoben
           curPro.LockUser=""
           Call curPro.Save( True, False)
           curPro.LockUserDT=curPro.LastModified
           Call curPro.Save( True, False)
     End If
     




« Letzte Änderung: 01.01.70 - 01:00:00 von 1034200800 »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz