0

Kann man folgendes script vereinfachen?

Hallo, ich bin noch relativer Neuling... ich möchte aus verschiedenen Tabellen die Kosten des jeweilig ausgewählten Jahres summieren. Die Tabelle Systemparameter hat jährlich neue Records. Und diese jährlichen Records sollen auch nur die zu diesem Jahr passenden Kosten anzeigen.

Mein script funktioniert zwar so, aber mir erscheint meine Lösung zu " bombastisch" - gibt es eine elegantere Lösung? Ich bin übrigens apple-User und somit Nutzer der icloud-drive als Mono-Nutzer.

9 Antworten

null
    • Lamping & Reisig Gmbh & Co.KG
    • LuRLorenz
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Also einerseits kann man die 

    let recorddate := 'Gilt ab:';
    

    einmal oben global für alle Teile definieren.

    Wie sieht die Tabellenstruktur aus? Sind die Tabellen "Produkt Dienstleitungen" usw. alle mit der Tabelle "System-Parameter" verknüpft? 

    Wenn du eine Gesamtübersicht haben möchtest hätte ich das jetzt so gebaut, dass die anderen Tabellen eine Verknüpfung zu der Tabelle "System-Parameter" hat. Ich habe es jetzt so verstanden, dass es einen Datensatz in "System-Parameter" gibt pro Jahr, dann würde ich in den anderen Tabellen bei dem Trigger "Trigger bei neuem Datensatz" folgendes eintragen:

    'System-Parameter' := first(select 'System-Parameter' where year('Gilt ab:') = year(today))

    Somit ist dann jeder Datensatz immer automatisch für die jeweilige Jahresansicht verknüpft.

     

    Ich glaube deine "select" Anweisungen sind alle unnötig, würde behaupten mit dieser Syntax sollte es auch gehen:

    let recorddate := 'Gilt ab:';
    let sumFahrtkosten := sum('Produkt Dienstleistung'.'Kreditor Fahrtkosten');
    let sumVerpflegung := ....
    ...
    
    
    let sumGesamt := sumFahrtkosten + sumVerpfegung + ....
    
      • Apotheker für Offizinpharmazie
      • apothekenservice
      • vor 3 Monaten
      • Gemeldet - anzeigen

        Hallo, vielen Dank... aber ich komme wohl nicht um die select-Anweisungen bei den Kostentabellen herum... die jeweiligen records dort haben ein unterschiedliches JAHR als Variable vermerkt... und ich will ja im Record der Systemparameter mit dem Gültigkeitsdatum 'Gilt ab:' nur jene Kosten summieren, deren JAHR mit dem Jahr von 'Gilt ab:'  übereinstimmt... ich komme also wohl nicht um die Funktion select-where herum... oder?

      • Torsten_Stang.1
      • vor 3 Monaten
      • Gemeldet - anzeigen

       

      Du kannst auch verknüpfte Datensätze selektieren. So sollte es beispielhaft gehen:

      let recorddate := 'Gilt ab:';
      let sumFahrtkosten := sum('Produkt Dienstleistung'[Jahr = recorddate].'Kreditor Fahrtkosten');
      let sumVerpflegung := ....
      ...
      
      
      let sumGesamt := sumFahrtkosten + sumVerpfegung + ....
      
      • Apotheker für Offizinpharmazie
      • apothekenservice
      • vor 3 Monaten
      • Gemeldet - anzeigen

      danke für den Tip - mir war allerdings so, dass man möglichst keine eckigen Klammern nutzen sollte, sondern dann eher select where... oder liege ich da jetzt falsch?

      • Torsten_Stang.1
      • vor 3 Monaten
      • Gemeldet - anzeigen

       bei select benutze ich tatsächlich immer "where", wenn ich in direkt verknüpften Tabellen suche die eckigen Klammern.

      Ob das technisch korrekt bzw. perfekt ist, kann ich nicht sagen - zumindest funktioniert es ;-)

      • Apotheker für Offizinpharmazie
      • apothekenservice
      • vor 3 Monaten
      • Gemeldet - anzeigen

      Du hast mir da dann doch den richtigen Weg gezeigt.... ich habe noch mal bei der SUM-Funktion gesucht und habe dann folgendes script gefunden, was meiner Vorstellung am nächsten kommt - select-where soll angeblich auch die schnellere Variante sein...

      Nochmals vielen Dank für die Hilfestellung, die ich hier bekommen habe!!

    • Apotheker für Offizinpharmazie
    • apothekenservice
    • vor 3 Monaten
    • Gemeldet - anzeigen

    Hallo, vielen Dank für diese komprimiertere Form...

    Die Tabellen mit den Kosten sind alle mit den System-Parametern verknüpft...

    ich hatte es anfangs auch schon so versucht, hatte aber Probleme mit der Auswahl des Jahres... und somit entstand meine Verschachtelung der Funktionen... Nochmals vielen Dank !!

    • Ninox-Professional
    • planoxpro
    • vor 3 Monaten
    • Gemeldet - anzeigen
     said:
    select-where soll angeblich auch die schnellere Variante sein...

    Aber nicht bei verknüpften Tabellen. Da ist auf jeden Fall Torstens Variante ohne "select" und Bedingung in eckigen Klammern effektiver.

    Das "select" benötigt man nur bei Tabellen, die nicht mit der aktuellen verknüpft sind. Dabei hat man die Wahl, ob man die Bedingung mit "where" oder in eckigen Klammern formuliert. In diesem Fall empfiehlt Ninox die Variante mit "where".

      • Apotheker für Offizinpharmazie
      • apothekenservice
      • vor 3 Monaten
      • Gemeldet - anzeigen

       Hallo, vielen Dank für die genauere Erklärung!!  Hab wieder mal viel dazugelernt

Content aside

  • vor 3 MonatenZuletzt aktiv
  • 9Antworten
  • 55Ansichten
  • 4 Folge bereits