Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Masywa am Januar 07, 2015, 08:47:39

Titel: Datensätze mit Datum in Form von Datum von - bis darstellen
Beitrag von: Masywa am Januar 07, 2015, 08:47:39
Hallo,
ich habe folgende Herausforderung:

Ich habe eine Tabelle <Urlaubsliste>. Diese hat für jeden Tag Urlaub einen Datensatz pro Mitarbeiter.

Bsp.:
Datum;Name;...
02.01.2015;Meier;...
05.01.2015;Meier;...
06.01.2015;Meier;...
07.01.2015;Meier;...
02.01.2015;Lehmann;..
usw. Die Datensätze werden in dieser Form für eine Schichtplanung verwendet.

Ich möchte nun in einem Report bzw. in einem View die Datensätze in der Form <Name; Datum von; Datum bis > ausgeben.

Bsp.:
Name;Datum von;Datum bis;...
Meier;02.01.2015;02.01.2015
Meier;05.01.2015;07.01.2015
Lehmann;02.01.2015;02.01.2015

Hat jemand von Euch eine Idee?

Herzlichen Dank im voraus.
Titel: Re: Datensätze mit Datum in Form von Datum von - bis darstellen
Beitrag von: database am Januar 07, 2015, 14:01:31
Hallo,

sind die DS in der Ursprungstabelle nicht als Anfang und Ende gekennzeichnet?
Titel: Re: Datensätze mit Datum in Form von Datum von - bis darstellen
Beitrag von: ebs17 am Januar 07, 2015, 14:56:13
ZitatHat jemand von Euch eine Idee?
Ja. Ein ununterbrochener Zeitraum wird begrenzt durch einen Tag, der keinen Vorgänger hat (Beginn Zeitraum), und einen Tag, der keinen Nachfolger hat (Zeitraumende). Das kann man in einer Abfrage umsetzen:
SELECT
   T.Name,
   T.Datum AS Beginn,
   (
      SELECT
         Min(U.Datum)
      FROM
         (
            SELECT
               T1.Name,
               T1.Datum
            FROM
               34_tblDatumswerte AS T1
            WHERE
               NOT EXISTS
                  (
                     SELECT
                        NULL
                     FROM
                        34_tblDatumswerte AS X
                     WHERE
                        X.Name = T1.Name
                           AND
                        X.Datum = T1.Datum + 1
                  )
               ) AS U
      WHERE
         U.Name = T.Name
            AND
         U.Datum >= T.Datum
   ) AS Ende
FROM
   34_tblDatumswerte AS T
WHERE
   NOT EXISTS
      (
         SELECT
            NULL
         FROM
            34_tblDatumswerte AS X
         WHERE
            X.Name = T.Name
               AND
            X.Datum = T.Datum - 1
      )
Titel: Re: Datensätze mit Datum in Form von Datum von - bis darstellen
Beitrag von: Masywa am Januar 23, 2015, 09:37:50
Sorry, dass ich mich erst jetzt melde. Die Grippe.

Erst einmal Danke für den Tipp. Es funktioniert prinzipiell, aber die Performance bei über 5000 Datensätzen ist leider sehr schlecht. Ich versuche jetzt mal eine Vorselektion um die Anzahl der Datensätze zu minimieren.
Danke
Titel: Re: Datensätze mit Datum in Form von Datum von - bis darstellen
Beitrag von: ebs17 am Januar 23, 2015, 10:08:40
Neben der Begrenzung der Datenmenge (immer gute Idee) sollte man auch an eine passende Indizierung denken (auch immer):
SQL ist leicht ( 8 ) - Index (http://www.ms-office-forum.net/forum/showthread.php?t=317707)
Titel: Re: Datensätze mit Datum in Form von Datum von - bis darstellen
Beitrag von: Masywa am Januar 23, 2015, 14:36:37
Danke für den Tipp. Habe jetzt die entsprechenden Spalten indiziert und schon geht es wie die 'Sau'. Kein Vergleich zu vorher.

Danke.