1

Datensätze nach Monat ermitteln und einzelnen Wert auslesen

Hallo zusammen, 

ich bin noch blutiger Anfänger und möchte folgendes Umsetzen. 
Ich erfasse Stunden mit: Kunde, Leistung, Datum, Anfang, Ende, Summe Stunden. 
Jetzt möchte ich beim Rechnung schreiben nur Kunde + Monat auswählen und möchte das er dann die Stunden der einzelnen Leistungen addiert und in dem entsprechen Feld der Rechnung ausgibt. 

Die Syntax ist mir noch neu aber frei übersetzt sowas wie:
if Abrechnungsmonat=1 nimm alle erfassten Stunden für den Kunden X zwischen dem 01.01.2024 und 31.01.2024 und gib die Summe der Stunden in Feld Y aus. 

Ich freue mich auf eure Hilfe und sage schonmal Vielen Dank :-)

4 Antworten

null
    • mirko3
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Hi Basti. Du benötigst irgendwie den Hinweis auf den gewünschten Monat (z.B. Datumfeld) und den Kunden. yearmonth() ist zweckmässig, um die Einschränkung gleich auch auf das Jahr vorzunehmen. Die Syntax für ein Funktionsfeld welcher im aktuellen Kunden mit dem gewünschten Datum stünde, wäre etwa so. In den Variablen wird der aktuelle Kunde und yearmonth gespeichert. In der Schleife folgt:  Summiere(alle Summen aus meiner Tabelle mit der Einschränkung [Kunde ist mein Kunde, yearmonth ist mein yearmonth]). Natürlich mußt Du die Bezeichner anpassen. Jetzt ist noch die Frage, wo Du den Code nutzt, Button füllt Textfeld, Funktionsfeld im Datensatz, Funktionsfeld in der Druckvorlage oä. Mirko

    let printMonth := this.yearMonth(DATUM) ODER "2024/01";
    let costumer := this.Kunde ODER "KUNDENNAME"
    sum(for i in select TABELLE[Kunde = costumer and yearmonth(DATUM) = printMonth] do
    i.'Summe Stunden'
    end)
    
    
    • Basti.1
    • vor 10 Monaten
    • Gemeldet - anzeigen

    hi Mirko, 
    vielen Dank schonmal. Ich glaube das bringt mich schon weiter. Ich versuche es heute abend mal auszuprbieren. Vielleicht wirds aber auch erst morgen. 

    • Basti.1
    • vor 10 Monaten
    • Gemeldet - anzeigen

    Ach so, nutzen möchte ich es als Funktionsfeld im Datensatz. 
    Ich erstelle eine neue rechnung, wähle Kunde und Abrechnungsmonat aus und dann soll die summierte Stundenzahl ausgegeben werden. 
    Wobei ich gerade merke das ich mir dann meine Rechnungspositionen und die Leistungen nochmal anschauen muss. Ich glaube ich muss es anders aufziehen damit es funktioniert.

    • Basti.1
    • vor 8 Monaten
    • Gemeldet - anzeigen

    Hallo Mirko, 
    nachdem ich endlich mal Zeit hatte habe ich durch deine Anregungen und reichlich recherche eine funktionierende Lösung gefunden:
     

    let rmonth := yearmonth(MonatBerechnung);
    let rFirma := Rechnung.Kunde.Firma;
    sum(for i in select Stunden where Kunden.Firma = rFirma and yearmonth(Datum) = rmonth do
    i.Stunden
    end)
    

    An den Bezeichnungen übe ich noch, aber es funktioniert wenigstens.
    Ich danke Dir!