Liste auslesen und mit ausgelesenen Werten in einer Datenbank suchen

  • Hallo,


    ich habe folgendes Problem. Ich biete einem Anwender zum auswählen seiner Daten eine picklist an. Der anwender kann mehrere Werte auswählen. Diese werte werden in ein Textfeld geschrieben.


    Jetzt soll für jeden dieser Werte duch eine Suche in einer anderen Datenbank ein weiterer Wert ausgelesen werden. Ich habe momentan folgende Formel:


    FIELD hardw:= @PickList( [Custom]; "<Server>": "<Datenbank>" ; "Hardware"; "Bitte wählen Sie die entsprechenden Hardware!"; "Bitte wählen Sie hier die Hardwarekomponenten aus:" ; 1 );
    @True;
    @SetField("hardware";hardw);



    @If(@Elements(hardware) = 0; @Return(0); "");
    n := 1;
    @DoWhile(invest:=@DbLookup("":"NoCache";"<Server>":""<Datenbank>"; "Hardware"; hardware[n];"Investitionskosten");
    @Prompt([Ok]; "test"; invest): n := n + 1;
    n <= @Elements(hardware)
    )


    Problem: Bis zum auslesen der Liste funktioniert alles ganz gut. Für den ersten Durchlauf der Schleife geht auch noch alles, d. h. ich bekomme den richtigen Wert ausgegeben. Sobald aber zum 2. mal die Schleife durchlaufen wird, bekomme ich eine leere Messagebox angezeigt. Das heißt der Wert wird nicht ausgegeben oder aber gar nicht erst gesucht?!


    Freue mich über jeden Lösungsvorschlag.


    Freundliche Grüße


    Deluxer

  • So laeuft´s bei mir:

    Code
    @DoWhile(n <= @Elements(hardw);
    invest:=@DbLookup("":"NoCache";@DbName; "Hardware"; hardware[n];"Investitionskosten");
    @Prompt([Ok]; "test"; invest): n := n + 1;
    n <= @Elements(hardware)
    )
  • Danke mal für die schnelle Hilfe,


    wenn ich diese Formel eingebe erhalte ich folgende Fehlermeldung:


    "Falscher Datentyp für Operator oder @Funktion: Text erwartet"


    Hat jemand einen Lösungsvorschlag? Habe versucht mit @text den Wert umzuwandeln allerdings kommt die Fehlermeldung immer noch...


    Grüße


    Deluxer

  • Welcher Datentyp ist denn das Feld "Investitionskosten"??
    Ich habe es grad mal mit einem Zahlenfeld probiert und nach umwandeln mit @Text(invest) ging es wieder

  • Also da der Fehler noch kam habe ich jetzt mal Variable aus der Messagebox genommen. Die Formel sieht jetzt so aus:


    FIELD n:=1;
    @DoWhile(n <= @Elements(hardware);
    invest:=@DbLookup("":"NoCache"; "<Server>" :"<Datenbank>"; "Hardware"; hardware[n]; @Text("Investitionskosten"));
    @Prompt([Ok]; "test";"dk"); n = n + 1;
    n <= @Elements(hardware)
    )


    So läuft die Formel durch... allerdings als Endlosschleife... Ich kann die Schleife nur durch beenden von Lotus Notes stoppen. Das Abbruchkriterium ist doch aber richtig oder?


    Grüße


    deluxer

  • Ja, so habe ich das Problem auch ;
    Haettest doch meinen Code "nur" kopieren muessen.
    Der Fehler leigt bei @Prompt([Ok]; "test";"dk"); n = n + 1;
    Versuch mal die Doppelpunkte wieder aufzunehmen.
    also ... @Prompt([Ok]; "test";"dk"); n := n + 1;



    Mist, sieht man kaum..ich meinte die Doppelpunkte bei n :=

  • Ich habe den Code jetzt so übernommen, hatte ich Anfangs auch schon, dann kam aber immer die Fehlermeldung mit dem falschen Operator bzw. Text erwartet.


    @DoWhile(n <= @Elements(hardw);
    invest:=@DbLookup("":"NoCache"; "server" : "datenbank" ; "Hardware"; hardware[n]; "Investitionskosten");
    @Prompt([Ok]; "test"; invest); n := n + 1;
    n <= @Elements(hardware)
    )


    So wie der Code jetzt oben ist bekomme ich immer die Fehlermeldung mit dem Operator bzw. Text erwartet.


    Deswegen hat ich das Feld "investitionskosten", das ein Feld vom Typ Zahl ist versucht umzuwandeln ...: @text("investitionskosten"). Allerdings kommt dann die Fehlermeldung immer noch.


    Wenn ich die Formel so umschreibe, dass ich das feld investitionskosten nicht umwandele dafür aber das Feld invest mit @text(invest) dann kommt die FEhlermeldung dass eine Zahl erwartet wird...????

  • So alles klar jetzt habe ich die Formel soweit dass sie durchläuft.... allerdings ist die Messagebox beim zweiten Durchlauf leer.... An was könnte das liegen...?


    Formel sieht momenatn so aus:


    n:=1;
    @DoWhile(n <= @Elements(hardw);
    invest:=@DbLookup("":"NoCache"; "server" : "datebank" ; "Hardware"; hardware[n]; "Investitionskosten");
    @Prompt([Ok]; "test"; invest); n := n + 1;
    n <= @Elements(hardware)
    )


    Beim ersten durchlauf wird mir ein Wert angzeigt, beim zweiten Durchlauf ist die @prompt Box leer... als ob nichts in invest drin stehen würde....??


    grüße


    deluxer

  • Hallo,


    also die Werte aus Hardware habe ich mir anzeigen lassen, alles ok...
    Ich bin jetzt folgendermaßen vorgegangen und es funktioniert endlich:


    invest:=0;
    @For(n := 1;
    n <= @Elements(hardware);
    n:=n+1;
    such:=hardware[n];
    invest:= @DbLookup("":"NoCache"; "<server>" : "<datenbank>" ; "hardinvest"; such; 2) ;
    investgesamt:= investgesamt + invest);
    gesamt:=@Text(investgesamt);
    @SetField("investhardware"; gesamt);


    Wie gesagt so funktioniert es bei mir. Warum die andere Formel nicht geht, weiß ich leider auch nicht. Da ich aber noch nicht so der Profi in der Lotus Notes Entwicklung bin, kann es sein dass ich vieleicht irgendwo einen kleinen Fehler übersehen habe oder so...


    Ist ja auch egal, hauptsache es funktioniert. Ich danke allen die mir geholfen haben!


    Freundliche Grüße


    deluxer