Autor Thema: Feldänderung über Agent  (Gelesen 2791 mal)

Offline regedit

  • Aktives Mitglied
  • ***
  • Beiträge: 118
  • Geschlecht: Männlich
Feldänderung über Agent
« am: 05.09.05 - 16:26:36 »
Habe für Euch wohl ein kleineres Problem.
Ich möchte mehrere Dokumente markieren und anschließend einen Agenten starten, der bei allen markierten Dokumenten das  Feld Categories mit dem eingegebenen Text überschreibt.
In meiner unten angegebenen Formel muß ich für jedes Dokument den Text erneut eingeben. Ist es irgendwie möglich, diese Eingabe nur einmalig für alle mark. Doks zu tätigen?


FIELD Categories:=@Replace (Categories; "";@Prompt([OkCancelEdit]; "Kategorie"; "Bitte Kategorie eintragen"; ""));
SELECT @All
!!HELP!! V1.6
Domino Server V6.5.6 FP1 (Windows 2003 Server)
Notes Client V6.5.5 (TS-Client / Win 2003 TS-Server)
Notes Client V6.5.5 (Win XP)

Glombi

  • Gast
Re: Feldänderung über Agent
« Antwort #1 am: 05.09.05 - 16:34:18 »
Du musst ein einmal ausführbaren Agenten schreiben, der den Promot anzeigt und dann die Eingabe in die notes.ini schreibt. Danach einen Agenten aufrufen, der über gewählte Dokumente läuft und den Wert aus der notes.ini liest und ins Dokument schreibt.

Andreas

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldänderung über Agent
« Antwort #2 am: 05.09.05 - 16:39:27 »
... oder gleich LotusScript nehmen - damit muss man nicht die NOTES.INI zumüllen.

Wenn Formelagent, dann auf jeden Fall nach dem Aufruf des zweiten Agents die Environment-Variable wieder löschen.

Bernhard

Offline regedit

  • Aktives Mitglied
  • ***
  • Beiträge: 118
  • Geschlecht: Männlich
Re: Feldänderung über Agent
« Antwort #3 am: 05.09.05 - 16:46:30 »
Es scheint wohl, Script wäre die "bessere" Lösung.
Leider kenne ich mich in Script noch garnicht aus :-:,
aber das wäre ja mal ein Anfang.
!!HELP!! V1.6
Domino Server V6.5.6 FP1 (Windows 2003 Server)
Notes Client V6.5.5 (TS-Client / Win 2003 TS-Server)
Notes Client V6.5.5 (Win XP)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldänderung über Agent
« Antwort #4 am: 05.09.05 - 16:52:26 »
Jo, das wäre ein guter Einstieg. Mach einer mutet sich da nämlich anfangs zu viel zu oder kopiert gar blind.

Ein paar Stichworte:
- Inputbox (als simpelste Eingabeform) -> Prüfen, ob Eingabe erfolgte !
- While - Wend-Schleife
- NotesView mit GetFirstDocument und GetNextDocument
- NotesDocument.ReplaceItemValue

Bernhard

Offline webchild

  • Junior Mitglied
  • **
  • Beiträge: 94
  • Geschlecht: Weiblich
  • Ich liebe dieses Forum!
Re: Feldänderung über Agent
« Antwort #5 am: 07.09.05 - 11:01:28 »
Beispiel -Code zum anpassen:
Sub Initialize
'Variablen definieren
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
Dim varkat As String
'Variablen festlegen
'die aktuelle Datenbank als Arbeitsdatenbank festlegen
   Set db = session.CurrentDatabase
'alle markierten Dokumente in einer Sammlung zusammenfassen
   Set collection = db.UnprocessedDocuments
'das erste Dokument auswählen
   Set doc = collection.GetFirstDocument()
'Wert für kategorie erfragen
varkat = InputBox("Bitte Kategorie eintragen")
'Mit einer Schleife in allen markierten Dokumenten das Feld Categories
'mit dem erfragten Wert füllen
   While Not(doc Is Nothing)
      doc.Categories=varkat
                                Call doc.Save( True, True )
                                Set doc = collection.GetNextDocument(doc)
   Wend
End Sub
« Letzte Änderung: 07.09.05 - 11:04:36 von webchild »
Grüße, Krista

Offline regedit

  • Aktives Mitglied
  • ***
  • Beiträge: 118
  • Geschlecht: Männlich
Re: Feldänderung über Agent
« Antwort #6 am: 16.09.05 - 16:41:56 »
Hallo,

danke, es hat so weit funktioniert, allerdings möchte ich jetzt noch einen kleinen Schritt weitergehen.
Das Feld Categories ist vom Typ Dialogfeld, Bearbeitbar und Mehrfachwerte zulassen. Die Auswahl der Kategorien bezieht es durch folgende Formel:

Liste := @DbColumn("":"NoCache"; ""; "(&Categories)"; 1);
@If(@IsError(Liste); ""; Liste)

Schön wäre es, wenn ich die betreffenden Dokumente markiere, diesen Agent starte und ich die momentan ausgewählten und nicht ausgewählten Kategorien in einer Liste angezeigt bekomme, diese durch z.B."anhaken" bearbeiten kann und gegebenenfalls durch Eingabe einer neuen Kategorie erweitern kann.
Ach ja, die Ansicht  (&Categories) hat nur eine Spalte, in der das Feld Categories mit SELECT Categories != "" angezeigt werden.

Hat jemand eine Idee?
!!HELP!! V1.6
Domino Server V6.5.6 FP1 (Windows 2003 Server)
Notes Client V6.5.5 (TS-Client / Win 2003 TS-Server)
Notes Client V6.5.5 (Win XP)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldänderung über Agent
« Antwort #7 am: 16.09.05 - 17:15:49 »
Deine Frage ist reichlich unspezifisch. Und wie die Listenwerte in das Feld "Categories" 'reingekommen sind, ist für die Fragestellung gänzlich unerheblich.

Eine Anmerkung: Da Du ja mehrere Dokumente markieren kannst - was machst Du, wenn da Dokumente gewählt werden, die unterschiedliche Werte in "Categories" haben ? Oder soll bei jedem Dokument einzeln nachgefragt werden ?

Versuche mal, Deine Fragen in dieser Sache so zu stellen, dass sie auch in Portionen beantwortet werden können.

Bernhard

Offline regedit

  • Aktives Mitglied
  • ***
  • Beiträge: 118
  • Geschlecht: Männlich
Re: Feldänderung über Agent
« Antwort #8 am: 16.09.05 - 17:35:50 »
Hm, wo Du recht hast, hast Du recht.

Ich möchte, dass das Script eine Auswahl aller Kategorien(Spalte1 der Ansicht (&Categories)) anzeigt, ich davon mehrerer auwählen kann und diese dann in das Feld Categories für alle vorher ausgewählten Dokumenten setzt.
!!HELP!! V1.6
Domino Server V6.5.6 FP1 (Windows 2003 Server)
Notes Client V6.5.5 (TS-Client / Win 2003 TS-Server)
Notes Client V6.5.5 (Win XP)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldänderung über Agent
« Antwort #9 am: 16.09.05 - 17:40:21 »
Das knackig-kürzeste dürfte folgendes Vorgehen sein (den Zugriff auf die gewählten Docs hast Du ja schon):

Mit Evaluate (auf Dein @dbColumn) füllst Du ein Variant mit allen gegebenen Categories-Werte.
Diese bietest Du mit NotesUIWorkspace.Prompt an und bekommst die Auswahl zurück.

Mit dem so erhaltenen Wert füllst Du nun die gewählten Dokumente.

HTH,
Bernhard

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz