Hallo Zusammen :)
ich arbeite für meine Firma an der Verbesserung einer Urlaubsplanung. Ich habe das Programm übernommen. Derzeit kann sich jeder Mitarbeiter seine Jahresübersicht anzeigen lassen. Dort erscheint dann, Urlaub, Nicht Einsetzbar, Freiwunsch, Resturlaub und Tauschen.
Die Daten dazu stehen in 40 einzelnen Tabellen für jeden Mitarbeiter eine. Dort steht der Mitarbeiter Name und das Datum an dem er Abwesend ist.
Ich brauch nun eine Übersicht in der alle Mitarbeiter angezeigt werden in einer Monatanschicht die man am besten blättern können sollte Januar, Februar und so weiter. Wie fasse ich die Daten aus den 40 Tabellen in einer Abfrage am besten zusammen.
So sollte es aussehen:
Mitarbeiter 1 2 3 4 5 6.....
Maxi U RU U
Birgit RU NE U
Klaus NE U
freie tage sollten dann überhaupt keine Einträge haben. Ich hoffe ihr könnt mir weiter helfen. Vielen dank auf jeden Fall schon ein mal.
mfg
Sebastian
Hallo, guten Morgen,
ZitatWie fasse ich die Daten aus den 40 Tabellen in einer Abfrage am besten zusammen.
:o
Sorry, wenn ich das mal so lapidar beantworte - am Besten gar nicht.
Ein gangbarer Weg wäre 39 UNIONS zu fabrizieren was aber der absolute Megahammer ist. :o :o
Wenn du mit dem Ding effizient - und das über einen längeren Zeitraum - arbeiten willst, kann ich dir nur empfehlen das Datenmodell SCHNELLSTENS zu berichtigen.
Hierbei machst du aus den 40 Tabellen dann eine einzige, in denen die Personalnummer oder die MA-Namen (nicht in einem Feld zusammengefasst!) der Unterscheidung dienen, Primärschlüsel Autowert. Einträge zu den Abwesenheitsbezeichnungen holst du aus einer eigenen Tabelle und bindest den Primärschlüssel als ForeignKey in diese Tabelle ein.
Abwesenheitsdatum wie bisher.
Die Übersicht KÖNNTEST du dann entweder mittels Bericht erzeugen, wobei der Aufruf mit Angabe des gewünschten Monats erfolgt
oder du stellst die Monate in einem Formular zur Übersicht mit Hilfe eines Registersteuerelements dar.
So wie die DB momentan gestaltet ist, wirst du auf Dauer nicht glücklich werden.
HTH
Peter
Hallo,
ja dito, für jeden MA eine Tabelle ist Quatsch. Man stelle sich das bei einem Konzern wie Siemens mal vor.
Also alle MA in EINE Tabelle packen, dann kann man auch vernünftig arbeiten.
Gruß Andreas
Was steht in meiner Signatur? :D
Aber eine Tabelle reicht ja nicht. wir wollen ja die Mitarbeiternahmen nicht 100x eintragen. und ablegen, welcher Mitarbeiter an welchem Tag was beantragt hat.
Also:
tbl_Mitarbeiter
- MitarbeiterID (Autowert)
- Name (Text, 30 Zeichen)
tbl_Buchung
- BuchungID
- MitarbeiterID
- Datum
- Wert
Erfassung der Buchungen:
Du baust ein Hauptformular über die Mitarbeiter, dazu ein Unterformular über die Buchungsdaten mit Verknüpfung über die MitarbeiterID.
Guten Morgen,
Zitat- Name (Text, 30 Zeichen)
Hier bitte aufteilen in Vorname und Nachname (1. NF!)
Zitat- Datum
Und da BDatum oder Buchungsdatum als Feldnamen verwenden
Es gilt immer die Regel keine reservierten Bezeichner und / oder Sonderzeichen in Feldnamen zu verwenden!
Grüße
Hallo Sebastian,
wäre schön wenn Du dich meldest ob das Problem noch ansteht.
Meine "Vorredner" wollen Dich nicht schlecht machen sondern nur helfen. Und es ist halt so das Acc kein Excel ist.
Gruß
Johann
Hallo,
erstmal vielen dank zu den vielen Vorschlägen. ich selber finde es auch schwachsinn diese viele Tabellen zu haben. Aber ich habe ehrlich gesagt keine Lust 4 Jahre Urlaubsdaten umzuschreiben etc.
ich selber kenne mich zwar schon recht gut mit Access aus aber was sind Unions?
Das Problem ist das mein Chef auf eine schnelle Lösung drängt leider. Die Datenbank hat schon ein tool wo sich jeder MA z.B. seine Jahresnasicht anzeigen lassen kann. Kann man das nicht irgendwie kopieren umändern das so alle MA auf einer Übersicht anzeigen lassen kann?
vielen dank
Sebastian
[Anhang gelöscht durch Administrator]
Hallo,
ZitatKann man das nicht irgendwie kopieren umändern das so alle MA auf einer Übersicht anzeigen lassen kann?
Dazu musst Du erst mal alle Mitarbeiter in einer Tabelle haben. Und dazu musst Du eine Unionabfrage erstellen, die die 40 Tabellen zu einer macht.
Diese Unionabfrage (siehe Access Hilfe) musst Du direkt in SQL machen, Unionabfragen kann man nicht mit dem Abfrageentwurf von Access machen.
ZitatAber ich habe ehrlich gesagt keine Lust 4 Jahre Urlaubsdaten umzuschreiben etc.
Das liese sich mit Anfügeabfragen in einer einmaligen Aktion auch automatisieren.
Und die Unionabfrage ist auch Aufwand.
Die 40 Tabellen sind jedenfalls Krampf.
Hallo,
Zitatwas sind Unions?
Mit Hilfe einer UNION Abfrage können unterschiedliche Tabellen in einem gemeinsamen Abfrageergebnis dargestellt werden.
Um eine zusammenhängende Liste deiner Tabellen zu erstellen wäre eine Abfrage in dieser Form PER SQL notwendig.
39 Unions deswegen, weil bei 40 Tabellen 39 Verbindungen per UNION notwendig sein würden
SELECT * FROM Tabelle1
UNION
SELECT * FROM Tabelle2
...wobei die Spaltenanzahl der Tabellen die gleiche sein MUSS,
Die Spaltenüberschriften stammen aus der 1. Tabelle
ZitatAber ich habe ehrlich gesagt keine Lust 4 Jahre Urlaubsdaten umzuschreiben etc
Hier ließe sich bei näherer Betrachtung ev. ein gewisser 'Automatismus' per VBA programmieren... ???
ZitatDas Problem ist das mein Chef auf eine schnelle Lösung drängt
Diese Problem haben alle Chefs an sich - das bekommen die im Zuge der Managementausbildung so eingeimpft, ist nicht weiter besorgniserregend jedoch generell unheilbar.
Wenn die Schnelle nicht richtig funktioniert - was dann in der Regel ganz einfach so ist - passt's auch nicht ... daher 8)
ZitatKann man das nicht irgendwie kopieren umändern das so alle MA auf einer Übersicht anzeigen lassen kann
In meiner Glasmurmel sehe ich das
Tool nicht recht deutlich, gehe daher davon aus, dass es ein Bericht sein wird.
Nun ist es so, dass ein Bericht
MEIST eine Abfrage als Datenherkunft besitzt.
Wenn du nun aus 40 Tabellen die Daten zusammenrammeln willst, dann benötigst du eine Abfrage, die diese 40 Tabellen miteinander verbindet.
Nachdem laut Herstellerspezifikation Access maximal 32 Tabellen in einer Abfrage verwalten kann --- glaube ICH zumindest --- kannst du dieses Vorhaben in den Fluss werfen.
Ob's dann deinem Chef gefallen wird oder nicht - die Schnelle wird's nicht werden! ...und verweise bei der Gelegenheit nochmal auf meine erste Antwort.
Grüße
Zitat von: database am November 17, 2010, 08:51:27
Zitat- Name (Text, 30 Zeichen)
Hier bitte aufteilen in Vorname und Nachname (1. NF!)
Zitat- Datum
Und da BDatum oder Buchungsdatum als Feldnamen verwenden
Es gilt immer die Regel keine reservierten Bezeichner und / oder Sonderzeichen in Feldnamen zu verwenden!
Danke fürs Aufpassen.
Aber bitte - gleichfalls ;)