0

Dauer aller Terminfelder in einer Tabelle summieren

Guten Tag

Ich habe eine Tabelle mit etlichen Datensätzen und ein Feld davon ist ein Terminfeld.

Nun möchte ich in einer Ansicht in einem Berechnungsfeld die Summe aller Zeiträume (duration) bilden.

Hat mir da jemand einen Ansatz?

9 Antworten

null
    • rainless
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo R.J.

    das hier funktioniert prinzipiell. Es summiert alle Zeiträume aller Terminfelder auf und liefert sie in d zurück. Eventuell geht das noch eleganter, aber es geht.

    DateTable ist die Tabelle, Appointment ist das Terminfeld

    let d := timeinterval(0);
    for a in (select DateTable).Appointment do
        d := d + duration(a)
    end;
    d
    • orange_ship.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Lars, vielen Dank für die Hilfe.

    Das funktioniert soweit gut und summiert die ganze Tabelle.

    Ich brauche es jetzt aber nur für den ausgewählten Datensatz.

    Hast du da auch noch eine Idee?

      • rainless
      • vor 1 Jahr
      • Gemeldet - anzeigen

      R.J. Ich hatte verstanden, dass Du die Summe ALLER Zeiträume (d. h. aller Records) haben möchtest. Wo bleibt denn "die Summe", wenn Du es für "den ausgewählten Datensatz" (also ein Record) machen möchtest.

      Aber es gibt zwei Möglichkeiten, je nachdem was Dir lieber ist, bzw. was Dein Bedarf ist:

      1. Neues Feld in der Tabelle, Typ formula anlegen und dort duration(Appointment) als Funktion eintragen (wobei Appointment wieder Dein Terminfeld ist). Dann hast Du die berechnete Dauer fest im Record
      2. Einfach in der Ansicht eine neue Spalte eintragen und dort eine formula mit duration(Appointment) einfügen. Dann wird die berechnete Dauer nur in der einen Ansicht angezeigt

      Passt das zu Deiner Anforderung?

    • orange_ship.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Das habe ich auch schon versucht. Aber ich erhalte da eine Fehlermeldung.
    Hier der Printscreen mit der Verknüpfung.
     

      • Torsten_Stang.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      R.J. 

      versuch mal

      sum(Ereignisse.duration(Termin))
      • rainless
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Torsten Stang weißt Du, warum man das so aufschreiben muss? Das ist doch nicht wirklich intuitiv, oder?

      • Torsten_Stang.1
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Lars ist es nicht? ;-)

       

      duration() kann nur mit einem Termin-Feld funktionieren, weil Start- und Enddatum benötigt. mit "Ereignisse.Termin" erhalte ich aber ein Array aus vielen Start- und Enddaten - ergo nichts, womit duration() klar kommt.

      Würde es in der Tabelle 'Ereignisse' bereits ein Feld mit der Dauer des Termins (ein Funktionsfeld 'Dauer' mit Code "duration(Termin)" z.B.) geben, würde ein "sum(Ereignisse.Dauer)" genügen - so muss ich aber erst mal für jeden betroffenen Datensatz in Ereignisse die Dauer der Termine ermitteln.

      • rainless
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Torsten Stang Ok, der erste Teil leuchtet ein

      Der zweite ist für mich immer noch erstaunlich. Ich verstehe was Du meinst, kann es aber nicht mal in meinem Kopf richtig erklären ... denn Termin ist ja eigentlich in dem Script gar nicht direkt ansprechbar.
      Irgendwie übergebe ich also an Ereignisse mit dem '.' die Aufforderung eine Funktion auf das Feld Termin zu machen und davon das Resultat an sum zu liefern. Faszinierend

    • orange_ship.1
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Torsten
    Unglaublich! Ich habe schon so ziemlich alle Varianten versucht "sum(duration(Ereignisse.Termin))" usw.
    Aber auf die Idee "Ereignisse.Termin" zu trennen, bin ich jetzt wirklich nicht gekommen.
    Vielen Dank!
    Jetzt versuche ich noch die Umformatierung, dass nur h und min angezeigt werden, anstelle von d, h, m.
    Mal schauen, ob ich das auch noch schaffe. ;-)

Content aside

  • Status Answered
  • vor 1 JahrZuletzt aktiv
  • 9Antworten
  • 63Ansichten
  • 3 Folge bereits