0

Nach Bedingung Zählen

Grüße,

stehe gerade auf dem Schlauch. Find mein Fehler nicht bzw. verstehe ich nicht warum es nicht klappt.

Die Ansicht zeigt mir die richtigen Ergebnisse mit dem Aufruf 

let aa := Istdatum;
let cc := 'zurückdatum';
(select 'Aufträge')[Kalenderdatum = aa or 'zurückwoche' = cc or 'zurückwoche' < cc]

 

Wenn ich mir die Aufträge sortiert ( gezählt nach Auftragsstatusart ) ausgeben lassen will zeigt es mir Zahlen die hinten und vorne nicht stimmen. Ist doch aber nur die Statusabfrage hinzugekommen.

let aa := Istdatum;
let cc := 'zurückdatum';
let dd := cnt(select 'Aufträge' where Kalenderdatum = aa or 'zurückwoche' = cc or 'zurückwoche' < cc and Auftragsstatus = 1);
let gg := cnt(select 'Aufträge' where Kalenderdatum = aa or 'zurückwoche' = cc or 'zurückwoche' < cc and Auftragsstatus = 2);
let ff := first((select 'Aufträge').'Lagerbestand m3');
dd + " Neuaufträge < und > " + gg + " Reklamationen zu verplanen" + " /// " + ff

17 Antworten

null
    • Michi.1
    • vor 2 Jahren
    • Gemeldet - anzeigen
    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Scheinbar soll die Erste Bedingung Auftragsstatus sein und alle anderen Bedingungen nachrangig.
    Das ist jetzt etwas schwer ohne dein Datenmodell genau zu kennen und zu wissen, was eigentlich als Ergebnis erwartet wird.
    Manchmal hilft eine DummyDB um das nachzuvollziehen.
    Ich probiere es trotzdem mal.
    Das ist manchmal kompliziert mit der Reihenfolge von and/or
    Ich würde es umsortieren.

    let P: select 'Aufträge';
    let aa := IstDatum;
    let cc := 'Zurückdatum';
    let dd := cnt(P[Auftragsstatus=1 and Kalenderdatum = aa or 'Zurückwoche' <= cc]);
    let gg := cnt(P[Auftragsstatus=2 and Kalenderdatum = aa or 'Zurückwoche' <= cc]);
    let ff := first(P).'Lagerbestand m3';
    und der Rest deines Codes.

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG danke dir Uwe,

      Der Auftragsstatus wird einfach nicht mit einbezogen, auch mit deinem Script nicht, liegt doch aber alles in der selben Tabelle. Auch gibt es nur diese beiden Varianten (Auftragsstatus=1 oder 2)

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Welcher Feldtyp ist Status?
    Vielleicht dann so number(Auftragsstatus)=1

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG Ein einfaches Auswahlfeld. mit number wird es auch erfolgreich ignoriert. 😡

      Abgefragt wird von Tabelle Planung auf Tabelle Aufträge. Diese sind nicht verknüpft.

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Michi Kannst du mich ins Team einladen damit ich mal draufschaue?
      foren.uwe@gmx.de

      Kannst mich anschließend wieder rausschmeißen.

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Welche DB und wo muss ich hin (Tabelle)

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG Aufträge / Planung

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Kannst mich wieder rausschmeißen.
    Habe es in der Restore gelöst:
    Code:
    let P := (select 'Aufträge');
    let aa := Istdatum;
    let cc := 'zurückdatum';
    let dd := cnt(P[Auftragsstatus = 1 and Kalenderdatum = aa or Auftragsstatus = 1 and 'zurückwoche' <= cc]);
    let gg := cnt(P[Auftragsstatus = 2 and Kalenderdatum = aa or Auftragsstatus = 2 and 'zurückwoche' <= cc]);
    let ff := first((select 'Aufträge').'Lagerbestand m3');
    dd + " Neuaufträge < und > " + gg + " Reklamationen zu verplanen" + " /// " + ff

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG Danke dir, warum muss man das doppelt abfragen ?

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Michi Das liegt an dem and in Verbindung mit or.
      Mit 'and' erzeugst du eine eigenständige Bedingungen und das folgende or ist dann nachrangig und ignoriert in deinem Fall den Status.

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG wäre ich niemals drauf gekommen. 👍

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Sorry wegen des hin und her.
    Aber es fällt mit leichter, wenn ich mir die DB direkt ansehen kann.
    Da bewundre ich Axel, Mirko und Torsten, die es theoretisieren können.
    Manchmal verstehe ich überhaupt nicht was gemeint ist, wenn ich es nicht direkt sehen und nachvollziehen kann.
    Nicht vergessen mich aus dem Team zu löschen und die Restore_DB wieder zu löschen wegen der Speichergröße.

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG nicht sorry, eher danke das du so vielen hilfst hier.

      hat er gemacht.

      Danke

      • UweG
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Michi Nicht nur mir danken.
      Hier sind so viele engagierte User, die Unterstützung leisten und ich lerne permanent neues dazu, was ich nicht auf dem Schirm hatte.

      • Michi.1
      • vor 2 Jahren
      • Gemeldet - anzeigen

      UweG das stimmt natürlich!! Hab ja selber von ihnen Hilfe bekommen. Sorry 

    • UweG
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hier noch ein abgewandeltes Script:

    let P := (select 'Aufträge');
    let aa := Istdatum;
    let cc := 'zurückdatum';
    let dd := cnt(P[Auftragsstatus = 1] [Kalenderdatum = aa or 'zurückwoche' <= cc]);
    let gg := cnt(P[Auftragsstatus = 2] [Kalenderdatum = aa or 'zurückwoche' <= cc]);
    let ff := first((select 'Aufträge').'Lagerbestand m3');
    dd + " Neuaufträge < und > " + gg + " Reklamationen zu verplanen" + " /// " + ff