Autor Thema: Feldwerte aller Dokumente per Eingabe setzen  (Gelesen 4349 mal)

Offline Catrex

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Geschlecht: Männlich
  • Noob@Work
Feldwerte aller Dokumente per Eingabe setzen
« am: 14.12.04 - 01:45:33 »
Hallo,

ich muss zunächst mal sagen, dass ich hier noch neu bin und bislang nur im R5 Forum mein "Unwesen" getrieben habe. Ich bin sicher nicht das was man einen "Profi" nennt. Aber ich habe mir das unter R5 bislang alles selber begebracht - im Rahmen eines Praxissemesters. Ich bin auch einer der keine perfekt Lösung braucht sonder es sollte nur seinen Zweck erfüllen. Nun Aber zu meiner Frage:

Ich würde gerne einen bestimmtes Feld in allen Dokumenten bzw. ausgewählten Dokumenten in einer Ansicht ändern. Ansich ja kein Problem, wenn der Feldwert bekannt ist kann ich es ja z.B. via Agent mit @setfield lösen. Nun ist es aber so, das der Feldwert zunächst von User eingegeben werden muss.

Wen ich da mit @prompt in der Agentenformel rangehe bringt mir das nichts weil ich die Eingabe bei jeden Dokument wiederholen muss. Dann dachte ich mir ich verknüpfe 2 Agenten. Der eine mach die Eingabeabfrage und der andere setzt dann die Werte um. Nur ist hier das Problem, das ich nicht weiss ob und wie ich Rückgabewerte bzw. die Eingabe des ersten Agenten an den anderen weitergebe.

Ich hoffe, dass ihr mir vieleicht einen Lösungsansatz geben könnt, auf dem ich dann weiterarbeiten kann.

Wäre euch wirklich sehr dankbar !

mfg

Sebastian

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Feldwerte aller Dokumente per Eingabe setzen
« Antwort #1 am: 14.12.04 - 06:57:08 »
Das http://www.eknori.de/tipps/detail.php?nr=90&kategorie=tipps sollte seinen Zweck erfüllen.

Du wählst die zu ändernden Dokumente aus und startest den Agenten. Der zeigt dir dann ein Dokument aus der Auswahl mit der zugrundeliegenden Maske. Jetzt kannst du ein oder mehrere felder Ändern; die Änderungen werden dann in allen markierten Dokumenten vorgenommen.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline animate

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.540
  • Uh, I'm just gonna go find a cash machine.
    • LA2
Re: Feldwerte aller Dokumente per Eingabe setzen
« Antwort #2 am: 14.12.04 - 08:12:35 »
dieses Problem habe ich meistens mit einem Eintrag in der Notes.ini gelöst.

Agent 1 schreibt den eingegebenen Wert in die Notes.ini (mit @Environment, glaube ich) und Agent 2 holt ihn wieder raus, werkelt rum und entfernt ihn danach.

natürlich ist der Tipp von eknori mehr 'sophisticated'.
« Letzte Änderung: 14.12.04 - 08:15:14 von Thomas Völk »
Thomas

Fortunately, I'm adhering to a pretty strict, uh, drug, uh, regimen to keep my mind, you know, uh, limber.

Offline Catrex

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Geschlecht: Männlich
  • Noob@Work
Re: Feldwerte aller Dokumente per Eingabe setzen
« Antwort #3 am: 16.12.04 - 18:05:26 »
Hallo,

zunächsteinmal möchte ich mich dafür entschuldigen, dass ich mich jetzt erst wieder melde.

Also, zu der ersten lösung kann ich sagen, dass die natürlich schonmal ihre Zweck erfüllt. Ob das nun wieder benutzerfreundlich ist sei dahingestellt. Aber sollte ich keine andere Lösung finden kann ich darauf, bzw. auf dem Skript schonmal aufbauen. Danke

Was die zweite Lösung angeht, habe ich mich damit noch nicht vertraut gemacht. Ich dachte mir aber schon das sowas gehen müsste. mmh, ich hoffe das ich dazu in der Hilfe noch was finde. also zu den entsprechenden @Befehlen. Bist du dir auch sicher das das der richtige ist ?

Also danke euch beiden für die schnellen Antworten...

mfg

Sebastian ! ! !

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldwerte aller Dokumente per Eingabe setzen
« Antwort #4 am: 16.12.04 - 20:48:07 »
Der Tip von Thomas funktioniert schon so, wie er es geschrieben hat. Das trifft vor allem Deine Anforderungen, da Du offensichtlich den Namen und den Typ des zu ändernden Feldes kennst. Genau das kannst Du dann mit einer Dialogbox in Agent 1 auslesen, auf Gültigkeit prüfen, in eine Environment-Varibale schreiben und dann Agent 2 aufrufen. Der setzt dann auch den erforderten Datentyp wieder um, wenn er dann alle in Frage kommenden Dokumente updated.
Danach nicht vergessen, die Environment-Variable wieder zu löschen - wir wollen ja keinen Müll in der Natur (=Environment).

Mit LS geht sowas natürlich eleganter. Der Code, den Ulrich gepostet hat, ist da schon sehr weitreichend und universell, berücksichtigt aber leider nur Textfelder, und dort auch nur skalare Werte. Als Beispiel ist das Teil aber bestens geeignet !

HTH,
Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Feldwerte aller Dokumente per Eingabe setzen
« Antwort #5 am: 16.12.04 - 21:01:55 »
@Catrex:
So wie ich das sehe, soll der Anwender nur 1 bestimmtes Feld über mehrere Doks ändern dürfen.
Nutz doch das gleich mal als Auslöser, dies in LotusScript umzusetzen.

Hier ein Gerüst, das so schon funktioniert:
Code
	On Error Goto ErrorHandler
	
	Const FIELDNAME_TOCHANGE$ = "Titel"
	
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim collection As NotesDocumentCollection
	Dim doc As NotesDocument
	Dim strNewValue As String
	Dim strMsg As String	
	Set db = session.CurrentDatabase
	Set collection = db.UnprocessedDocuments
	Set doc = collection.GetFirstDocument
	
	
	strMsg = "Sie haben " & collection.Count & " Dokumente ausgewählt. Bitte neuen Wert eingeben:" 
	strNewValue = Trim$(Inputbox$(strMsg , "Feldwert ändern..."))
	
	If strNewValue = "" Then
		Msgbox "Sie haben <Abbrechen> betätigt oder keinen neuen Feldwert eingegeben.", 64, "Aktion abgebrochen"
		Exit Sub
	End If
	
	While Not(doc Is Nothing)
		Call doc.ReplaceItemValue(FIELDNAME_TOCHANGE, strNewValue)
		Call doc.Save(False, False)
		Set doc = collection.GetNextDocument(doc)
	Wend
	
	Msgbox "Es wurden " & collection.Count & " Dokumente erfolgreich abgearbeitet.", 64, db.Title
	
goOut:
	Exit Sub
	
ErrorHandler:
	Msgbox "Fehler: " & Err & " - " & Error$ & Chr(10) _
	& "in Zeile: " & Erl, 48, "Es ist ein Fehler aufgetreten"
	Resume goOut

Ist allerdings noch nicht sauber !

Was Du z.B. noch alles einbauen könntest:
  • Fehler abfangen, wenn der Anwender keine Schreibrechte hat
  • Überprüfen des Feldes FIELDNAME_TOCHANGE (also z.B. den Typ des Items. Wenn kein Textfeld, dann brichst Du mit einer Fehlermeldung ab)
  • etc.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldwerte aller Dokumente per Eingabe setzen
« Antwort #6 am: 16.12.04 - 21:06:09 »
Hm, hier haben wir wieder das Problem, dass das nur mit Textfeldern funktioniert ... Tut das nooot ?

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Feldwerte aller Dokumente per Eingabe setzen
« Antwort #7 am: 16.12.04 - 21:08:48 »
Hm, hier haben wir wieder das Problem, dass das nur mit Textfeldern funktioniert ... Tut das nooot ?

Nein, aber ich bin ja auch nicht der Fragesteller  ;)

Wie oben schon erwähnt: Ein guter Anlass für eine saubere Scriptumsetzung, imho auch einsteigerfreundlich.
Catrex kann das schön erweitern und dabei lernen.
Daher von mir auch keine "Komplettlösung".
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldwerte aller Dokumente per Eingabe setzen
« Antwort #8 am: 16.12.04 - 21:18:16 »
Volle Zustimmung, Matthias. Das ganze ist auch eine schöne Aufgabe, bei der sich die Spreu vom Weizen trennt.
Wenn Sebastian allerdings nur einmalig (vielleicht ist er ja nur ein armer Aushilfsadmin) eine solche Lösung bieten muss und das nur für skalare Textfelder, dann reicht sicherlich die Lösung via zweier Formula-Agents (wie von Thomas schon beschrieben).

Bernhard

PS: Sebastian - was meinst Du ?

Offline Catrex

  • Junior Mitglied
  • **
  • Beiträge: 78
  • Geschlecht: Männlich
  • Noob@Work
Re: Feldwerte aller Dokumente per Eingabe setzen
« Antwort #9 am: 16.12.04 - 23:58:58 »
Da habe ich ja eine richtige Diskussion in gange gebracht, wie ? ;)

Also ich habe ja wie schon gesagt das Script von enori ausprobiert welches eigentlich schon ok gewesen wäre. Nun habe ich das noch mal mit den beiden Agenten ausprobiert die die Variable in die notes.ini schreiben und ich muss sagen das klappt auch wunderbar. Das Einzige was ich noch nicht hinbekommen habe ist. dass ich die Variable anschliessend wieder lösche. Welche Befehl nutze ich denn da, oder reicht es die dann wieder auf " " zu setzen ?

Das andere Skript mit der "Teillösung" habe ich mir erstmal in einer Textdatei abgespeichert. ;) Das muss ich mir nochmal in Ruhe anschauen. Das finde ich ja auch super das man hier keine fertigen Sachen bekommt, weil das bringt mich persönlich ja nicht weiter. Das kannte ich ja auch schon aus meiner Praxissemesterzeit in im vergangenen Sommer. Dort wurden mir in dem R5-Forum hier auch nur Lösungsansätze gegeben. Das hat dann meistens auch schon gereicht.

Naja ich denke schon das ich das hier an der ein oder anderen Stelle hoffentlich noch öfter gebrauchen kann weil mich das schon auch später beruflich interessieren würde. Von daher versuche ich, wenn die Zeit es hergibt, soviel wie möglich mitzunehmen.

mfg

Sebastian

P.S.: Ich habe dieses Forum auch lobend in meinem Praxissemesterbericht erwähnt ;)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Feldwerte aller Dokumente per Eingabe setzen
« Antwort #10 am: 17.12.04 - 00:25:41 »
Hallo, Sebastian,

herzlichen Dank für Dein Feedback. Wirklich erfreulich. Der perfekte Abschluss für meinen heutigen Tag !

Da habe ich ja eine richtige Diskussion in gange gebracht, wie ? ;)

Na, dat schad't doch nich', oder ? Wer aus diesen Diskussionen nix mitnehmen kann, wäre selber daran schuld - oder ein Ignorant. Schön, dass das aktiv "aufsaugst ;)

Also ich habe ja wie schon gesagt das Script von enori ausprobiert welches eigentlich schon ok gewesen wäre. Nun habe ich das noch mal mit den beiden Agenten ausprobiert die die Variable in die notes.ini schreiben und ich muss sagen das klappt auch wunderbar. Das Einzige was ich noch nicht hinbekommen habe ist. dass ich die Variable anschliessend wieder lösche. Welche Befehl nutze ich denn da, oder reicht es die dann wieder auf " " zu setzen ?

" " wäre falsch - das erzeugt ein Eintrag mit dem ASCII-Wert 32. Löschen kannst Du, wenn Du einen Leerstring angibst, also "" statt " ". In den Bits und Bytes liegt immer der kleine Unterschied  ;D

Das finde ich ja auch super das man hier keine fertigen Sachen bekommt, weil das bringt mich persönlich ja nicht weiter. ... Dort wurden mir in dem R5-Forum hier auch nur Lösungsansätze gegeben. Das hat dann meistens auch schon gereicht.

Genial. Du hast es wirklich verstanden. Irgendein Code, den man "findet" (wie auch immer), aber nicht verstanden hat, geht IMMER nach hinten los. Das bedeutet aber nicht, dass jeder das Rad immer wieder neu erfinden muss. Nur: Wie das Rad funktioniert, muss man dann immer wieder nachvollziehen.
Jeder von uns verwendet Algorithmen anderer schlauer Leute. Was dann die "Guten" von den "Schlechten" unterscheidet, ist der Fakt, ob man das gesehene selber umsetzen kann (was das Verstehen voraussetzt) oder ob man einfach übernimmt und bei Nichtfunktionieren (immer eigene Blödheit !!!) nach aussen kommuniziert: "Ich war das nicht - das kommt von XYZ !".

Sebastian: Mit Deiner Einstellung wirst Du es weiter bringen als 'ne Menge anderer Leute. Bleib' genau dabei. Und mit Notes / Domino bist Du sicher auch in den nächsten Jahren nicht schlecht bedient ;-)
Ich höre von immer mehr Firmen (nix Dot-Com-Blase, sondern die ernsthaften und erfolgreichen), dass sie ernorme Probleme haben, WIRKLICH GUTE Leute zu finden. Zu der gesuchten Klientel wirst Du nach Abschluss Deines Studiums garantiert noch nicht gehören, aber wenn Du so weitermachst (und vor allem -denkst), dann bist Du auf dem besten Weg.
Der "Markt" kriegt sich langsam wieder ein. Und Du hast die "Gnade der späten Geburt". Nutze das als Chance. Auch wenn es noch ein paar Jahre dauern wird bis in die "upper class". Und das ist ja auch gut so, oder ?

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz