Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: mradlmaier am Mai 11, 2010, 15:07:04

Titel: Tage auslesen, zu welchen kein Datensatz existiert
Beitrag von: mradlmaier am Mai 11, 2010, 15:07:04
Hallo,

Ich habe eine Tabelle mit einem Datumsfeld, und einigen anderen Daten dazu.
Ich würde gerne eine abfragen zu welchen Tagen noch kein Datensatz existiert.
Wie kann ich das abfragen?
Die Idee dabei ist, auf einen Blick zu sehen für welchen Tag noch kein Datensatz existiert.
Danke,
Michael
Titel: Re: Tage auslesen, zu welchen kein Datensatz existiert
Beitrag von: MzKlMu am Mai 11, 2010, 15:26:16
Hallo,
brauchst Du alle Tage, mit Samstagen/Sonntagen oder ohne?

In jedem Fall würde ich aber eine Hilfstabelle anlegen, die alle erforderlichen Tage enthält, nur diese eine Spalte.

Eine Abfrage würde dann so aussehen:

SELECT   Datum, Hilfstabelle.SollDatum
FROM     TabellenName RIGHT JOIN Hilfstabelle ON TabellenName .Datum = Hilfstabelle.SollDatum
WHERE    Datum Is Null
ORDER BY Datum;


Das ist dann SQL und mit Abstand auch die schnellste Methode.

Nachtrag:
Die Hilfstabelle kannst Du Dir ganz einfach in Excel für einen 10 Jahreszeitraum (z.B. sind nur 3650 DS) erstellen und in Access importieren.
Mit einer Bedingung in der Spalte "Solldatum" kann problemlos ein Zeitraum gefiltert werden.
Titel: Re: Tage auslesen, zu welchen kein Datensatz existiert
Beitrag von: mradlmaier am Mai 11, 2010, 18:18:26
Alle Tage...und jeden neuen Tag obendrein dazu...darin liegt das problem...wie krieg ich den ms-access dazu die neuen tage automatisch anzulegen? autoexec? trigger gibts ja nicht in access....

Zitat von: MzKlMu am Mai 11, 2010, 15:26:16
Hallo,
brauchst Du alle Tage, mit Samstagen/Sonntagen oder ohne?

In jedem Fall würde ich aber eine Hilfstabelle anlegen, die alle erforderlichen Tage enthält, nur diese eine Spalte.

Eine Abfrage würde dann so aussehen:

SELECT   Datum, Hilfstabelle.SollDatum
FROM     TabellenName RIGHT JOIN Hilfstabelle ON TabellenName .Datum = Hilfstabelle.SollDatum
WHERE    Datum Is Null
ORDER BY Datum;


Das ist dann SQL und mit Abstand auch die schnellste Methode.

Nachtrag:
Die Hilfstabelle kannst Du Dir ganz einfach in Excel für einen 10 Jahreszeitraum (z.B. sind nur 3650 DS) erstellen und in Access importieren.
Mit einer Bedingung in der Spalte "Solldatum" kann problemlos ein Zeitraum gefiltert werden.

Titel: Re: Tage auslesen, zu welchen kein Datensatz existiert
Beitrag von: MzKlMu am Mai 11, 2010, 18:29:47
Hallo,
Zitatwie krieg ich den ms-access dazu die neuen tage automatisch anzulegen?
Diese Frage stellt sich erst gar nicht. Die Hilfstabelle umfasst alle Datumswerte bis zum St.Nimmerleinstag. Da wird nichts angefügt.
Also eine Hilfstabelle über 10 Jahre z.B. vom 1.1.2008 bis 31.12.2018 oder auch einen beliebig größeren (aber sinnvollen Bereich).
11000 Datumswerte wären einen Bereich von rund 30 Jahren. 11000 Datensätze sind rund 88000 Byte (88KB) das ist vernachlässigbar.
Diese Tabelle ist einfach immer in voller Datensatzzahl vorhanden.

Eine Abfrage kann auch automatisch die Wochenenden rausfallen lassen. Alles kein Problem.

Die Hilfstabelle ist übrigens durchaus eine gängige Methode für ein solches Problem.
Titel: Re: Tage auslesen, zu welchen kein Datensatz existiert
Beitrag von: mradlmaier am Mai 11, 2010, 20:49:18
O.K. das leuchtet mir ein

Zitat von: MzKlMu am Mai 11, 2010, 18:29:47
Hallo,
Zitatwie krieg ich den ms-access dazu die neuen tage automatisch anzulegen?
Diese Frage stellt sich erst gar nicht. Die Hilfstabelle umfasst alle Datumswerte bis zum St.Nimmerleinstag. Da wird nichts angefügt.
Also eine Hilfstabelle über 10 Jahre z.B. vom 1.1.2008 bis 31.12.2018 oder auch einen beliebig größeren (aber sinnvollen Bereich).
11000 Datumswerte wären einen Bereich von rund 30 Jahren. 11000 Datensätze sind rund 88000 Byte (88KB) das ist vernachlässigbar.
Diese Tabelle ist einfach immer in voller Datensatzzahl vorhanden.

Eine Abfrage kann auch automatisch die Wochenenden rausfallen lassen. Alles kein Problem.

Die Hilfstabelle ist übrigens durchaus eine gängige Methode für ein solches Problem.