0

Feld aus einem folgenden Datensatz anzeigen

Hallo,

ich habe folgende Situation.

Ich habe eine Tabelle Buchungen und möchte in einem Datensatz den Gast der als nächstes anreist anzeigen lassen.

Ich habe ein Fuktionfeld mit nachfolgendem Skript angelegt was aber nicht funktioniert:

let a := Apartment.Bezeichnung;
let xAbr := Abreise;
let myFlag := false;
let myArr := for i in (select Buchungen where Apartment.Bezeichnung = a) order by Anreise do
if not myFlag and i.Anreise < xAbr then
void
else
if i.Anreise >= xAbr then
myFlag := true and 'Gäste.'
else
i
end
end
end;
first(myArr)

Was ist daran falsch?

9 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Peter,

    bei 'Gäste'. ist etwas abgeschnitten worden? Ich würde versuchen, es ohne Schleifen zu lösen:

    ---

    let my:=this;

    let myNextArrival:=min(select Buchungen where Apartment=my.Apartemt and Anreise>my.Abreise).Anreise;

    first(select Buchungen where Anreise=myNextArrival and Apartment=my.Apartemt).'Gäste'.Name

    ---

    Du muss abe nachschauen, was du genau bei Gästen schreiben solltest.

    Leo

    • Peter.2
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leonid,

     

    vielen Dank für den Vorschlag.

    Im Prinzip ist es mir klar aber es wird trotzdem nichts angezeigt. Anbei mein angepasstes Skript:

    ---

    let my := this;
    let myNextArrival := min(select Buchungen where 'Apartment.' = my.Apartment and Anreise >= my.Abreise and not storniert).Anreise;
    first(select Buchungen where Anreise = myNextArrival and 'Apartment.' = my.'Apartment.' and not storniert).'Gäste.'

    Ich habe noch die Abfrage nach storniert ergänzt. Felder mit einem Punkt nach der Bezeichnen sind brechnete Felder.

    Ich glaube ich habe den Thread in der falschen Rubrik gepostet.

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    let my := this;
    let myNextArrival := first((select Buchungen where Apartment = my.Apartment and Anreise >= my.Abreise) order by Anreise).Anreise;
    first(select Buchungen where Anreise = myNextArrival and Apartment = my.Apartment).'Gäste'.Name

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Beziehungsweise mit der Ergänzung um 'Stoniert':

     

    let my := this;
    let myNextArrival := first((select Buchungen where not Storniert and Apartment = my.Apartment and Anreise >= my.Abreise) order by Anreise).Anreise;
    first(select Buchungen where Anreise = myNextArrival and Apartment = my.Apartment).'Gäste'.Name

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Das mit dem 'Gäste.' in deinem Code verstehe ich übrigens auch nicht.

    • Peter.2
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Vieln Dank so funktioniert es:

    ---

    let my := this;
    let myNextArrival := first((select Buchungen where not 'storniert.' and 'Apartment.' = my.'Apartment.' and Anreise >= my.Abreise) order by Anreise).Anreise;
    first(select Buchungen where Anreise = myNextArrival and 'Apartment.' = my.'Apartment.').'Gäste.'

    'Gäste.' ist ein Funktionsfeld und listet die Namen der Gäste auf die in der Untertrabelle eingegeben sind.

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    order by mach hier keinen Sinn.

    • Peter.2
    • vor 4 Jahren
    • Gemeldet - anzeigen

    komisch. wenn ich order by entferne funktioniert es aber nicht mehr

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Ok, ich sehe in meiner Formel einen kleinen Fehler:

    ---

    et my:=this;

    let myNextArrival:=min(select Buchungen where not 'storniert.' and 'Apartment.'=my.'Apartemt.' and Anreise>=my.Abreise.Anreise);

    first(select Buchungen where not 'storniert.' and Anreise=myNextArrival and 'Apartment.'=my.'Apartemt.').'Gäste.'

    ---

     

    order by macht dann bei der uhrsprünglichen Formel doch Sinn, wobei ich es in meiner Formel nicht brauche.

    gefahr bei first() in Kombination mit  order bei () ist es: wenn zufällig zwei Datensätze mit IDs 99 und 100 in der Reihe sind, wird der Datensat mit der Id-100 als first ausgewählt.

     

    Leo

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 9Antworten
  • 1665Ansichten