Zählen von Dokumenten

  • Hallo zusammen,


    ich möchte 2 Datenbanken miteinander vergleichen. Ich suche alle die Dokumente wo die Anzahl der Anhänge unterschiedlich sind und will mir diese in eine Textdatei ausgeben.
    In der ersten Datenbank hat das Projekt 17 Anhänge, in de 2 DB nur 8. Trotzdem zeigt er mir im Debugger immer bei Variable b 17 an. Ich verstehe das nicht mehr.
    Ich habe den DB Index und die Ansichtenindexe aktualisiert.





    Option Public


    Option Declare


    Sub Initialize


    Dim session As New NotesSession



    Dim db As NotesDatabase


    Dim view As NotesView


    Dim doc As NotesDocument


    Dim item As NotesItem



    Dim dbarchiv As NotesDatabase


    Dim viewarchiv As NotesView


    Dim docarchiv As NotesDocument



    Dim collection1 As NotesDocumentCollection


    Dim collection2 As NotesDocumentCollection



    Dim a As Integer


    Dim b As Integer



    Set db=session.Currentdatabase


    Set view=db.getview("archivdoppeldok2")


    Set doc=view.GetFirstDocument



    Set dbarchiv=session.Getdatabase("Lotus-Test/KZVN/DE","softwareentw_archiv_2.nsf")


    Set viewarchiv=dbarchiv.getview("doppeldokarchiv2")


    Set docarchiv=viewarchiv.GetFirstDocument



    'Für Dateischreiben'


    Dim row As String


    Dim Projektnummertemp As String


    Dim dateiname As String


    dateiname="c:\temp\Doppelte Projekte in Softwareentwicklungs_ARCHIV_2.txt"


    Open dateiname For Output As #1



    'DB= softwareentwicklung.nsf


    Print "Prüfung der Stammdaten"


    row = "Projektnummer;DB_NAME;Titel;Änderung;letzte Änderung"



    Print #1, row


    Do While Not doc Is Nothing



    Set collection1=doc.Responses


    a=collection1.count



    Set docarchiv=viewarchiv.GetDocumentbykey(doc.Getitemvalue("Projektnummer")(0))



    If Not (docarchiv Is Nothing) Then


    Set collection2=docarchiv.Responses


    b=collection2.count



    If a <> b THen


    row = ""


    row = row + CStr(doc.Getitemvalue("Projektnummer")(0))+";"


    row = row + CStr(DB.Filename)+";"


    row = row + doc.Getitemvalue("Titel")(0)+";"


    row=row+Left(doc.Columnvalues(4),10)+";"


    row=row+Left(doc.LastModified,10)


    Print #1, row


    End If


    End If



    Set doc=view.GetNextdocument(doc)


    Loop



    End Sub

  • Dein Code ist vollkommen korrekt (wenn der Agent nicht zufälligerweise in einem Agenten in der "softwareentw_archiv_2.nsf" liegt), auch wenn ich Dich Bitte, in Zukunft den Code in Code- Tags und ohne überflüssige Leerzeilen zu posten, so ist das wirklich eine Qual zu lesen.


    Wenn also Dein Code beidemale 17 zurückgibt, dann HABEN die beiden Dokumente jeweils 17 Antworten. Warum GLAUBST Du denn, dass docarchiv nur 8 responses hat?
    Edit: Hier mal der Code "leserlich", damit andere sich nicht durch diesen Wust kämpfen müssen)

  • Ich habe in der Datenbank Lotus-Test/KZVN/DE","softwareentw_archiv_2.nsf") ein Projekt mit der Nummer 1974 und 8 Anhängen. (100 % ig). Der Agent wird aus der 1. Datenbank gestartet. Ich nehme aus der 1. Datenbank das Dokument mit der Nummer 1974. Diese hat 17 Antworten. Ich übergebe diese 1974 als Key für die Suche in der 2. DB. Er findet ein Dokument. Aber statt 8 werden mir 17 angezeigt

  • Mach mal bitte in der Datenbank "softwareentw_archiv_2.nsf" folgenden Agenten rein:

    Code
    Dim ses as New NotesSession
    Dim db as NotesDatabase
    Dim doc as NotesDocument
    
    
    Set db = ses.CurrentDatabase
    Set doc = db.UnprocessedDocuments.GetFirstDocument()
    Messagebox doc.Responses.Count


    Selektiere Dein Dokument mit der Nummer "1974", lass den Agenten laufen, und sag uns, was da geprompted wird.