Autor Thema: script: Doks in Ansicht nach Bedingung löschen  (Gelesen 1713 mal)

Offline bob

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • R5
script: Doks in Ansicht nach Bedingung löschen
« am: 08.06.03 - 20:45:09 »
Hi,

ich steh grad auf'm Schlauch, wie setzte ich das in Script um:
 - nimm alle Dokumente der Ansicht "blabla"
 - lösche jedes Dokument, in dem das Feld "ABC" leer ist

Die Methode, alle Doks zu löschen kenn ich ja:

Dim nvc As NotesViewEntryCollection
Dim workspace As New NotesUIWorkspace
Set view =db.GetView("DelEmAll")
Set nvc = view.AllEntries
Call nvc.removeAll (True)


Er soll aber nur die Doks nehmen, deren Feldinhalt leer ist....

Bob

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:script: Doks in Ansicht nach Bedingung löschen
« Antwort #1 am: 08.06.03 - 21:15:24 »
bau dir eine Ansicht mit SELECT Feld_ABC="", dann klappt Dein Script.

Oder Du läßt Deine Ansicht und wanderst durch jedes Doc der View und checksed einzeln ab, ob feld leer.
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline bob

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • R5
Re:script: Doks in Ansicht nach Bedingung löschen
« Antwort #2 am: 08.06.03 - 21:34:53 »
Danke @Rob!!!

Die Lösung kannte ich selber auch schon, also mit der Behelfsansicht, aber man steht manchmal wirklich daneben, also dank nochmal!

Die Performance ist nun allerdings eher mies.... Zwar nur lokal getestet, aber auf'm Server kotzen wohl die Anwender....

Welche Methodik nutzt Du, um die bestehende Ansicht durchzuwandetn und abzuchekcen ob Feld KSt_KSt leer oder nicht um das Dok dann zu löschen?

Bye,
Bob

Offline bob

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • R5
Re:script: Doks in Ansicht nach Bedingung löschen
« Antwort #3 am: 08.06.03 - 21:40:23 »
P.S.
Dies ist ein Workaround zum Excel-Import - Thread, bei dem der Agent eine voregebene Anzahl Doks importiert, inkl. leerer Zeilen.....

Hier nochmal der komplette Code, diesmal als .txt, um den Thread nicht aufzublasen.


Bob

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:script: Doks in Ansicht nach Bedingung löschen
« Antwort #4 am: 09.06.03 - 00:30:41 »
das kann man nur allgemein beantworten, denn es gibt verschiedene Lösungen:

will man keine Behelfsansicht, nimm eben db.search (was bei vielen Docs nicht das schnellste sein wird). Allerdings verstehe ich n.n. ganz bei Dir, ob die User nun etwas löschen oder ein zyklischer Agent, sprich also ein Automatismus. Dann würde ein Serveragent um einen ruhige Uhrzeit reichen, oder? Nur wie gesagt, ich kenne die "Umgebung" nicht.
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline bob

  • Aktives Mitglied
  • ***
  • Beiträge: 166
  • Geschlecht: Männlich
  • R5
Re:script: Doks in Ansicht nach Bedingung löschen
« Antwort #5 am: 09.06.03 - 20:02:03 »
Hi,

ein Automatismus reicht.
Ich werde das ganze als zyklischen Agenten implementieren.

Danke nochmal.

bye,
Bob

Offline Axel_Janssen

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 769
Re:script: Doks in Ansicht nach Bedingung löschen
« Antwort #6 am: 09.06.03 - 22:34:41 »
Du willst Dokumente löschen.

1. Du brauchst eine Auswahl an Dokumenten.
2. Du löschst alle Dokumente.

Für 2:
Ist einfacher als 1. Deshalb fange ich damit an.
In welchen gibt es eigentlich Dokument-Lösch-Methoden?
a) in NotesDocument --> Remove
b) in NotesDocumentCollection --> RemoveAll

Einfacher ist es in NotesDocumentCollection zu löschen.
Du tust einfach alle zu löschenden Dokumente in NotesDocumentCollection. NotesDocumentCollection fungiert als Container. Du löschst den Container statt jedes Dokument einzeln. Aber ist das nicht umständlicher? Nein. Wenn du z.B. durch eine view interierst, ist löschen von Dokumenten sehr umständlich.
Code
1 call doc.remove ()
2 set doc = vw.getNextDocument(doc) 
Zeile 2 läuft in einen Fehler, weil doc nämlich nicht mehr existiert.

Ander ist besser. Korrektur:
1. Du brauchst eine Auswahl an Dokumenten.
2. Du tust alle Dokumente in den Container
3. Du löschst den Container.


Für 1:
Das Kriterium, ob ein Dokument gelöscht werden soll, dürfte in aller Regel ein "Flag" sein. Also ein von dir irgendwo in der Anwendung gesetztes Feld (toDelete="1"). Diese Doks sollen dann mit einem periodischen Agenten gelöscht werden.

Die Auswahl kannst du dann über eine neue versteckte Ansicht realisieren mit der Selection-Formel
Select toDelete="1"
Wie bekommst Du diese Doks nun in eine NotesDocumentCollection.
Da du ja extra eine neue Ansicht erstellt hast, ist es am einfachsten in die Formel der ersten Ansichtsspalte sowas wie "doc" als STring hart-rein-zu-kodieren (Spalte sotieren) und über
Code
Set notesDocCollection = vw.getAllDocumentsByKey("doc") 
zu holen
Eine andere Möglichkeit wäre, darauf verzichten eine extra Löschansicht zu erstellen und mittels des periodischen Agenten über eine bestehende View zu iterieren und bei jedem Dokument nachzufragen, ob das Löschflag gesetzt. Wenn ja tust du das in die Collection. Frage ist dann nur wie erstellst du die Collection...
obige Lösung ist besser.
« Letzte Änderung: 09.06.03 - 22:38:56 von Axel_Janssen »
... design patterns are abstract designs that help identify the structure and elements involved in a specific design solution. From this, a concrete implementation can be produced.
Kyle Brown

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz