Lotus Script flexibel

  • Hallo Ich hab nocheinmal eine Frage.


    Wenn ich eine Schleife programmiere und immer ein Feld einlese und dann definiere in welche ich das eingelesen Wieder ausgeben will kann ich ja unter Umstönden eine riesen Ansammlung von schleifen anhäufen. Wie mache ich mir das einfacher??? Ich lasse euch mal ein Beispiel da.



    Diese Schleife prüft die Datenbank ab und sucht nach allen DOkumenten. Diese werden dann nach Datum und nach ihrem Inhalt gezählt und der Zähler wird an das Profildokument übergeben. Nun wenn ichd en weg weiterverfolge kommt da einiges zusammen. aber ich würd das lieber flexibler und näher am Objekt haben. Sprich KÜRZER!.
    ich weiß nur nicht wie ichd a am besten vorgehe.


    Danke

  • Ich an deiner Stelle würde ja eher eine geeignete View basteln und den Agenten gegen eben diese laufen lassen...

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • eine view ist mit sicherheit schneller.


    spalte 1: jahr
    spalte 2: monat
    spalte 3: abteilung
    (alle sortiert als text)


    dim key(2) as string


    key(0) = jahr
    key(1) = monat
    key(2) = abteilung


    set documentcollection = view.getalldocumentsbykey(key, true)


    anzahl = documentcollection.count


    so oder so ähnlich könntest du ansetzen ... 8-)

    bunt ist das dasein und granatenstark. volle kanne hoshi's!


    IBM Certified Advanced System Administrator (R5, D6, D7)
    IBM Certified Advanced Application Developer (R5, D6, D7, D8)

  • wenn ich das jetzt richtig deute lese ich dann nur noch den deklarierten key aus und bau eine schleife mit allen ABteilungen, Monaten und Usern ( die auswerungskriterien) und setzt das feld im profildokument wenn die bedingung zutrifft.


    If monat = Januar und Abteilung = EDV dann Counter +1
    Feld Januar_EDV= Counter.
    If Monat = Februar und Abteilung = EDV dann Counter +1
    feld Februar_EDV = counter.


    bei usern:


    If User = Testuser und Monat = Januar dann Counter + 1
    Feld Testuser_Januar = Counter
    If User = Testuser und Monat = Februar dann Counter + 1
    feld Testuser_Januar = Counter
    (vereinfacht dargestellt)


    Vielleicht denk ich auch noch zu kompliziert. (das ist bei mir meist so)


    aber dann müsste ich ja auch jeden Case abfangen ?
    denn das ist es ja was iich umgehen möchte.


    Aber ich stimme zu das mit der view ist schon mal besser

  • Wenn ich das richtig verstehe, willst du nur einen Counter für den aktuellen Monat? In dem Falle bei dir eine View, die auf @Month("Heute") (oder "Today" bei englischen Clients) selektiert.
    Wenn es allerdings eine Unmasse an Dokumenten ist (aber ich hoffe doch, eure EDV-Abteilung macht nicht so viele Fehler :D ), dann wird das schnarchlangsam. Bei einigen Dutzend hingegen passt das noch...

    Life is not a journey to the grave with the intention of arriving safely in a pretty and well-preserved body, but rather to skid in broadside, thoroughly used up, totally worn out, and loudly proclaiming "Wow, what a ride!!! :evil:
    Beschleunigung ist, wenn die Tränen der Ergriffenheit waagrecht zum Ohr hin abfliessen - Walter Röhrl

  • vorweg EDV ist nur ein beispiel ;P


    nun ja ziel ist es aus allen dokumenten in eben dieser view ein Profildokument zu füllen.
    im monat Januar gabs 5 neue Dokumente in der EDV Abteilung
    und im januaer gabs 3 neue aus der buchhaltung.
    Dazu hab ich den counter gebastelt. Der counter ist quasi die ausgabe an das Profildokument.
    Meine laaange Schleife tut das ja aber der queltext ist mir zu lang und gefällt mir auch nicht =)
    Da ich ja nicht wirklich jeden Fall abfangen kann(will) müsste ich da variablen haben oder so etwas die das ganze verkürzen. Beispiel :
    Fall 1: EDV im Januar
    Fall 2: EDV im Februar
    .
    .
    .
    Fall 12: EDV im Dezember
    ------------------------------------
    Fall 13 Buchhaltung Januar
    Fall 14: Buchhaltung Februar
    .
    .
    Fall 24 Buchhaltung im dezember.
    --------------------


    Das dann für jede Abteilung oder Nutzer ? das wäre echt unschick.
    Verstehste was ich mein ?
    Ich kann mir nicht helfen es macht nich klick nd die richtige Idee kommt einfach nicht =)

  • das ganze kannst du aber doch locker über ne ansicht mit ein paar summierungen abfangen.


    die view dann durchlesen und die viewentries auswerten (um es mal einfach auszudrücken ...)


    hier ein fertiges script zu präsentieren is natürlich recht schwierig wenn man nicht alle details hat.


    du wärst im übrigen das ideale 'opfer' für die letzte hands-on session beim entwicklercamp gewesen. schade das du nicht da warst ...

    bunt ist das dasein und granatenstark. volle kanne hoshi's!


    IBM Certified Advanced System Administrator (R5, D6, D7)
    IBM Certified Advanced Application Developer (R5, D6, D7, D8)

  • jaja da hättet ihr schön was zu lachen gehabt was ? ;P
    ja ich weiß ich bin ein ideales opfer für alles =)
    bin ja noch nicht solang an Notes dran. und ich probiere mehr als das ichs wirklich schon kann =)


    noch kurz was zu den keys im view.getalldocumentsbykey (key,true)


    muss ich da was besonderes beachten ? denn im debugger liest er mir die keys nicht aus die stehten also auf "". er liest sie also nicht ein.


    ( und ich möchte von euch keinen kompletten Quellcode haben. ich möcht viel eher alle möglichkeiten von notes kennenlernen =)

  • also die ist augebaut
    jahr, monat, abteilung jeweils als einzelne spalte + alles als text(!!) und sortiert


    dim key(2) as string
    dim abteilungen(3) As String


    '//init


    'das abteilungsarray könnte natürlich auch eine liste sein die du aus einem konfig dokument liest oder ähnliches
    abteilung(0) = "Abteilung 1"
    abteilung(1) = "Abteilung 2"
    abteilung(2) = "Abteilung 3"
    abteilung(3) = "Abteilung 4"


    'key(0) = "2008"
    key(0) = Cstr(Year(Today())) 'aktuelles jahr


    '//loop
    for i = 1 to 12 'januar bis dezember > wer hätte das gedacht!
    key(1) = Cstr(i)
    for j = lbound(abteilung) to ubound(abteilung) 'loop durch die abteilungen
    key(2) = abteilung(j)


    set documentcollection = view.getalldocumentsbykey(key, true)


    anzahl = documentcollection.count


    Set item = profile.ReplaceItemValue( key(2) & "_" & key(1) & "_" & key(0), anzahl ) 'legt automatisch felder an im format abteilung_jahr_monat


    next j
    next i


    hoffe mal du kannst so ein bischen rumprobieren ...

    bunt ist das dasein und granatenstark. volle kanne hoshi's!


    IBM Certified Advanced System Administrator (R5, D6, D7)
    IBM Certified Advanced Application Developer (R5, D6, D7, D8)

  • Genial =)


    das mit den keys funktioniert einwandfrei.
    ich muss nur noch der view das erstelungsdatum mitgeben, aber das sollte ja kein prob sein, ich hatte da vorher einfach nur @month ohne @created mitgegeben, aber dabei nicht bedacht da da ja das aktuelle datum mitgegeben wird anstatt dem erstellungsdatum =)
    ist die formatierung nciht standardmäßig auf string bei soner spalte ?


    und dann kann ich das set item auch gut anwenden.
    ist das setitem von der anzahl abhängig ? oder würde das auch felder anlegen wenn azahl = 0 ist ? denn der agent läuft fehlerfrei ab, erstellt aber keine felder ?


    P.S. : Sorry für die doofen fragen :P

  • Ich wollte nochmal explizit Danke sagen =)


    so eine Auswertung wünscht sich doch jeder oder nicht ?


    mit ein paar anpassungen und das ganze schön im tabellenformat kam das was wirklich brauchbares bei rum. Notes gefällt mir immer mehr muss ich ja zugeben!