Nächstes Datum finden
Hallo,
Ich habe in der Ursprungstabelle 2 Datumswerte. Davon hat das 1. immer einen wert, das 2. jedoch nur bei bedarf. Aus diesen werten sollen 3 fx Felder in einer anderen Tabelle gefüllt werden. Sie sollen den entsprechenden Wochentag anzeigen der am nächsten liegt und bei click das dementsprechende Datum ausgeben.
Das klappt alles wunderbar so lange nur das 1. Datum ausgefüllt ist. Doch wie bekomme ich das 2. Datum da mit rein.
Bisher bei wenn nur Datum 1 befüllt:
fx 1.Tag:
first((select Handy where Datum1>= today() ) order by Liefertermin).weekdayName(Liefertermin)
end
bei click:
'für Anzeige' := first((select Handy where Datum1>0today()) order by Liefertermin).Liefertermin
fx 2. Tag:
let aa := first((select Handy where Datum1>=today() ) order by Liefertermin).Liefertermin;
first((select Handy where Datum1 > aa ) order by Liefertermin).weekdayName(Liefertermin)
bei click:
let aa := first((select Handy where Datum1>0today()) order by Liefertermin).Liefertermin;
'für Anzeige' := first((select Handy where Datum1 > aa ) order by Liefertermin).Liefertermin
Der versuch alle Datum angaben von Datum 1 und Datum 2 in ein array zu packen scheitern, da die dann ja als text vorhanden sind und nicht weiterverarbeitet werden können.
let aa := first((select Handy where Datum 1 ) order by Datum 1).Datum 1 + ",";
let bb := first((select Handy where Datum 2 ) order by Datum 2).Datum 2 + ",";
let arry:= aa + bb;
let myARRAY := split(text(dd), ",");
let kk := item(myARRAY, 0);
let tt := item(myARRAY, 1);
Kann einer helfen? Ergebnis soll sein das immer der nächste Tag ab today() angezeigt werden soll. Also auch das Datum 2 berücksichtigt ist.
12 Antworten
-
Liefertermin ist natürlich Datum 1
-
Habs glaub.
fx 1. Tag
let aa := first((select Handy where Datum 1 > today()) order by Datum 1).Datum 1;
let cc := first((select Handy where Datum 2 > today()) order by Datum 2).Datum 2;
let dd := [cc, aa];
min(dd)fx 2. Tag
let aa := first((select Handy where Datum 1 > today()) order by Datum 1).Datum 1;
let cc := first((select Handy where Datum 2 > today()) order by Datum 2).Datum 2;
let dd := [cc, aa];
let ss:=min(dd)
let bb := text(Teamauswahl);
let ff := first((select Handy where Datum 1 > ss) order by Datum 1).Datum 1;
let zz := first((select Handy where Datum 2 > ss) order by Datum 2).Datum 2;
let gg := [ff, zz];
min(gg)oder geht es anders?
-
doch noch ne frage? Wie frag ich ab ob ein wert enthalten ist.
let array := [li, li2];
if array then
weekdayName(date(min(array))) + " - " + format(date(min(array)), "DD.MM.")will nicht so recht. So hab ich immer den Bindestrich da stehen auch wenn kein wert enthalten ist.
-
Hi Michi. Vielleicht so:
let array := [li, li2]; if cnt(array) = 0 then "" else weekdayName(date(min(array))) + " - " + format(date(min(array)), "DD.MM.")
P.S. Ich würde die Variable noch umbenennen, da "array" ja auch eine Funktion array() ist. Das könnte Mißverständnisse auslösen. Bist Du mit dem Rest Deines Problems durch? Gruß Mirko
-
Das hab ich so gelöst
let bb := 'für Anzeige';
let cc := text(Teamauswahl);
let ff := ((select Handy where Liefertermin = bb and Rolle = cc) order by Nr).number(Nr);
let ff1 := ((select Handy where Liefertermin2 = bb and Rolle = cc) order by Nr).number(Nr);
let array := ff + ff1;
let myARRAY := split(text(array), ",");
let kk := item(myARRAY, 0);
let tt := item(myARRAY, 1);
let gg := item(myARRAY, 2);Setzte die Ergebnisse zusammen füge zum trennen der Nr ein komma hinzu und teile es in einzelne ansprechbare Variablen am komma. So bekomm ich das derzeit hin für die Zuordnung. Mir viel nix anderes ein.
Danke für den Tipp, setz ich um
-
Eine Problem hab ich noch, wie kann ich garantieren das nur die Daten today() + 1 Tag neu aufgespielt werden. Diese Datensätze dürfen nicht gelöscht oder überschrieben werden. Das aktuelle Skript berücksicht das nicht.
if dialog("Daten für App bereitstellen", "Bitte die Kalenderwoche für die bereitstellung auswählen.", ["Aktuelle Woche", "Nächste Woche", "abbrechen"]) = "Aktuelle Woche" then
for i in (select 'Aufträge')[Liefertermin > today() and item(split(yearweek(today()), "/"), 1) = item(split(yearweek(Liefertermin), "/"), 1)] doDann werden alle Datensätze sofern schon vorhanden gelöscht und neu eingespielt.
-
Hilfe openFullscreen will jetzt nicht mehr
Wie kann man das denn lösen?
let bb := 'für Anzeige';
let cc := text(Teamauswahl);
let ff := join((select Handy where Liefertermin = bb and Rolle = cc).text(Nr), ",");
let ff1 := join((select Handy where Liefertermin2 = bb and Rolle = cc).text(Nr), ",");
let zus := ff + ff1;
let myARRAY := split(text(zus), ",");
let kk := item(myARRAY, 0);
let tt := item(myARRAY, 1);
let gg := item(myARRAY, 2);
(select Handy)[ number(Nr) = number(kk)].(Counter := 1);
openFullscreen(number(kk))mekert rum mit openFullscreen(number) / oder openFullscreen(string)
-
Michi said:
Die bekommt er ja über die variable kk, nur leider musste ich die gewonnenen ID (Nr) der datensätze als string umwandelnEben, und dann ist es keine ID mehr, sondern ein Text, mit dem Ninox genauso viel anfangen kann wie mit "Trallala". Die ID stellt quasi ein eigenes Datenformat dar (nid), das z. B. bei select, create oder record() zurückgegeben wird.
Ungeachtet des sonstigen Codes, den ich mir jetzt nicht näher angesehen habe, könnte folgendes funktionieren:
let idfinden := first((select Handy)[ number(Nr) = number(kk)]); openFullscreen(idfinden)
Content aside
- vor 2 JahrenZuletzt aktiv
- 12Antworten
- 110Ansichten
-
2
Folge bereits