Autor Thema: Alle Dokumente älter als x Tage in andere DB verschieben  (Gelesen 4861 mal)

Offline edvtkb

  • Frischling
  • *
  • Beiträge: 9
Hallo zusammen,

vorab ein Lob an alle im Forum - wirklich genial hier!!
Ich habe bereits hier im Forum http://atnotes.de/index.php/topic,10891.0.html gelesen, dass es möglich ist alle Dokumente von einer DB in die andere zu verschieben. Das klappt soweit auch wunderbar.

Mir geht es jetz jedoch um die Dokumentauswahl.

Code
AllDocsSelect = "@IsNotMember(""A""; ExcludeFromView) & IsMailStationery != 1" + _
"& Form != ""Group"" & Form != ""Person"""

Ich hätte gerne dass alle Dokumente älter als X Tage verschoben werden.
Wenn möglich soll die Tage der User / Admin selbst eingeben können. (Wie die Anfangsabfragen Current/Archiv Database)

Leider klappt es mit einem einfachen
Code
@Created < [01.12.2010]
nicht.

Kann mir jemand von Euch weiterhelfen?
Vielen Dank vorab
Grüße

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #1 am: 27.06.12 - 15:05:00 »
Sieht doch gut aus, und was klappt daran nicht?

Offline edvtkb

  • Frischling
  • *
  • Beiträge: 9
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #2 am: 27.06.12 - 15:11:36 »
Stimmt, was nicht klappt hatte ich vergessen zu schreiben.
Er nimmt trotz der Auswahl alle Dokumente (egal welchen alters).

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #3 am: 27.06.12 - 15:18:08 »
Ist das Deine Originalformel, oder hast Du die aus dem Kopf geschrieben? Vielleicht fehlt das "@" vor Created? (ansonsten wüßte ich nicht, warum das nicht gehen sollte)

Offline edvtkb

  • Frischling
  • *
  • Beiträge: 9
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #4 am: 27.06.12 - 15:23:09 »
Hallo Peter,

ich habe es nun 1zu1 aus dem Agent rauskopiert:

Code
AllDocsSelect = "@IsNotMember(""A""; ExcludeFromView) & IsMailStationery != 1" + _ 
"& Form != ""Group"" & Form != ""Person"" & @Created < [01.12.2010]"

Grüße

Offline edvtkb

  • Frischling
  • *
  • Beiträge: 9
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #5 am: 27.06.12 - 15:51:40 »
Ich habe den Agent nun nochmal frisch angelegt.
Jetzt funktioniert er teilweise.  :-\

Komischerweise bekomme ich zwischenrein immer mal wieder aktuellere Dokumente.
Angenommen ich gebe 01.12.2012 als Grenzdatum ein, übernimmt der Agent trotzdem Dokumente aus 2011 oder 2012....!?

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #6 am: 27.06.12 - 16:06:44 »
Bei 01.12.2012 wäre das logisch, dass er alle nimmt, da vermutlich noch keine existieren, die danach erstellt worden sind.

Du könntest mal die Zeiteinstellungen des Clients überprüfen, es ist nicht auszuschließen, dass 01.12.2012 als 12.01.2012 interpretiert wird

Offline edvtkb

  • Frischling
  • *
  • Beiträge: 9
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #7 am: 27.06.12 - 16:16:57 »
heut hab ich aber den Fehlerteufel drin...muss ich nochmal richtig stellen - entschuldige
Mein Grenzdatum ist der 01.12.2010 und er nimmt trotzdem Dokumente aus 2011 und 2012 mit rüber....

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #8 am: 27.06.12 - 20:59:47 »
Die Zeiteinstellung hätte ich jetzt auch vermutet.
besser ist evtl. ein
Code
myDate = datenumber(2010,12,31)
AllDocsSelect = "@IsNotMember(""A""; ExcludeFromView) & IsMailStationery != 1" + _ 
"& Form != ""Group"" & Form != ""Person"" & @Created < [" +cstr(myDate) + "]"

poste vielleicht mal etwas mehr Code.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #9 am: 27.06.12 - 23:00:43 »
Vorab @"edvtkb": Wir mögen das hir nicht so mit Postings ohne ansprechbaren (Vor-)namen. Ich engagiere mich in diesem Thread daher auch erst spät und erstmal noch weiter zögerlich.

Jetzt aber ein paar Hinweise: Das
@Created < [01.12.2010]
sollte es nicht wirklich sein (auch wenn sowas übel hardcoded ist, aber das willst du ja eh ändern). Da muss etwas ganz anderes faul sein. Selbst, wenn der 01.12.2010 durch den 12.01.2010 ersetzt würde, erklärt das nicht die Ergebnisse.

Prinzipiell funktioniert dieses Konstrukt auch (heute nachmittag selber mit mehreren Notes-Clients von 7.0.2 bis 8.5.3 geprüft).

Erster Tipp von mir zur Herangehensweise:
Baue Dir in der Quell-Db eine Ansicht (die brauchst Du dann ja gar nicht zu speichern) eine Ansicht, die alle Docs anzeigt.
Lass Dir dort in einer Spalte @Created anzeigen. Passt das?
Baue eine weitere Spalte: Wenn @Created < [01.12.2010], dann String1, sonst String2. Passt das auch noch?
Wenn das auch noch passt (und jetzt würde es im Fall, dass das was anderes bringt), dann weitere Spalte: @Created < @Date (2010; 12; 1).

Auf diese Ergebnisse wäre ich jetzt gespannt, denn der "Wurm" liegt vermutlich ganz woanders.

HTH,
Bernhard

Offline edvtkb

  • Frischling
  • *
  • Beiträge: 9
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #10 am: 28.06.12 - 13:37:00 »
Hallo Bernhard,

danke für die Hinweise!

Anbei nun mal aus der Ansicht die gebaut habe einen Ausschnitt

@Created         @If(@Created< [01.12.2010]   String1""   String2"")      @Created < @Date (2010;12;1)
29.11.2007 12:14   String1   1
25.04.2007 11:29   String1   1
13.06.2007 15:53   String1   1
23.07.2007 08:56   String1   1
26.07.2007 17:07   String1   1
25.09.2007 10:30   String1   1
22.10.2007 09:53   String1   1
19.11.2007 08:35   String1   1
26.11.2007 16:45   String1   1
25.04.2008 13:24   String1   1
17.06.2008 10:54   String1   1
06.10.2008 13:53   String1   1
23.02.2009 15:39   String1   1
25.06.2009 08:36   String1   1
12.03.2010 16:37   String1   1
29.10.2010 13:39   String1   1
19.01.2011 09:06   String2   0
26.05.2011 15:42   String2   0
27.09.2011 10:50   String2   0
27.09.2011 10:53   String2   0
27.01.2012 10:17   String2   0
31.01.2012 09:41   String2   0
31.01.2012 09:45   String2   0
31.01.2012 11:03   String2   0
31.01.2012 11:17   String2   0
01.02.2012 05:35   String2   0
02.02.2012 09:13   String2   0
09.05.2006 16:05   String1   1
27.04.2006 14:13   String1   1
15.05.2006 11:10   String1   1
20.06.2006 10:26   String1   1
23.06.2006 08:20   String1   1

Das schaut doch ziemlich gut aus m.e.

Grüße
Joe(hannes)


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #11 am: 28.06.12 - 14:10:01 »
Yipp, das sieht gut aus, Joe.

Lass den Code im Debugger doch mal bis zur Bildung der NotesDocumentCollection laufen und schau Dir dann die Count-Property an.
Sicherheitshalber: Beschränke auch mal den Query-Teil nur auf das @Created - sagt Count dann noch das gleiche?

Stimmt die das Ergebnis bedenklich, dann ersetze mal @Created < [Datum] durch ein
@Created < @Date (YYYY; MM; DD).
Anderes Ergebnis?

Welche Notes-Version setzt Du ein?

HTH,
Bernhard

Offline edvtkb

  • Frischling
  • *
  • Beiträge: 9
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #12 am: 28.06.12 - 15:26:11 »
So, der Count zeigt mir beim Debuggen 6258 (bei Selection
Code
@Created < [01.12.2010]
)
bei Selection
Code
@Created < @Date (2010;12;1)
zeigt der Count beim Debuggen 6258
Wenn ich mir die Ansicht wie die Selection zusammenbastel bekomme ich 6258 Dokumente angezeigt.
Und beim überfliegen habe ich keines aus 2011 oder 2012 gesehen...

Wenn ich nun aber die Routine komplett ausführen lasse, habe ich 70 Dokumente nach dem 01.12.2010
« Letzte Änderung: 28.06.12 - 15:43:36 von edvtkb »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #13 am: 28.06.12 - 15:52:54 »
Wie hast Du diesen Code-Teil angepasst, dass er keine Dokumente vor dem CutOff mitnimmt?

Code
Forall folder In sourceDb.Views
   If folder.IsFolder And (Instr(1, folder.Name, "(", 0)<>1 Or folder.Name="($Inbox)") Then
      ' The following code ensures that folders with no docs in them still get copied
      ' so that any folder design customizations are kept
      Set destFolder = destDb.GetView(folder.Name)
      If destFolder Is Nothing Then
         Set sourceFolder = sourceDb.GetDocumentByUNID(folder.UniversalID)
         Call sourceFolder.CopyToDatabase(destDb)
         Set destFolder = destDb.GetView(folder.Name)
         If destFolder Is Nothing Then
            Msgbox("Unable to create folder in new database.")
            Exit Sub
         End If
      End If

      ' cycle through each doc in the current folder
      Set sourceDoc = folder.GetFirstDocument
      While Not (sourceDoc Is Nothing)
         Set destDoc = sourceDoc.CopyToDatabase(destDb)
         ' copy each document to the same folder in the destination database
         Call destDoc.PutInFolder(folder.Name, True)
         ' remove document from the collection of docs built from source db all docs view
         Set tempDoc = AllDocs.GetDocument(sourceDoc)
         Set sourceDoc = folder.GetNextDocument(tempDoc)
         Call AllDocs.DeleteDocument(tempDoc) 'remove from collection
         ' display progress
         current = current + 1
         Print Cstr(Round(current / docCount * 100, 0)) + "% copied"
      Wend
   End If
End Forall

Bernhard

Offline edvtkb

  • Frischling
  • *
  • Beiträge: 9
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #14 am: 28.06.12 - 16:20:19 »
da habe ich um ehrlich zu sein noch nichts angepasst.  ::)

Joe

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #15 am: 28.06.12 - 16:49:10 »
Dann ist ja alles klar, Joe  ;)

Bernhard

Offline edvtkb

  • Frischling
  • *
  • Beiträge: 9
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #16 am: 29.06.12 - 11:58:51 »
Danke für den Tipp, Bernhard.
Jedoch muss ich nun sagen, dass dies langsam an meine Grenze geht...kann mir jemand behilflich sein oder hat jemand einen Tipp?

Joe

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #17 am: 29.06.12 - 12:13:22 »
Schau Dir mal die Property Created der NotesDocument class an  ;)

Wo das in einer Bedingung hinkommt, sollte klar sein. Wenn nicht: Dann lass die Finger davon und beauftrage einen Kundigen, denn das kannst Du mehr kaputtmachen als Dir lieb ist.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Alle Dokumente älter als x Tage in andere DB verschieben
« Antwort #18 am: 29.06.12 - 12:14:53 »
Du solltest Scripte, die Du von irgendwoher kopierst und einsetzt, vorher verstanden haben. In dem Script werden alle Dokumente aus dem Ordner kopiert. Da steht nix von einer Selektionsformel, die berücksichtigt werden soll

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz