0

Zeitraum eingrenzen zwischen zwei Daten - Wie passen sich automatisch die hinterlegten Daten an?

Hallo - ich habe etwas im Forum gesucht, aber keine passende Antwort gefunden.

Ich habe in einer Tabelle verschiedene Projekte angelegt und jedes Projekt hat auf 1 Jahr bezogen verschiedene Laufzeiten.

Z.B.

Projekt A  01.01.20 - 31.03.20

Projekt B  01.02.20 - 30.04.20

Projekt C  01.02.20 - 29.02.20

Für die Laufzeit eines Projekte lasse ich mir die Werktage errechnen die mit einem Stundensatz multipliziert werden. 

(Es gibt eine "Datum Start" Feld und ein Datum "Ende Feld", sowie ein Feld "Anzahl Werktage" und "Stundensatz"

Das funktioniert prima und ich habe für 1 Jahr den Gesamtüberblick.

 

Nun möchte ich aber den Zeitraum über den Filter eingrenzen und die alle Projekte anzeigen lassen, die sich innerhalb dieses Zeitraumes befinden - zum Teil auch nur anteilig.

Ich wähle z.B. den Zeitraum 01.02. - 29.02. aus:

Projekt A  01.01.20 - 31.03.20 ---> Anzeige Projekt A anteilig für 01.02. - 29.02.

Projekt B  01.02.20 - 30.04.20 ---> Anzeige Projekt B anteilig für 01.02. - 29.02.

Projekt C  01.02.20 - 29.02.20 ---> Anzeige Projekt C unverändert, da gewählter Zeitraum übereinstimmt

Sobald ich den Zeitraum eingrenze, reduzieren sich entsprechend die Werktage.

 

Im Moment wird mir über die Filterauswahl nur Projekt C ausgewählt, weil es genau in dem Zeitraum liegt.

Danke vorab für einen weiteren hilfreichen Tipp!

11 Antworten

null
    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Sandra,

    Wenn du den Filter in der Tabellenansicht erstellst, filtert er nur die drei Felder in der Spalte und nicht die Zeitdauer. Wenn du unbedingt in der Tabelle filtern möchtest dann geh bitte auf die Spalte "Datum Start" und schreib dort in die Funktion:

    ---

    if  'Datum Ende'<date(2020,2,1) or 'Datum Start'>date(2020,2,29) then date (1970,1,1) else 'Datum Start'

    ---

    Und Filter beim Datum Start auf 02.01.1970 am Anfang setzen und Ende leer lassen.

    Die gefilterten Arbeitstage sollten dann in einer Funktionsspalte berechnet werden:

    ---

    let myStart:=if 'Datum Start'<date(2020,2,1) then date(2020,2,1) else 'Datum Start' end;
    let myEnd:=if 'Datum Ende' > date(2020,2,29) then date(2020,2,29) else 'Datum Ende' end;
    workDays(myStart,myEnd)

    ---

    Ich würde aber das ganze in eine Dashboard-Tabelle verlagern, damit ich nicht jedesmal den Code neu schreiben muss.

     

    Leo

    • Sandra
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Danke Leo für die schnelle Antwort - klingt erstmal gut und gerne verlagere ich das Ganze auch in eine Dashboard-Tabelle, wie von Dir empfohlen, aber wo bekommen ich die her / wie starte ich damit?

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Sandra.

    1. Erstell eine Tabelle Namens DASHBOARD

    2. Erstell dort zwei Datumsfelder "Anfang" und "Ende"

    3. Erstell ein Steuerelement "Ansicht" und füge dort die Formel ein:

    ---

    let myStart:=Anfang;
    let nyEnd:=Ende;
    select 'DEINE PROEKTTABELLE' where  'Datum Ende'>myStart and 'Datum Start'<myEnd

    ---

    Leo

    • Markus.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    wie muss ich das denn machen:

    1. wenn ich in diesem Dashboard nur den Zeitraum eines Datum angeben will? Also wie beim Filter eines Datums?

    2. wenn ich z.B. zwei Datumsfelder nutze will, ein Abschlussdatum mit dem Zeitraum ab 01.01.2020, das aber auch das Akquisedatum im Zeitraum 2019 berücksichtigt? Das bekomme ich über die Filter der Ansicht leider nicht hin

    VG Markus

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Markus,

    kannst du bitte präzisieren?

    1. Zeitraum bedeuted zwei Zeitstempel oder ein Datumsfeld und zwei Zeitfelder. Welches Feld in der Projekttabelle soll geprüft werden - Termin?

    2. Hier verstehe ich gar nichts. Welche Felder solten in der Projekttabelle Analysiert werden?

    Leo

    • Markus.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    na klar. Ich habe eine „Akquisedatenbank", mit der ich mehrere Zeitpunkte erfasse (z.B. Datum Erstkontakt, Datum Angebot, Datum Absage, Datum Abschluss etc.)

    1. Im ersten Fall möchte ich mir z.B. über das Dashboard alle Unternehmen anzeigen lassen, die das Datum Erstkontakt von 01.01.2019 - 31.12.2019 haben, also quasi der Filter wie in den Ansichten, nur halt etwas schneller und flexibler über das Dashboard und die Felder „Anfang" und „Ende", also nur ein Datumsfeld mit zwei Zeitpunkten.

    Filter

     

    2. Darüber hinaus gibt es aber auch Datensätze, die jahresübergreifend sind, die ich z.B. Ende 2019 angesprochen/akquiriert habe, die dann 2020 Kunde geworden sind.

    Wenn ich mir Datensätze über das Datum Erstkontakt nach 2019 filtere, ist der Abschluss im „falschen" Jahr, nach 2020 gefiltert fehlt mir der Abschluss für 2020, weil das Akquisedatum im Jahr 2019 liegt.

    Aus diesem Grund möchte ich dann noch eine Ansicht über das Dashboard erstellen, die mir die Akquisedaten von 01.01.2020 - 31.12.2020 filtert aber auch das Datum Erstkontakt im Jahr 2019 berücksichtigt und anzeigt, wenn das Abschlussdatum im Jahr 2020 liegt.

    jahrübergreifend

    Ich hoffe, du kannst mein Vorhaben so besser nachvollziehen

    Viele Grüße
    Markus

    • Markus.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    Punkt 1: habe ich gelöst, das lag an einem Schreibfehler in der Formel 🙈

    Punkt 2: jetzt habe ich mir verschiedene Ansichten in diesem Dashboard mithilfe der Karteireiter  erstellt. In einer Ansicht werden jetzt nach Abfrage des Datums alle Unternehmen ab z.B. 01.01.2020 angezeigt, die ich angesprochen habe ('Datum Erstkontakt'). Darin lasse ich mir aber auch die 'Abschlussdatum' anzeigen, weil das ja die Tätigkeit/Erfolge des kompletten Jahren darstellen soll.

    Deswegen möchte ich noch die Option reinbringen, die mir auch alle Unternehmen, die ein Abschlussdatum in 2020 aber auch Datum Erstkontakt in 2019 haben, anzeigen.

    Ich denke, in diesen Code müsste ich dann noch eine Bedingung einbauen: 

    if Anfang and Ende then
    let myStart := Anfang;
    let myEnd := Ende;
    select Akquise where 'Datum Erstkontakt' > myStart and 'Datum Erstkontakt' < myEnd
    else
    let myStart := Anfang;
    select Akquise where 'Datum Erstkontakt' > myStart
    end

    wenn das Beitrittsdatum (> myStart  und <myEnd) in den Zeitraum 2020 reinfällt, dann zeige mir auch das Unternehmen mit den 'Datum Erstkontakt' aus 2019 an (und dann auch nur die zusätzlich zu den Einträgen aus 2020).

    Leider scheitere ich gerade dabei.

    Wie würdest du das machen?

     

    BTW: übrigens sehr großes Kino mit deinem Projektmanagement. Du hast gerade im Webinar erwähnt, dass man Anmerkungen bzw. Fragen stellen kann. Wie hättest du die denn gerne? Als eigenen Thread? Oder als Mail direkt an Dich? Ich wollte z.B. einen weiteren User (mich) anlegen, das wird aber nicht zugelassen

    VG Markus

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Markus, wenn du wirklich nur Jahresauswertungen machst, dann ist es sinnvoll ein Zahlenfeld Jahr im Dashboard hinzufügen dann wäre die Formel:

    ---

    if Jahr then
    let myYear:=Jahr;
    select Akquise where year(Beitrittsdatum)=myYear and (year('Datum Erstkontakt')=myYear or year('Datum Erstkontakt')=myYear-1)
    else
    select Akquise

    ---

    Mit dem Projektmanagement wollte ich zeigen, dass mit Ninox fast alles möglich ist was man sich vorstellt. Leider ist das Model nicht besonders fürs Nachmachen geeignet, weil zu viele versteckte Steuerfelder und die html Tags sind auch  icht gerade einfach zu verstehen. 

    Die Fragen sind natürlich hier im Forum besser aufgehoben als bei mir im privaten Postfach. Dafür ist das Plattform auch geschaffen worden. Wenn einer gerade keine Antwort hat, kann der Andere übernehmen.

     

    Leo

    • Markus.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Guten Morgen Leo,

    so ist es auf jeden Fall einfacher 😁 ich habe die Formel noch umgestellt, somit habe ich dann alle aus 2020 und zusätzlich noch die Unternehmen mit Abschluss 2020 aber Datum Erstkontakt in 2019

    if Jahr then
    let myYear := Jahr;
    select Akquise where year('Datum Erstkontakt') = myYear or year(Beitrittsdatum) = myYear and year('Datum Erstkontakt') = myYear - 1
    else
    select Akquise
    end

    Nur mal, um es zu verstehen:

    wenn mir jetzt z. B. die letzten 3, 6, 9 oder 12 Monate anzeigen lassen wollte, müsste ich wahrscheinlich von today() ausgehen und das Datum „auflösen", damit ich dann über ein Auswahlfeld und switch/case die Monate abziehen kann?

    Da hast du wohl Recht, dass so ein Projektmanagement immer sehr individuell und - wie in diesem Fall - auch ein wenig komplex ist. Aber trotzdem, ganz große Klasse 👍🏼

    Viele Grüße
    Markus

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Markus,

    die letzten Monate ausgehend von heute kann man so organisieren.

    1. Auswahlfeld 'Letzte Monate':

    ID1 - 3 Monate
    ID2 - 6 Monate
    ID3 - 9 Monate
    ID4 - 12 Monate
    2. Formel bei der Ansicht:

    ---

    if 'Letzte Monate' then
    let myStart:=date(year(today()),month(today())-3*number('Letzte Monate'),1) ;
    let my End:=today();
    select Akquise Beitrittsdatum>=myStart and Beitrittsdatum<=myEnd
    else
    select Akquise
    end

    ---

    Leo

    • Markus.1
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hi Leo,

    sehr cool, besten Dank. Wenn ich das so sehe, ist es „eigentlich" einfach  und logisch. Nur darauf kommen, ist da momentan für mich noch recht schwierig.

    Viele Grüße
    Markus

Content aside

  • vor 4 JahrenZuletzt aktiv
  • 11Antworten
  • 3149Ansichten