Brauche Hilfe bei einer Urlaubs-Datenbank

Schu

Grünschnabel
Hey Leute,
habe schon das ganze Internet durchforstet, aber leider nichts richtig zu meinem Thema gefunden. Bin Anfänger in Datebanken, und muss fürs Studium eine Urlaubsdatenbank schreiben, ohne VBA- und SQL- Programmierung.

Aufgabenstellung:


Aufgabenstellung_klein.jpg

Bin auch schon recht weit, aber jetzt komme ich nicht weiter.
Ich habe:
-die Tabellen: Mitarbeiter, Abteilungen, Abwesenheiten, Urlaubsanspruch, Jahre und Abwesenheitsart
-ausgerechnet, wieviele MA pro Abteilung sind, wieviele MA mindestens da sein müssen

Aber:
Ich komme mit der Datumsrechnung nicht klar. Ich brauche noch einen Vergleich, wieviele MA an einem bestimmten Tag nicht da sind.
Im Optimalfall mit einer kleinen Visualisierung alos Art Urlaubskalender.

Ich hoffe ich habe meine Problemstellung ausreichend gut formuliert.
Bitte helft mir!

Beste Grüße, Schu
 
Muss alles mit den Standartfunktionen von Access 2003 machen, also mit Tabellen und Abfragen und deren eingebauten Funtionen wie z.B.: Anzahl, Summe,... ect.
 
Ah. Access 2003. Das ist der Hinweis den ich brauchte. Mir SQL war also MS SQL oder Oracle etc. gemeint.

Annahme 1: In der Tabelle [Abwesenheiten] hast du die Mitarbeiter-ID als Long und ein [VON] und ein [BIS] jeweils als Datum.
Wieviele der MA am Tag X einen Eintrag haben.

Was du suchst ist der BEFEHL BETWEEN
SQL:
SELECT 
    COUNT(a.id) AS [anzahl_abwesende_mitarbeiter]
FROM
    [Abwesenheiten] AS a
WHERE
    #19/09/2013# BETWEEN a.von AND a.bis
 
Zuletzt bearbeitet von einem Moderator:
Deinen Code kann man ja vllt auch als Ausdruck in der Abfrage formulieren. Aber wie kriege ich das Datum als Variable rein? Im Optimalfall würde ich gerne eine Urlaubssperre als Fhlermeldung bei einem Urlaubsantrag bekommen, wenn die Mindestzahl an MA erreicht ist.
 
Zuletzt bearbeitet:
Abfragen sind SQL! Kein MS SQL, aber ganz klar SQL. Wenn jemand was anderes behaubtet hat er keine Ahnung von MS Access. (glaub mir, ich arbeite seit Version 1, also etwa 22 Jahre, mit MS Access. Ich kenne das Ding)

Step 1:
Ersetze die Namen im folgenden SQL durch die Namen die du verwendest.
SQL:
PARAMETERS [Stichtag] DateTime;
SELECT 
    COUNT(a.id) AS [anzahl_abwesende_mitarbeiter]
FROM
    [Abwesenheiten] AS a
WHERE
    [Stichtag] BETWEEN a.von AND a.bis

Step 2:
Du erstellst eine neue Abfrage. Wenn die Quellenauswahl kommt klickst du diese weg ohne etwas auszuwählen. Dann wechselst du die Ansicht auf SQL

Step 3:
Kopieren dein angepasstes SQL in das offene weisse fenster

Step 4:
wechsle die Ansicht zurück auf Entwurf.


Du kannst natürlich auch die Abfrage mit Drag&Drop in der Entwurfsansicht zusammen schustern. Aber dort kann ich dir keine importierbare Lösung anbieten
 
Zuletzt bearbeitet von einem Moderator:
Vielen Dank. Scheint genau das zu sein was ich brauche. Aber eine Fehlermeldung habe ich noch.
Der will einen Parameter für den Stichtag.
Stichtag habe ich so gelassen. muss ich dafür noch irgendwo eine Abfrage erstellen?

SQL:
PARAMETERS [Stichtag] DateTime;

SELECT 
Count(AbwesenheitID.id) AS anzahl_abwesende_mitarbeiter

FROM 
tblAbwesenheiten AS AbwesenheitID
WHERE 
((([Stichtag]) Between [AbwesenheitID].[StartDatum] And [AbwesenheitID].[EndDatum]));
 
Zuletzt bearbeitet von einem Moderator:
Ja wollte ich, aber wie soll ich den implementieren? Hatte mir vorgestellt, in einem Formular "Urlaubsantrag" den Urlaubswunsch anzugeben. Wenn die Ateilung nicht unterbesetzt ist, sollte da eine Antwort kommen, und bei Ablehnung auch.
Muss ich dann für Stichtag noch eine neue Tabelle anlegen oder geht das auch in der selben Abfrage, oder sogar erst im Formular?
 
Zuletzt bearbeitet:
Zurück