bestimmen ob summe = 0 ist bei Schleife ??
Grüßt euch,
wie kann ich das lösen??
Wenn keine fehlteile vorhanden sind (also alle ergebnisse auf "0" stehen) soll nur ein text da stehen, ansonsten die Auflistung.
Ps.: kann man eventuell der Optik wegen den text "fehlteile" automatisch so positionieren das es alles untereinander steht. (Lieferantennamen sind ja immer unterschiedlich lang, auch kommen hier immer mal welche dazu)
Danke Michi
---
if sind alle fehlteile = 0 then
"komplett WE"
else
zeig das an
---
let me := this;
let vergleich := unique(((select 'AB-bestätigung' where 'Aufträge' = me and 'Eingang der AB' < today()) order by text(Lieferantenauswahl)).text(Lieferantenauswahl));
let anzeige := for i in vergleich do
let soll := sum((select 'AB-bestätigung')['Aufträge' = me and 'Eingang der AB' < today() and text(Lieferantenauswahl) = i].'Anzahl der Bestellten Artikel');
let ist := sum((select Lieferscheine)['Aufträge' = me and 'Ausgelagert am' = null and text(Lieferantenauswahl) = i].'anzahl Artikel');
let name := first(select 'AB-bestätigung' where 'Aufträge' = me and 'Eingang der AB' < today() and text(Lieferantenauswahl) = i).text(Lieferantenauswahl);
let sumeaus := text(soll - ist);
"•" + " " + name + "..." + "fehlteile: > " + sumeaus
end;
join(anzeige, "
")
15 Antworten
-
Meine Idee war das ich vor der schleife ein leeres nummern array setz was ich in der schleife befüll.( let sume:=[] / gefüllt mit sume:= soll - ist ) sodas ich darauf zugreifen kann, ohne das ganze doppelt am laufen zu haben. Und am Ende mit sum([sume]) auf den Wert überprüfe.
Doch leider verstehe ich das ganze nicht. Array sind glaube ich nicht meine Freunde, aber ich muss das in meinen Schädel rein bekommen
-
Hi Michi.
- let test := [0] legt das Zahlenarray mit einer 0 an
- in der Schleife würde es bei jedem Schleifendurchgang mit der Variablen "sumaus" ergänzt, dafür wird die Funktion array() benutzt, welche zwei Arrays kombiniert, deshalb muß die Zahl, die in "sumaus" hinterlegt ist erst in ein Array gepackt werden, also []
- dann wird in der if-Abfrage die Summe geprüft, was ja schon Dein Gedanke war
- die Anordnung in korrekten Spalten durch join() ist immer schwierig, da die einzelnen Zeichen unterschiedliche Breiten haben, deshalb ist auch lpad() und rpad(), oder die Vergabe von Punkten ungenau und ich habe mich in Deinem Fall für eine html-Tabelle entschieden. Wenn Du das Feld drucken willst, mußt Du natürlich auf eine andere Version übergehen.
-
Mirko Es geht bei änderung der Anzahl der eintrag verloren, wo man die Zahl geändert hat. Ändere zb. bei Schock die Anzahl der Artikel, ist bei:
let vergleich := unique(((select 'AB-bestätigung' where 'Aufträge' = me and 'Eingang der AB' < today()) order by text(Lieferantenauswahl)).text(Lieferantenauswahl))
Nur noch Bosch & Nobilia zu sehen, obwohl die Bedingungen für Schock erfüllt sind.
-
hier wird richitg ausgegeben:
let vergleich := unique(((select 'AB-bestätigung' where 'Aufträge' = me and 'Eingang der AB' < today()) order by text(Lieferantenauswahl)).text(Lieferantenauswahl));
hier muss der fehler sein: die ausgabe verliert den Lieferantennamen
first(select 'AB-bestätigung' where 'Aufträge' = me and 'Eingang der AB' < today() and text(Lieferantenauswahl) = i).text(Lieferantenauswahl)
-
geschieht nur wenn in der Tabelle AB-bestätigung die Anzahl geändert wird, sobald man jetzt in Lieferscheine irgend eine Anzahl ändert ist der Name wieder da.
-
Prüfe doch mal die beiden anderen Bedingungen bei der Variablen "name", ob es überhaupt einen Auftrag = me gibt und einen Eingang vor today(). Dann kann der Name ja stimmen, aber wenn eine der beiden anderen Bedingungen nicht zutrifft, gibt es kein Ergebnis und das Feld bleibt leer.
'Aufträge' = me and 'Eingang der AB' < today()
-
Dann versuch doch mal bei first() an das select noch ein "order by number(Nr)" einzubauen. Und wäre nicht hier sogar last() zutreffender? Aber ich fische hier gerade voll im Trüben.
-
Hab ich probiert (beides) Ergebnis ist das selbe. Hab aber festgestellt wenn ich die DB schliese und wieder öffne, dann rechnet Ninox neu und es steht alles wieder richtig da. (als ob das Skript nicht voll durschläuft wenn man in der Tabelle AB bestätigungen was nachträglich ändert.) ???
-
Das einzige was ich mir noch vorstellen kann, ist das es damit zu tun hat, das in der Tabelle AB-Bestätigung das bezugs feld Lieferantenauswahl ein DAF ist und in Lieferscheine ein einfaches Auswahlfeld ist.
Lass mir einfach bei Änderung der Lieferanten die Daten in die bezugstabelle für das DAF schreiben damit die bezeichnungen immer gleich sind. Muss das in Lieferanten und einer weiteren Tabelle noch ändern (gab da noch kein DAF beim erstellen, nur ist es mühsam raus zu finden wo das überall verwendet wurde als bezug in Skripten)
let mySuche1 := lower(text(Lieferantenauswahl)); let aa := cnt(select auswahlfeld where contains(lower(Text), mySuche1)); if aa = 0 then let tex := text(Lieferantenauswahl); let myR := (create auswahlfeld); myR.(Text := tex) end;
Content aside
- Status Answered
- vor 1 JahrZuletzt aktiv
- 15Antworten
- 63Ansichten
-
2
Folge bereits