Autor Thema: Agent doppelte Dokumente löschen  (Gelesen 4785 mal)

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Agent doppelte Dokumente löschen
« am: 11.06.03 - 08:44:23 »
Hallo,

ich versuche gerade einen Agenten zu programmieren, der eine Ansicht nach doppelten Dokumenten durchsucht. Z.B. alle Dokumente löscht, die den gleichen Titel haben (Id geht leider nicht, da es sich um Kopien handelt.) Also ich schaffe es bis jetzt bestimmte Dokumente zu löschen. Wie bekomme ich den Vergleich von Titel1 zu Titlel2 und zu allen anderen Titeln hin?

Danke und Gruß

klaussal

  • Gast
Re:Agent doppelte Dokumente löschen
« Antwort #1 am: 11.06.03 - 09:06:05 »
... mal so ins unreine gedacht:
erstes doc in der ansicht greifen, titel in einen string schieben. dann in einer inneren schleife den rest der docs lesen und bei = löschen. viewrefresh nicht vergessen. jetzt das nächste doc lesen und wieder die innere schleifen laufen lassen. :-\

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Agent doppelte Dokumente löschen
« Antwort #2 am: 11.06.03 - 09:08:13 »
Hallo Magoo,

ich habe hier eine Funktion die auf DOC_ID überprüft.
Überall wo DOC_ID steht mußt Du deinen Titel
einsetzen. Teste das doch mal.

Ciao
Don Pasquale


Function DoesDOC_IDexists(Byval DOC_ID As String) As Integer
   
   Dim VIEW_BY_DOC_ID As String
   VIEW_BY_DOC_ID   = "DOC_ID"
   
   Dim Anzahl As Integer
   Dim session As New NotesSession    
   Set db = session.CurrentDatabase
   Set view = db.GetView(VIEW_BY_DOC_ID)
   Dim dc As notesdocumentcollection
   Set dc = view.GetAllDocumentsByKey(DOC_ID, False)
   
   Print DOC_ID
   ANZAHL = dc.Count
   
   If ANZAHL = 0 Then
      DoesDOC_IDexists = 0
   Else
      DoesDOC_IDexists = 1
   End If
End Function

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Re:Agent doppelte Dokumente löschen
« Antwort #3 am: 11.06.03 - 09:30:11 »
@Don Pasquale

habe ich versucht, der macht aber irgendwie nix. Was passiert genau, sollte da ne Ausgabe oder so kommen?

Gruss

klaussal

  • Gast
Re:Agent doppelte Dokumente löschen
« Antwort #4 am: 11.06.03 - 09:32:37 »
... nö, das teil von donpasquale setzt nur ein feld auf 0 oder 1, je nachdem ob die doc_id mehrmals vorkommt oder nicht...

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:Agent doppelte Dokumente löschen
« Antwort #5 am: 11.06.03 - 09:59:49 »
Hi,

nochmal ins Blaue gedacht...

Versuch's mal mit der Search-Methode aus der NotesDatabase-Klasse.

...
strTitel = "Überschrift nach der gesucht werden soll"
strSearch = "Titel = '" & strTitel & "'"
Set collection = db.Search(sSearch, Nothing, 0 )   

If collection.Count > 1 Then
  Messagebox "Mehrere Dokumente vorhanden"
End If
...

Axel
« Letzte Änderung: 11.06.03 - 10:01:27 von Axel »
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline MrMagoo

  • Senior Mitglied
  • ****
  • Beiträge: 359
  • Geschlecht: Männlich
  • AAAhhh
Re:Agent doppelte Dokumente löschen
« Antwort #6 am: 11.06.03 - 10:10:18 »
@Don Pasquale

irgendwie stehe ich wohl auf dem Schlauch, der Agent macht nix bei mir, ändert auch keine Feld

@Axel
ich will nicht nach einer bestimmte Überschrift suchen, sonder alle miteinander vergleichen und bei denen, die doppelt sind, den ältesten Eintrag rausschmeißen  ??? ??? ???

klaussal

  • Gast
Re:Agent doppelte Dokumente löschen
« Antwort #7 am: 11.06.03 - 10:18:51 »
@MrMagoo,
ignorierst du meine antworten  ???. ich habe doch geschrieben, dass das teil von donpasquale nur das feld DoesDOC_IDexit
 nur auf 0 bzw auf 1 setzt... das war auch nur als anregung gedacht...
lass dir meine idee mal durch den kopf gehen... ::)

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:Agent doppelte Dokumente löschen
« Antwort #8 am: 11.06.03 - 10:19:21 »
Hi,

daß ist ja auch nur die Suche ob es weitere Dokumente mit diesem Titel gibt. a gehört noch weitere Logik außenrum.

So zum Beispiel:

...

Set entrycollection = view.AllEntries
Set entry = vc.GetFirstEntry()
While Not (entry Is Nothing)
  Set doc = entry.Document
  strTitel = doc.Titel(0)
  strSearch = "Titel = '" & strTitel & "'"
  Set collection = db.Search(sSearch, Nothing, 0 )  

  If collection.Count > 1 Then
    Messagebox "Mehrere Dokumente vorhanden"

    'Löschen der älteren Dokumente
  End If

  Set entry = vc.GetNextEntry(entry)

Wend
...


Axel

Ohne Computer wären wir noch lange nicht hinterm Mond!

klaussal

  • Gast
Re:Agent doppelte Dokumente löschen
« Antwort #9 am: 11.06.03 - 10:32:22 »
@axel,

in die gleiche richtung zielte meine erste idee. das mit der collection ist natürlich eine gute idee  :D

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:Agent doppelte Dokumente löschen
« Antwort #10 am: 11.06.03 - 10:38:56 »
Hi,

ich glaube aber auch, dass das nicht ganz unproblematisch ist.

Das Problem dürfte hier liegen:

Set entrycollection = view.AllEntries

Damit hast du alle Dokumente in einer Ansicht. Was passiert aber, wenn doppelte Dokumente gelöscht werden. In entrycollection sind sie aber noch vorhanden. Versucht man dann drauf zuzugreifen, knallts. Das müsste man irgendwie abfangen. Aber dafür fehlt mir im Moment die Idee wie.

Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

klaussal

  • Gast
Re:Agent doppelte Dokumente löschen
« Antwort #11 am: 11.06.03 - 10:59:30 »
@axel,

so gesehen ist mein erster ansatz dann doch nicht so schlecht. dabei fliegt ja nur das doppelte doc raus. das ist zwar zeitaufwendig, aber es klappt.

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:Agent doppelte Dokumente löschen
« Antwort #12 am: 11.06.03 - 11:09:34 »
@klaussal

Ja aber,....

Ein Teufel steckt auch hier noch im Detail. Du machst das mit

Set doc = view.GetFirstDocument

While...

  Set doc = view.GetNextDocument(doc)
Wend
...

Wenn du dann doc löscht, weil doppelt und älter, fehlt der Bezug für GetNextDocument. Das muss auch irgendwie abgefangen werden.


Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

klaussal

  • Gast
Re:Agent doppelte Dokumente löschen
« Antwort #13 am: 11.06.03 - 11:23:15 »
@axel,

jau, stimmt. :'(
nächster ansatz: eine view seq. durchgehen. für jedes doc eine collection bilden, jedes doc dieser collection anschauen, wenn docid-collection = doc-id-view, nix tun, sonst löschen, next document.
da mrmagoo sich aber ausgeklinkt hat, sollte es jetzt reichen.

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Agent doppelte Dokumente löschen
« Antwort #14 am: 11.06.03 - 11:40:11 »

Wie wäre damit ?



   Dim session As NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   
   Dim doc As NotesDocument   
   Dim RemoveDoc As NotesDocument
   
   Dim LOESCHLISTE List As String*32   
   
   Set session = New NotesSession
   Set db  = session.CurrentDatabase
   Set view = db.GetView( "DEINE VIEW" )
   Set doc = view.GetFirstDocument
   
   
   While Not doc Is Nothing
      
      
      If DOPPELT Then
         j = j + 1
         LOESCHLISTE(j) = doc.UniversalID
      End If
      
      Set doc = view.GetNextDocument(doc)         
   Wend
   
   Forall x In LOESCHLISTE
      
      Set RemoveDoc = db.GetDocumentByUNID(X)   
      Call Removedoc.RemoveFromFolder("($Inbox)")         
      
   End Forall

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:Agent doppelte Dokumente löschen
« Antwort #15 am: 11.06.03 - 12:05:48 »
@Don

Klasse Idee, dass mit einer Liste zu regeln. Damit geht man allem Ärger mit fehlenden Bezügen o. ä. aus dem Weg.

Werd ich mir merken, wenn ich mal so'n Problem hab.

Axel


Ohne Computer wären wir noch lange nicht hinterm Mond!

klaussal

  • Gast
Re:Agent doppelte Dokumente löschen
« Antwort #16 am: 11.06.03 - 12:33:11 »
... und wie sieht's da mit der 64k-beschränkung aus ?

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Agent doppelte Dokumente löschen
« Antwort #17 am: 11.06.03 - 13:07:21 »

... und wie sieht's da mit der 64k-beschränkung aus ?

@Klaussal
Du Nörgler, Jetzt bekomme ich einmal ein Lob und
Du findest wieder ein Haar in der Suppe
 ;)

Ciao

Don Pasquale

klaussal

  • Gast
Re:Agent doppelte Dokumente löschen
« Antwort #18 am: 11.06.03 - 13:09:54 »
 :'( :'( :'(  ... und dabei hab ich noch nicht einmal gefragt, was DOPPELT ist und wo's herkommt.

nein, ganz im ernst, die lösung ist sehr schön  :D :D :D :D :D

aber da es sich wohl um eine grössere anzahl von docs handelt (sonst würd ich das ja per hand machen) , sollte man schon die sache im auge behalten.
« Letzte Änderung: 11.06.03 - 13:12:27 von klaussal »

klaussal

  • Gast
« Letzte Änderung: 12.06.03 - 13:30:12 von klaussal »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz