Moin,moin,
ich habe zum 1. Mal den Sinn einer Schleife in Formelsprache verstanden und verwendet. Bisher war mir nicht klar in welcher Situation eine Formel-Schleife was bringen sollte.
Ich habe folgende Konstellation:
Texfeld: "Events" - Mehrfachwerte
Zahlenfeld: "Tickets" - Mehrfachwerte
Zahlenfeld: "Prices" - Mehrfachwerte
das Feld Events fülle über einen Hotspot mit folgender Formel:
Cache := "NoCache";
View := "lkpOrderEvents";
MarkedEvents := @PickList( [Custom] ; @DbName; View ; "" ; "Bitte wählen Sie die Veranstaltungen" ; 1);
var := @Explode(MarkedEvents;@NewLine);
@SetField("Events";var)
Danach wird das Feld Tickets ebenfalls über einen Hotspot gefüllt. Hierfür habe ich mit Blut, Schweiß und Tränen folgende Formel erstellt:
Cache := "NoCache";
View := "lkpOrderTicketPrices";
@If(
@Elements(Events) = 0;
@Prompt([Ok];"";"Bitte wählen Sie zuerst eine oder mehrere Veranstaltungen aus."):@Return(@False);
@Nothing
);
n := 1;
@DoWhile(
tmpTicket := @Prompt([OkCancelEdit]; "Kartenanzahl"; "Bitte geben Sie die Anzahl der Karten für die Veranstaltung: " + Events[n] + " ein";"");
@If(
!@IsNumber(@TextToNumber(tmpTicket));
@Prompt([Ok];"";"Es wurde keine gültige Zahl eingegeben.") : @SetField("Tickets";"") : @Return(@False);
@TextToNumber(tmpTicket) = 0;
@Prompt([Ok];"";"Es muss eine Zahl größer 0 eingegeben werden.") : @SetField("Tickets";"") : @Return(@False);
tmpTicket = "";
@Prompt([Ok];"";"Es muss eine Zahl größer 0 eingegeben werden.") : @SetField("Tickets";"") : @Return(@False);
@If(
tmpTickets = "";
tmpTickets := tmpTicket;
tmpTickets := tmpTickets + @NewLine + tmpTicket
)
);
n := n + 1;
n <= @Elements(Events)
);
@SetField("Tickets";@Explode(tmpTickets;@NewLine))
Jetzt wollte ich in der 2. Aktion auch das Feld Prices füllen und habe direkt nach dem @doWhile vor das
tmpTicket := @Prompt([OkCancelEdit]; "Kartenanzahl"; "Bitte geben Sie die Anzahl der Karten für die Veranstaltung: " + Events[n] + " ein";"");
ein
tmpPrice := @DbLookup("":Cache;@DbName;View;Events[n],"TicketPrice");
gesetzt. Sowohl der Wert von Events[n] als auch das Feld TicketPrice sind in der Ansicht vorhanden und mit den richtigen Werten gefüllt.
Leider bleibt tmpPrice aber leer? Kann es sein, dass @dbLookup in Kombination mit @dowhile nicht funktioniert? In der Hilfe hab ich hierzu nichts gefunden.
Ich habe das ganze jetzt aus Zeitdruck im PostSave der Maske mit Script gelöst., mich fuchst das aber trotzdem.
Hatte schonmal jemand so eine Situation, bzw. kann mir sagen, wo mein Denkfehler ist?