Beiträge von Grizzly

    Zitat


    taurec schrieb:
    Dass dein Agent auf einen Trigger reagieren soll der nicht möglich ist, z.b. dass du einen RunOnServer Agenten mit dem Trigger Selected Documents aufrufst


    Ah, jetzt, ja, eine Insel. :)


    Habe aus "RunOnServer" "Run" gemacht. Das hat aber nichts gebracht. Habe dann in den Einstellungen des Agenten aus "Selected Documents" "None" gemacht.
    Und siehe da: Es funktioniert.

    Sodele, habe das ganze mal so probiert:


    Allerdings kommt beim Aufruf des Agenten folgende Meldung:

    Zitat

    Notes error: Unsupported trigger and search in the background or embedded agent


    Was will mir das sagen? :-?

    Zitat


    taurec schrieb:
    Wie schon gesagt: Frontend lässt sich nur mit Formelsprache oder Script ansprechen.


    Was du machen könntest wäre nach Abschluss des Java Agenten einen Formel/Script Agenten aufrufen der diese Arbeit übernimmt


    Ich habe es mal mit

    Code
    @Command([ToolsRunMacro]; "Test");
    @Command([ViewRefreshFields]);


    probiert. Hat aber leider irgendwie nicht funktioniert. :-?

    Zitat

    taurec schrieb:
    Nein, das Problem ist dass dein Agent das Backend Dokument verändert, im Client aber das Frontend Dokument anzeigt.


    Das ist mir klar. Ich müsste dann irgendwie das Frontend ansprechen und zum Nachladen der Werte überreden. Geht aber anscheinend nicht.


    Zitat

    Entweder du steigst bei deinem Agenten auf Script und Formelsprache um oder du musst das Dokument schliessen und neu öffnen


    Auf Script / Formelsprache umsteigen geht leider nicht, da ich später auch noch per JDBC eine andere Datenbank ansprechen muss. Die Richtung ist momentan eher Lotus Script & Formelsprache -> Java.


    Außerdem bin ich kein Freund von Basic (im Allgemeinen, nicht speziell auf Lotus Script bezogen) und der Formelsprache. ;)




    Das mit dem Applet scheint zu funktionieren. Auch wenn bei jeder Aktualisierung das Teil komplett neu gestartet wird, was nicht so toll ist. :(

    Zitat


    taurec schrieb:
    Du musst das Dokument schliessen und wieder neu öffnen, allerdings geht das meines Wissens nach nur über Script oder Formelsprache


    Geht das auch ohne öffnen und schliessen? Der Benutzer sollte einfach an der entsprechenden Stelle weiterarbeiten können.


    Eine andere Möglichkeit wäre, das ganze in ein Applet zu verpacken. Damit müsste es ja eigentlich gehen, oder?
    Wobei ich dann natürlich Notes zu einer billigen Datenbank degradiere. ;)

    Ich lasse über das aktuell angezeigte Formular einen Java Agenten laufen. Der führt anhand der Daten einige Sachen aus und berechnet nebenher auch noch ein paar Werte. Diese werden zurück in das Dokument geschrieben.


    Nun habe ich das Problem, dass die Änderungen zwar prinizipiell in die Notes Datenbank geschrieben werden, aber das aktuelle Dokument weiterhin die alten Daten anzeigt.


    Meine Frage: Kann ich es irgendwie schaffen, dass sich das Formular aktualisiert sprich die neuesten Daten aus dem Dokument holt? :-?

    So, habe das Problem gelöst.


    Die alte Variante mit der Formelsprache:

    Code
    REM {Kuerzel bestimmen};_Name := ADM;_List := @Explode(_Name; " ");_Kuerzel := @If(@Count(_List) = 1; @UpperCase(_Name);@UpperCase(@Left(_List[1]; 1)) + @UpperCase(@Left(_List[@Count(_List)]; 1)));REM {Jahr bestimmen};_Jahr := @Right(@Text(@Year(@Today)); 2);REM {Naechste Nummer bestimmen};_Nummern := @DbLookup("": "NoCache"; ""; "AngebotsnummerView"; _Kuerzel; 2);_Nummer := @If(@Elements(_Nummern) > 0; _Nummern[1]; @IsNull(_Nummern); "1"; _Nummern);_Neue_Nummer := @If(@IsNumber(@TextToNumber(_Nummer)); @TextToNumber(_Nummer) + 1; 1);_Volle_Nummer := @If(@Length(@Text(_Neue_Nummer)) = 1; "000" + @Text(_Neue_Nummer);@Length(@Text(_Neue_Nummer)) = 2; "00" + @Text(_Neue_Nummer);@Length(@Text(_Neue_Nummer)) = 3; "0" + @Text(_Neue_Nummer);@Text(_Neue_Nummer));FIELD Angebotsnummer :=@If(@IsNull(Angebotsnummer) | Angebotsnummer = ""; _Jahr + "/" + _Kuerzel + "/" + _Volle_Nummer; Angebotsnummer);@Success



    Die neue und funktionierende Variante mit Lotus Script.



    Wobei Source.EditMode And Source.IsNewDoc wahrscheinlich doppelt gemobbelt ist.

    Zitat


    taurec schrieb:
    Dann sagst du @Trim(@Right(Werte aus dem DBColumn;"05/GH/")) und nimmst davon dann das erste Element.


    Die Formel macht eigentlich nichts anderes als aus deiner kompletten Liste, nur noch das rechts von dem angegebenen Wert zu extrahieren.
    Ist der in einer Zeile nicht drin kommt ein Leertext zurück.
    Die Leertexte entfernt man mit @trim und somit bleiben dann nur noch die Zahlen in den zeilen übrig, in denen am Beginn "05/GH/" steht


    Okay, werde ich mal ausprobieren. In der Hoffnung, dass ich dann die aktuellen Werte aus der Ansicht bekomme. Aber soweit mal: Schankedön. :)

    Zitat


    taurec schrieb:
    Sorry, mein Fehler


    Aber du kannst ja noch ein @trim(@Right(Values;"Wert")) machen, dann hättest du auch nur die die mit einem bestimmten Wert anfangen


    Verstehe ich jetzt nicht. Ich hab in der Ansicht nachher bspw. folgende Werte:


    05/ZX/0001
    05/GH/1236
    05/GH/1235
    05/GH/1234
    04/GH/1235
    05/AB/1024
    05/AB/1023
    05/AB/1022


    Aufbau JJ/MM/ZZZZ (J=Jahr, M=Kürzel Mitarbeiter, ZZZZ=Zähler für das Jahr und den Mitarbeiter)


    Wenn ich nun das aktuelle Maximum für das Jahr 2005 und Mitarbeiter GH haben will, müsste 1236 rauskommen. Ich hab das dann einfach mit mehreren Spalten in der Tabelle gelöst. Angezeigt werden momentan nur Dokument mit Zahl aktuellen Jahr. In der ersten Spalte habe ich das Kürzel sortiert. Dann kann ich mir mit @DbLookup einfach die Werte für einen Mitarbeiter holen, bspw. GH. Das Ergebnis wäre dann eine Liste:


    1236:1235:1234


    Dann nehme ich mir das erste Element, zähle es um eines hoch und baue meinen neuen Zähler:


    05/GH/1237


    Die Frage bei NotesView.GetLastDocument ist, ob das wegen der Verwendung einer Ansicht genau so gut funktioniert, wie momentan mein @DbLookup.
    Probieren könnte ich es ja trotzdem mal. Allerdings wäre es schon merkwürdig, wenn Lotus Script andere Werte liefern würde als die Formelsprache.


    @DbColumn geht nicht, da ich dann alle Dokumente habe. Es soll aber für jeden Außendienstmitarbeiter einzeln hochgezählt werden. Also brauch in einen Schlüssel, der den Mitarbeiter enthält.

    Hab' gestern noch rumprobiert, aber keine Lösung gefunden. Werde jetzt zur Holzhammer Methode ohne Formelsprache und ohne eine Ansicht übergehen: Per Lotus Script alle Dokumente in der Datenbank durcharbeiten, die größte Zahl ermitteln und um 1 inkrementieren. Ist sicher nicht die performanteste Methode, aber etwas anderes fällt mir nicht ein.

    Zitat


    Diali schrieb:
    der Name "Angebotsnummer" kommt aber auch in keinem Namen oder Alias einer Ansicht / Ordner vor?


    Gruß
    Dirk


    Hab' den Namen der Ansicht in [i]AngebotsnummerView[i] umgeändert. Nun heisst nur noch das Feld so, in das später das Ergebnis der ganzen Geschichte eingetragen wird.


    Code
    _Nummern := @DbLookup("": "NoCache"; ""; "AngebotsnummerView"; _Kuerzel; 2);


    Hat aber auch nichts gebracht. :cry:


    Sieht momentan so aus:

    Code
    _Nummern := @DbLookup("": "NoCache"; ""; "Angebotsnummer"; _Kuerzel; 2);


    ReCache habe ich auch schon probiert. Kam aber auch nix brauchbares dabei raus.

    Ich glaube, ich geb' das demnächst auf. Irgendwie aktualisiert der die Ansicht nur, wenn ich sie mir anzeigen lassen. Greife ich jedoch mit @DbLookup darauf zu, kann ich machen, was ich will. Ich bekomme nur die Werte, die in der Ansicht in der Oberfläche zuletzt angezeigt wurden. Sämtliche neuen Dokumente fehlen. :cry:

    Zitat


    dnotes schrieb:
    Wenn die ansicht solche Probleme macht...waere es Dir nicht moeglich, den Wert nicht aus der spalte sondern aus dem Dokument zu holen..also aus dem Feld? Oder klappt das auch nicht??


    Wie meinst Du das? Aus dem Dokument?


    Das Problem ist ja, dass er nur bspw. 2 Dokumente aus der Ansicht zurückmeldet, obwohl bspw. 4 schon drin sind.

    Zitat


    taurec schrieb:
    Ja das meinte ich, ich hatte öfters mal das Problem das wenn das falsche eingestellt war alte Werte bei Lookups zustande kamen


    Hm, aber mein Problem bleinbt. Ich hab' mal vor Jahren genau das gleiche in R5 gemacht - und da hat das einweindfrei funktioniert. Leider komm' ich nicht mehr an meine alten Datenbank ran...


    Sonst noch irgendwelche Ansätze?