Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Notes-Domino am 14.07.05 - 18:44:13
-
Hallo!
Hab eine Frage...
wie kann ich ein Agent aus einem Querysave oder Button starten?
@Function?
Vielen Dank vorab für die Hilfe!
MFG
-
@Command ([ToolsRunMacro]; "agentname")
LS: Siehe entsprechende und nicht zu übersehende Klasse (beim @Command sucht man ja auch nicht "Macro", da dies ein R3-Relikt ist ;))
Bernhard
-
hab noch eine frage...
wenn ich eine Form hab wo man einen Produktnamen eingeben kann und einen Button...
Der Button soll nach Eingabe des Produktnamens ein Agent auslösen der alle Dokumente mit diesem Produktnamen so abändert das beispielsweise das Feld Angebot von nein auf ja gewechselt wird...
Agent:
If(Produktname=eingabename;Field Angebot:="Ja";@Nothing)
aber wie geb ich den eingabenamen an die Agent?
-
Vor dem Stellen der nächsten Frage bedankt man sich erstmal für die Beantwortung der letzten Frage - oder bemängelt die Lösung.
Vor solchen Phänomenen stehe ich nicht nur hier im Forum immer nur kopfschüttelnd >:(
Bernhard
-
Hallo Bernhard!
Vielen Dank für deine erste Antwort!
hatte es vergessen und das war selbstverständlich sehr unhöflich von mir!
Ich hoffe du bist nicht nachtragend :'(
Würde mich aber sehr freuen wenn du mir nocheinmal helfen würdest!
:)
mein ziel ist es in einer Form die Produktgruppe einzugeben und alle Produkte dieser Produktgruppe sollen geändert werden.
In der Form Produkt ist ein Field "Rabatt" und "Produktgruppe"
Ich wollte den Agent wie folgt gestalten:
@If(Field produktgruppe=wert;Field Rabatt="ja";@Nothing);
das problem ist das wenn das Feld Rabatt mit ja markiert ist das sich dann automatisch das Feld Preis um 10% verringern soll.
Preis:
@If(Rabatt="ja";Preis-10%;@Nothing);
-> Preis-10% nur zur verdeutlichung!
Wie erreiche ich es das sich das feld nach ändern aktualisiert?
computed for display würde sich doch erst nach F9 ändern oder??
Hilft es wenn ich in den Agent ein @command([ViewRefreshFields]) baue?
Vielen Dank vorab
-
Nein, ich bin wirklich nicht nachtragend :)
Dein Problem würde ich aber never ever mit @functions lösen - dies ist eindeutig ein Fall, den man mit LS lösen sollte. Ehrlich gesagt, fällt mir hierzu auch keine Lösung mit @functions ein ...
Bernhard
-
hmm...
ist es denn möglich wenn ich mit @SetEnvironment( variableName ; value ) den wert in eine variable schreibe und im agent diesen wert dann auslese mit $variableName.
dann könnte ich ja zumindest das Feld "Rabatt" ändern oder?
-
Ich würde mal sagen: Die notes.ini müllt man nicht grundlos zu.
Wie willst Du dann die betroffenenen Dokumente selektieren (okay, geht sich, aber ...).
Warum nicht gleicht sauber lösen mit LS ?
-
hmm.. hab von LS leider keine Ahnung und hab damit auch noch nie gearbeitet....
Würde es aus diesem Grunde gerne mit @Functions lösen.
Wäre sehr erfreut wenn du mir dabei helfen würdest! :D
Wenn ich in den Agent die Anweisung zum ändern des Feldes Rabatt schreibe
(Field xxx:="Ja")... kann ich dann nicht mit @command([ViewRefreshFields]) die form refreshen so dass sie dann die computed- Fields neu berechnen???
-
Nochmal meine Frage: Wie selektierst Du die zu ändernden Dokumente ?
@Command ([ViewRefreshFields]) ginge natürlich, aber Du musst ja auch noch verhindern, dass diese Änderung nicht bei jeder Änderung (des übergeordneten Dokuments) passiert - sonst ist der Preis fix bei wenigen Cent ;D
Weitere Frage: Da man mit @functions sehr viel sehr elegant machen kann, bei anderen (extrem wichtigen) Dingen aber damit schlicht scheitert - warum lernst Du kein LS, wenn Du Notes programmieren willst ? Ohne LS kommst Du nicht sehr weit ...
Bernhard
-
Hab ein Feld "Preis" das den normalen Preis beinhaltet und ein Feld "Aktueller_Preis". Wenn nun das Feld "Rabatt"="Ja" ist, dann soll das Feld "Aktueller_Preis" von dem ursprünglichen Preis 10% abziehen, andernfalls den Wert ohne weitere mathematische Operationen übernehmen.
Wenn ich dieses Realisieren möchte muss ich doch lediglich ein @SetEnvironment( variableName ; value ) in der Form erstellen in der ich die Produktgruppe angebe, dann den Agent starten worin ich den Produktgruppennamen mithilfe von $variableName lokalisieren kann und dann die gegebenen Felder "Rabatt" ändern...
wenn ich darauffolgend den @command([ViewRefreshFields]) schreibe, dann müsste das Dokument doch problemlos aktualisiert werden und die Änderung direkt in einer View erkennbar sein oder?
Vielen Vielen Dank für deine Hilfe!
Freu mich schon auf deine Antwort!!
-
Weitere Frage: Da man mit @functions sehr viel sehr elegant machen kann, bei anderen (extrem wichtigen) Dingen aber damit schlicht scheitert - warum lernst Du kein LS, wenn Du Notes programmieren willst ? Ohne LS kommst Du nicht sehr weit ...
Dem kann ich nur zustimmen.
Gerade wenn es darum geht, schnell mal andere Dokumente anhand eines Schlüssels entsprechend zu ändern und dabei noch Werte vom aktuellen Dokument übertragen, sollte man m.E. unbedingt auf LotusScript zurückgreifen.
-
Ja ich möchte auch LS sehr gern lernen und werde mich in naher Zukunft darum bemühen!
Möchte das Problem jedoch trotzdem lösen.
Ich habe noch folgendes Problem:
wenn ich die Werte ändere werden diese Änderungen in den übrigen Forms die die werte vverarbeiten und ggf. über @Dblookup beziehen erst nach einem einmaligen öffnen sichtbar?
wie kann man das umgehen?
freu mich über Hilfe!!!
-
Ich frage nochmals: Wie selektierst Du die zu ändernden Dokumente ?
Wenn Du die zu ändernden Dokumente im Zugriff hast (hättest), kannst Du die zu ändernden Werte (auch ohne @Command ([ViewRefreshFields]) im Backend ändern. Jedes erneute öffnen ist dann nicht erforderlich. Insofern verstehe ich Deine Frage nicht.
Ja ich möchte auch LS sehr gern lernen und werde mich in naher Zukunft darum bemühen!
Möchte das Problem jedoch trotzdem lösen.
Dann mach es, und probiere nicht, mit einem unfrisierten Golf II auf der Nordschleife Eindruck zu schinden ;D Ohne @function geht in Notes gar nix, mit @functions alleine geht nur ein Bruchteil.
Bernhard
-
Hallo zusammen!
:D
Vielen Dank an alle die mir Tipps gegeben haben...
Hab es geschafft ;D
Hab noch eine Verständnisfrage:
Wenn ich jetzt einen Agent programmiert hab und den auch erfolgreich getestet hab und alles funktioniert und ich ihn nun in den Properties auf "Schedule" und dann auf mehrmals am Tag -> 5 Minuten stelle...
Wenn ich nun aus einer Form heraus den Agent manuell starte... klappt das und wie ist das dann mit den 5 Minuten?
Startet er dann immernoch immer nach 5 Minuten oder verstellen sie die Properties???
Meine zweite frage ist: Wie kann ich es erreichen das er jede minute läuft??
vielen Dank im voraus!
Lieben Gruß
-
Fragen:
Wie hast Du es jetzt gelöst ?
Warum läuft der Agent auch scheduled ? Mir fehlt jetzt vielleicht das Verständnis, aber das beisst sich irgendwie.
Warum läuft der Agent alle 5 Minuten ? Was sagen Deine Admins dazu ? Die werden begeistert sein ...
Den Agent jede Minute laufen zu lassen, ist schlicht unmöglich (selbst, wenn man es einstellen könnte): Der AgentManager sucht sich sowieso einen Zeitpunkt zum Agentstart aus, zu dem der Server gerade genug Luft für so eine Aktion hat.
Bernhard
-
hmm..
ist vielleicht jetzt ein bisschen unpassend aber das hat jetzt mit meinem letzten Problem nichts zu tun.
Hab mir eine kleine Datenbank (Test) zusammengestellt.
Wenn man jetzt zum beispiel ein Busunternehmen hat (kleine Datenbank) mit Busabfahrtdokumenten.
wie setzt man es denn beispielsweise um das wenn man beispielsweise Abfahrtsdokumente hat (Abfahrtszeit (datum , uhrzeit))
...
sobald das Datum und die Uhrzeit erreicht sind soll der Status von "Noch nicht abgefahren" auf "Abgefahren wechseln"
hatte mir das mit einem Agent programmiert...
nun wollte ich es bestmöglich erreichen das der Zustand so genau wie möglich zu jedem Zeitpunkt ist...
.. deshalb Agent -> "scheduled" > 5 Min.
wenn ich jetzt aber innerhalb einer 5 minutenphase den aktuellsten Zustand ermitteln möchte wollte ich es ermöglichen den Agent manuell ausführen zu lassen.
Ist das möglich?
Wenn ja - aber wenn ich ihn jetzt manuell auslöse.. zählt der ab dem zeitpunkt dann wieder neu 5 minuten ab oder wie?
Ganz liebe Grüße
-
Punkt 1: Notes ist KEIN RealTime Werkzeug, also echte Aktualität ist nicht erreichbar.
Punkt 2: wenn Du den Agenten von Hand startest, kommt es darauf an, wie Du ihn auslösest, ob die 5Min Sequenz neu angestossen wird oder nicht.
-
hallo!
vielen Dank für die Antwort!
wollte ihn aus einer Form mithilfe eines buttons und dem Befehl:
@Command ([ToolsRunMacro]; "agentname")
starten?
würd das klappen und wie verhält er sich dann?
Die Properties bleiben doch unverändert und er läuft auch trotz manueller aufrufe immer automatisch weiter oder?
Liebe Grüße
-
Das ganze ist gar keine gute Idee. Vor allem: Warum soll "noch nicht abgefahren" oder "bereits abgefahren" denn hart im Dokument gespeichert werden ?? Das hat doch dort überhaupt nix zu suchen und kann jederzeit on-the-fly berechnet werden.
Die eigentliche Frage mag ich aus diesem Grunde gar nicht beantworten, weil sie das eigentliche Problem nicht lösen würde.
Bernhard
-
.. die datenbank wurde mir so übergeben und ich sollte die funktion einbauen...
hab keine Befugnis den aufbau der forms zu ändern
leider :-\
-
Noch etwas .... Bernhard hatte danach gefragt, wie Du das vorhergehende Problem gelöst hast, nachdem Du vermeldet hast, es sei gelöst. Es gehört zum guten Ton hier, dass man denen, die geholfen haben, auch mitteilt, wie man es gelöst hat, dies insbesondere auch deshalb, dass andere mit ähnlichen Problemen nicht noch einmal fragen müssen.
-
.. die datenbank wurde mir so übergeben und ich sollte die funktion einbauen...
hab keine Befugnis den aufbau der forms zu ändern
leider :-\
LoL ;D
Das ist totaler Unsinn.
Du kannst die einfache Lösung nicht nehmen, weil irgendein Heinz Herbert, der sowieso keine Ahnung hat, entscheidet, dass in der Maske nicht minimale Änderungen durchgeführt werden können. ;D
Das ist von einem rationalistischen Standpunkt aus schlichtweg Unfug.
Wenn ich auf so etwas stosse, fange ich an mit den Verantwortlichen zu diskutieren.
Es tut nur beim ersten mal weh. Nach einer gewissen Zeit bekommt man darin Routine und die Projektverantwortlichen schätzen das. Mit den 10% der Kundenprojektleiter, die sowas nicht einsehen, möchte ich sowieso nicht zusammenarbeiten. Und die ganz sicher auch nicht mit mir.
Versuchs einfach. Die meisten Menschen sind eigentlich ganz einsichtig, sobald man anfängt mit ihnen vernünftig zu reden.
Aber vielleicht will der self-respecting geek *überhaupt keine* Konfrontation und schimpft dann hinter dem Rücken lieber über die dooven Schlippsträger :-[
Hell NO.
Der Seemann rät: Immer auf die 12 und versuche es zumindest. Vielleicht findest du auf Anhieb keine erfolgreiche argumentative Herangehensweise, aber auch darin bekommt Mann Übung.
-
.... und vor allem, wenn man gute Gründe anführt. Aber als verantwortungsbewusster Entwickler sollten einem die Begründungen in solchen Fällen wirklich nicht schwer fallen.
-
Ich verstehe es auch nicht mehr ... Ich habe dreimal die gleiche Frage gestellt - und keinerlei Antwort bekommen. Ausserdem stört mich mittlerweile, dass es erst um Flugzeuge geht, dann um Preise und Rabette, nun um Busse. Kann man nicht mal eine klare Ansage treffen?
Die Forderung, die hier gestellt wurde, ist wirklich schlichter Blödsinn. Das wäre in etwa so, als wenn man mir den Auftrag gäbe, einen 1963er VW Käfer für die Saison 2006 Formel-1-tauglich zu machen - aber ja nix an der Karosserie und am Chassis zu ändern (die alleine schon die Gewichtsgrenzen sprengen). Und von derartigem Tuning habe ich auch keine Ahnung.
Bernhard
PS: Jens und Axel - danke für Eure Unterstützung.
-
Moin!
Eine Frage so am Rande: :)
Wenn das Feld _Status als Computed for Display- Field deklariert würde und eine @If Anweisung den aktuellen Zustand entscheiden würde, so würde der aktuelle Status aber trotzdem nicht sofort in einer View sichtbar werden sondern es müsste erst das dokument geöffnet werden um so das aktualisieren des Feldes zu bewirken oder vertue ich mich da?
Das würd mich mal interessieren ;D
Mfg
Carsten
-
Schlimmer, ein CfD Feld wird nicht abgespeichert und kann daher in einer View gar nicht erst angezeigt werden.
Für ein "Computed" Feld hast Du fast Recht, man kann das allerdings über
@Command( [ToolsRefreshSelectedDocs] )
in einer View auch auslösen.
-
Moin Moin!
Vielen Dank für den Hinweis Jens! :)
hab mal Spaßeshalber in den Properties des Agenten gespielt...
Dort ist mir folgendes noch ein Rätsel (Bild siehe Anhang).
Wenn man unter *runtime* **target** ***all new and modified documents*** verwendet, dann werden doch beim durchsuchen der dokumente nicht alle berücksichtigt wenn man unter Document Selection z.b. die form "Form1" angibt oder?
Muss man (wenn man alle dokumente auf den status beispielsweise wie es in diesem Thread das thema ist), dort ***All documents in Database*** verwenden?
Mfg
Carsten