Guten Morgen.
Ich überlege mir derzeit wie ich folgendes am besten mit Access erstelle:
Es geht z.B. um eine Projektdatenbank.
Wichtig: Ein Projekt ist immer einer Kategorie zugeordnet.
Ich möchte die Projekte eintragen und die dazugehörige Kategorie. Desweiteren will ich für jeden Mitarbeiter zu jedem Monat die Stunden eintragen die er an dem Projekt gearbeitet hat.
Soweit eigentlich kein Problem, ich hatte das mit einer Tabelle gelöst. Leider will es dann mit dem nächsten Vorhaben nicht klappen:
Ich möchte mir nun mit einer Ausgabe, anzeigen lassen, wie viel ALLE Mitarbeiter für eine Kategorie (die ja mehrere Projekte umfasst) gearbeitet haben.
Ich habe bisher versucht:
Spalten addieren. Leider funktioniert das bei mir nicht so wie ich es will. Wenn ich [Spalte1]+[Spalte2] addiere, setzt er nur die Werte nebeneinander. Also aus [15]+[24] wird = 1524.
Müsste ich vielleicht mit mehreren Tabellen arbeiten? Wenn ja, muss ich für jeden Mitarbeiter oder für jedes Projekt eine Tabelle anlege`? Ich hoffe ihr habt meine Frage verstanden und könnt mir helfen.
Hallo,
vermutlich hast Du für Spalte1 und 2 den Datentyp Text genommen. Hier ist Zahl (Double) erforderlich.
Bitte erkläre mal genauer, welche Tabellen Du hast.
Was ist eine Kategorie?
Du wirst mehrere Tabellen brauchen:
Mitarbeiter
Projekt
Kategorie
Zeiterfassung
Eher noch mehr.
Momentan versuche ich es mit einer Tabelle.
Sie sieht etwa so aus:
Projekt | Nr | Kategorie | Verantwortlicher | Jan_Mitarbeiter1 | Feb_Mitarbeiter1 | Jan_Mitarbeiter2 | Feb_Mitarbeiter2 |
[/table]
Die Kategorie muss man als Filteroption verstehen. Ich möchte mir ja später anzeigen lassen, wie viele Stunden für eine Kategorie gearbeitet wurde.
Ich stelle mir vor, mit mehreren Tabellen wird die Dateneingabe und Ausgabe wohl einiges schwieriger. :(
Hallo,
das geht nicht mit einer Tabelle, es sind mindestens die 4 Tabellen wie oben angesprochen erforderlich.
ZitatVerantwortlicher Jan_Mitarbeiter1 Feb_Mitarbeiter1 Jan_Mitarbeiter2 Feb_Mitarbeiter2
Das ist völlig daneben.
Die Stunden sind in einer extra Tabelle zu erfassen, mit einem Fremdschlüssel zum Projekt und einem Fremdschlüssel zum Mitarbeiter. Sowie je ein Feld für den Monat (mit Jahr !) und die Stunden. Jeder Eintrag gibt einen Datensatz.
Bitte erkläre mal die Kategorie genauer, wieso die Stunden je Kategorie und nicht je Projekt?
Die Stunden gehören schon zu den Projekten. Das stimmt. Allerdings ist jedes Projekt einer Kategorie zugeordnet.
Projekt A, Kategorie B
Projekt B, Kategorie B
Projekt C, Kategorie B
Projekt D, Kategorie C
Projekt E, Kategorie C
Ich möchte aber später abfragen: Zeige mir die Stunden von Kategorie C.
Das heisst also die Stunden von Projekt D und Projekt E zusammen, ist mein gesuchtes Ergebnis.
Hoffe es ist so verständlich.
edit:
Das mit dem addieren lag an dem Datentyp. Danke. Theoretisch habe ich nun dass was ich will. Allerdings ist es halt schon einfach aufgebaut.
Hallo,
dann beschäftige Dich mit meinen Hinweisen. Mit einer Tabelle wird das nix. Da könntest Du das auch mit Excel machen.
Eine Tabelle ist noch keine Datenbank. Eine Datenbank besteht aus mehreren Tabellen die untereinander in Beziehung stehen.
Der User DF6GL (Franz) hier im Forum hat Links in seiner Signatur, mit denen Du Dich unbedingt beschäftigen solltest.
Du hast recht. Bisher ist es auch in Excel vorhanden. Allerdings kann man mit Access Eingabemasken erstellen oder Ausgaben erstellen was es halt deutlich vereinfacht.
Wenn ich mit mehreren Tabellen und trotzdem nur einem Formular für die Dateneingabe arbeiten kann, versuche ich es gerne so. Das müsste einfach möglich sein.
Hallo,
auch mit mehreren Tabellen wird die Datenerfassung in einem Formular möglich sein. Es wird allerding ein Hauptformular (Projekt) und darin ein Unterformular für die Erfassung der Zeiten notwendig sein.
Mit der Zuordnung der Kategorie gehe ich noch nicht einig. Welche Bedeutung hat denn die Kategorie?
PS:
Man kann keine Excel Anwendung nach Access umsetzen ohne die Tabellenstruktur zu ändern.
Access erfordert eine völlig andere Denkweise. Zwischen Access und Excel gibt es so gut wie keine Gemeinsamkeiten.
Nehmen wir das Beispiel anhand einer Studiendatenbank., dann heisst es nicht Kategorie sondern Fachbereich
Studie A, Onkologie
Studie B, Onkologie
Studie C, Neurologie
Studie D, Onkologie
Studie E, Neurologie
Ich will wissen, wie viele Stunden wurden für die Onkologie gebraucht um dann z.B. eine Rechnung zu stellen. Oder wie meinst du Bedeutung?
Anderes Thema. Mitarbeiter.
Ich weiss nicht recht, was diese Tabelle für Felder haben soll. Für jeden Mitarbeiter eine? Oder etwa nur ein Feld?
Man muss beachten dass eine Studie/Projekt mehrere Mitarbeiter haben kann.
Hallo,
kann eine Studie immer nur eine Kategorie haben, oder können das mehere Kategorien sein.
Also so:
Studie B, Onkologie
Studie B, Neurologie ?
ZitatIch weiss nicht recht, was diese Tabelle für Felder haben soll. Für jeden Mitarbeiter eine? Oder etwa nur ein Feld?
Man muss beachten dass eine Studie/Projekt mehrere Mitarbeiter haben kann.
In die Mitarbeitertabelle kommen nur die reinen Daten des Mitarbeiters, sonst nichts. In eine Tabelle.
Weiterhin wird eine Zwischentabelle gebraucht, in der die Projekte einem Mitarbeiter zugeordnet werden. Das gibt eine n:m Beziehung zwischen Mitarbeiter und Projekt. In dieser Zwischentabelle wird aber nur der Primärschlüssel der Mitarbeitertabelle und der Projekttabelle als Fremdschlüssel gespeichert. Jede Zuordnung ist ein Datensatz.
Hat ein Projekt 5 Mitarbeiter gibt es in der Zwischentabelle 5 Datensätze.
Eine Studie kann nur eine Kategorie haben.
Hallo,
ZitatEine Studie kann nur eine Kategorie haben.
Dann habe ich meine Antwort nichts mehr hizuzufügen.
Baue die DB entsprechend auf.
Jetzt wird mir vieles klarer. Vielen Dank für die Hilfe bisher. Diese Seite http://www.php-kurs.com/datenstrukur-grafisch-darstellen-streifendiagramm.htm (http://www.php-kurs.com/datenstrukur-grafisch-darstellen-streifendiagramm.htm) fand ich sehr hilfreich da die Beziehungen bildlich dargestellt werden.
Ich habe eine PDF angehängt die meine Beziehungen anzeigt. Ich wäre froh wenn jemand sagen kann, ob ich auf dem richtigen Weg bin ;D
[Anhang gelöscht durch Administrator]
Hallo,
nein, das ist falsch und zwar drastisch.
Wiese setzt Du die Stunden-ID mit Studie in Beziehung? Ist aber egal, die Stundentabelle ist sowieso überflüssig, die Stunden kommen in die Tabelle Mitarbeiter_Studie.
Für die Beziehungen ist referentielle Integrität einzustellen.
Keine Nachschlagefelder in Tabellen verwenden (falls Du welche hast).
Wo sind denn die Kategorien geblieben, auch dazu wird eine Tabelle gebraucht.
Keine Sonderzeichen in Feldnamen ( + - etc), Name ist ein reserviertes Wort und für eigene Namesvergaben tabu.
Morgen
Die Tabelle Mitarbeiter_Studie ist eine Zwischentabelle, muss ich wirklich da die Stunden eintragen? Dachte die dient nur zur Zuweisung.
Nachschlagefelder verwende ich keine.
Hallo,
die Stunden müssen in die Zwischentabelle, das ist ja (auch) der Sinn der Zwischentabelle, die Stunden für die Kombination Mitarbeiter-Studie zu erfassen. Für den Zeitraum würde ich ein Datum verwenden, nicht Monat + Jahr. Notfalls mit dem 1. oder 15. eines Monats.
Warum beantwortest Du nicht alle Fragen?
ZitatWo sind denn die Kategorien geblieben,
Lade lieber die DB hoch, statt eines PDF.
Ich dachte, die Kategorie bzw. Fachbabteilung kann man in die Tabelle "Projekt/Studie" eintragen. Gehen wir bitte nun nur noch vom Beispiel "Studie/Fachabteilung" aus.
Ich habe mir einge Fragen gestellt und bin auf das gekommen:
Studie
Eine Studie hat eine Fachabteilung
Eine Studie kann mehrere Mitarbeiter haben
Eine Studie hat einen Hauptverantwortlichen
Eine Studie hat eine Nummer
Eine Studie kann nur einen Hauptverantwortlichen haben
Fachabteilung
Eine Fachabteilung hat mehrere Studien
Mitarbeiter
Ein Mitarbeiter hat mehrere Studien
Hauptverantwortlicher
Ein Hauptverantwortlicher kann mehrere Studien haben
Muss ich für den Hauptverantwortlichen auch eine Tabelle machen?
Wenn ja, dann ist es vom Typ her dieselbe Tabelle wie "Fachabteilungen". Aber was für eine Beziehung haben diese Tabellen?
Und bei der Tabelle "Mitarbeiter_Studie" bräuchte ich fast ein konkretes Beispiel mit den Stunden.
Der Plan / Gedanke:
tblStudie
StudieID (Primärschlüssel)
Studienname
Nummer
Hauptverantwortlicher_f (Fremdschlüssel zu ,,HauptverantwortlicherID")
Fachabteilung_f (Fremdschlüssel zu ,,FachabteilungID")
tblFachabteilung
FachabteilungID (Primärschlüssel)
Fachabteilungsname
tblHauptverantwortlicher
HauptverantwortlicherID (Primärschlüssel)
HauptverantwortlicherName
tblMitarbeiter
MitarbeiterID (Primärschlüssel)
NameVorname (Fremdschlüssel zu ,,Mitarbeiter_f")
Funktion
tblMitarbeiter_Studie (Zwischentabelle)
Mitarbeiter_f (Fremdschlüssel zu ,,Mitarbeiter-ID")
StudieID_f (Fremdschlüssel zu ,,Studie-ID")
Im Anhang die DB.
Hallo,
ich kann das Zip Archiv nicht öffnen.
Konvertiere die DB nach Access2003, mit Access2007/2010 bin ich nicht so vertraut.
Noch einige Anmerkungen:
Die Stunden mit Datum müssen in die Zwischentabelle, ein Feld für die Stunden (Datentyp Double) und ein Feld für das Datum.
Die Tabelle für die Hauptverantwortlichen ist überflüssig. Die Mitarbeitertabelle reicht.
NameVorname ist kein Schlüsselfeld.
Ich sehe die Tabellen wie folgt:
tblStudie
StudieID (Primärschlüssel)
Studienname
Nummer
Hauptverantwortlicher_f (Fremdschlüssel zu ,,MitarbeiterID")
Fachabteilung_f (Fremdschlüssel zu ,,FachabteilungID")
tblFachabteilung
FachabteilungID (Primärschlüssel)
Fachabteilungsname
tblMitarbeiter
MitarbeiterID (Primärschlüssel)
NameVorname (was willst Du hier mit einem Fremdschlüssel?)
Funktion
tblMitarbeiter_Studie (Zwischentabelle)
Mitarbeiter_f (Fremdschlüssel zu ,,MitarbeiterID")
StudieID_f (Fremdschlüssel zu ,,StudieID")
Stunden
BuchungsMonat (Als Datum !!)
Danke für deine Antwort.
Ich sehe dass ich den "Hauptverantwortlichen" genauer hätte erläutern müssen. Dieser ist kein Mitarbeiter sondern sozusagen eine externe Person.
Und zu den Stunden. Wenn ich es so mache wie du es vorschlägst, kann ich dann noch für jeden Monat einzeln die Stunden eintragen? Ich dachte, das müsste in einem Datensatz gemacht werden, die Felder wären dann Jan, Feb etc.
Oder denke ich hier wieder an Excel? Kann ich all die einzelnen Datensätze schlussendlich so anzeigen lassen, dass dasselbe Ergebnis dabei rauskommt?
Der Fremdschlüssel bei "NameVorname" war wohl ein Denkfehler. Hat mir beim überprüfen auch kein Sinn ergeben.
Hallo,
ZitatIch dachte, das müsste in einem Datensatz gemacht werden, die Felder wären dann Jan, Feb etc.
Oder denke ich hier wieder an Excel?
Genau, das ist Exceldenke und falsch. Wie soll denn die Stundenerfassung fortgeführt werden, Du brauchst doch auch das Jahr. Legst Du dann die felder Jan11, Feb11, Mär11...........Jan20, Feb20 usw. an?
Eine DB wächtst durch die Daten immer nach unten (Zeilen=Datensätze) und niemals in die Breite (Spalten=Felder). Es sei denn, man hat ein Feld vergessen.
Zum HV:
ZitatDieser ist kein Mitarbeiter sondern sozusagen eine externe Person.
Mann kann das trotzdem in einer Tabelle führen, das hängt von den benötigten Feldern ab.
Was wird zu einem HV erfasst?
Was wird zu einem Mitarbeiter erfasst?
Ich möchte den HV wie die Fachabteilung behandeln. Beides kann in mehreren Studien vorkommen. Bei der Dateneingabe nutze ich dann eine Drop-Downliste.
Zu einem HV wird wie zur Kategorie eigentlich nichts erfasst, sie werden lediglich zugewiesen.
Zu einem Mitarbeiter werden hauptsächlich die Stunden erfasst.
Zu den Stunden.
Ich dachte mir dass in einem Datensatz die Monate vorkommen und in einem Feld das Jahr.
Jahr ¦ Jan ¦ Feb ¦
2011¦15 ¦ 30 ¦
Hallo,
ZitatIch möchte den HV wie die Fachabteilung behandeln. Beides kann in mehreren Studien vorkommen. Bei der Dateneingabe nutze ich dann eine Drop-Downliste.
Das hat mit den Tabellen nichts zu tun.
ZitatZu einem HV wird wie zur Kategorie eigentlich nichts erfasst, sie werden lediglich zugewiesen.
Zu einem Mitarbeiter werden hauptsächlich die Stunden erfasst.
So war die Frage nicht gemeint. Ich wollte wissen welche Infos zu einem Mitarbeiter und welche Infos zu einem HV erfasst werden.
Mitarbeiter: NameVorname ??
HV: NameVorname ??
ZitatIch dachte mir dass in einem Datensatz die Monate vorkommen und in einem Feld das Jahr.
Jahr ¦ Jan ¦ Feb ¦
2011¦15 ¦ 30 ¦
Nein, falsch.
So:
MitarbeiterID_F StudieID_F Buchungsdatum Stunden
1 1 02.10.2011 2
1 1 03.10.2011 3
1 1 04.10.2011 4
1 2 02.10.2011 5
1 2 03.10.2011 2
1 2 04.10.2011 2
usw. immer fortlaufend, auf immer und ewig.
Eine erfassung mit vollem Datum kann auch monatsweise ausgewertet werden. Wenn Du keinen Tag hast, nimmst Du den 15. eines Monats.
ZitatSo war die Frage nicht gemeint. Ich wollte wissen welche Infos zu einem Mitarbeiter und welche Infos zu einem HV erfasst werden.
Mitarbeiter: NameVorname ??
HV: NameVorname ??
Genau so.
ZitatEine erfassung mit vollem Datum kann auch monatsweise ausgewertet werden. Wenn Du keinen Tag hast, nimmst Du den 15. eines Monats.
Ja, ich würde dann den 15. nehmen.
Hall0,
dann ändere die Tabellen wie folgt:
tblStudie
StudieID (Primärschlüssel)
Studienname
Nummer
Hauptverantwortlicher_f (Fremdschlüssel zu ,,PersonID")
Fachabteilung_f (Fremdschlüssel zu ,,FachabteilungID")
tblFachabteilung
FachabteilungID (Primärschlüssel)
Fachabteilungsname
tblPersonen
PersonID (Primärschlüssel)
NameVorname
Extern (Ja/Nein Feld)
Funktion
tblPerson_Studie (Zwischentabelle)
Person_f (Fremdschlüssel zu ,,PersonID")
StudieID_f (Fremdschlüssel zu ,,StudieID")
Stunden
BuchungsDatum
Ich würde es eigentlich gerne so lassen wie ich es jetzt habe. Würde es den Vorteile mit der neuen Variante geben?
Ich habe nun zwei Formulare erstellt um zu sehen wie es in etwa aussehen könnte.
Was ich bisher noch nicht auf Anhieb erreichen konnte, war die Abfrage an Stunden für eine Fachabteilung.
Hallo,
"gerne so lassen wie ich es jetzt habe."
naja, dann lass es doch so. Der Tabellenaufbau ist doch identisch mit dem von Klaus vorgeschlagenen...
Lediglich die Verknüpfungsarten solltest Du überall auf "1" setzen und für die Detailtabelle (tbl_Mitarbeiter_Studie) ein EndlosFORMULAR (anstelle einer TAbellenansicht) als UFO im Einzel-Formular (Haupttabelle tbl_Studie) einsetzen. Für Felder, deren Wert aus den Stammtabellen (z. B. tbl_Mitarbeiter) ausgewählt werden kann/soll, bieten sich Kombifelder an.
Weiterhin ist die Verwendung von Hyperlinks zum Öffnen anderer Access-Objekte nicht zu empfehlen.
btw: Bessere Benamsung der Formulare wäre auch angebracht. (nicht "tbl_" als Prefix bei einem Formular benutzen, "frm_" wäre passender und weniger verwirrend.)
Hallo
Ich habe versucht all die Tipps zumzusetzten. Es sieht schon um einiges besser aus.
Allerdings finde ich die Eingabe der Stunden bzw. die Darstellung mit dem "15.01.2011" etc. etwas ungewöhnlich. Mich nimmt es wunder wie dass dann in der Praxis aussieht wenn ende Jahr 3 Leute an einer Studie gearbeitet haben.
Wie auch immer, vielen Dank euch beiden.
Jetzt happerts noch bei der Abfrage. Mit meiner ursprünglichen Vorgehensweise konnte ich den Gesamtstundenaufwand für eine Fachabteilung anzeigen lassen. Da nun die Struktur etc. nicht mehr gleich ist, weiss ich nicht genau wie ich vorgehen muss.
Hallo,
naja, es ist kaum einer der Tipps umgesetzt, speziell der der (Endlos-)Formulare anstelle der Tabellenansicht.
Mit Formularen kannst Du der Layout-Formatierung (Datenanzeige,-eingabe,-überprüfungen) freien Lauf lassen. Ein bisschen VBA-Programmierung(skenntnisse) wäre dabei nicht schlecht...
"..wie ich vorgehen muss."
Geh in den Abfrageentwurf, füge die nötigen (beteiligten) Tabellen hinzu, gruppiere evtl. nach einem bestimmten Feld ( hier z. B. die Fachabteilung(-ID) ) und stelle "Summe" für das Feld "Stunden" ein.
Evtl. sind Kriterienwerte für die Eingrenzung der DS noch nötig (z. B. ein Datumsbereich).
Aktuelle Gersamtstunden einer Studie können auch direkt im Unterformular (siehe oben) berechnet und angezeigt werden.
Hallo,
ZitatAllerdings finde ich die Eingabe der Stunden bzw. die Darstellung mit dem "15.01.2011" etc. etwas ungewöhnlich. Mich nimmt es wunder wie dass dann in der Praxis aussieht wenn ende Jahr 3 Leute an einer Studie gearbeitet haben.
Was nimmt Dich da Wunder und was genau findest Du ungewöhnlich?
Wenn man Daten hat, die auf einem Datum bassieren (und das tun sie ja, auch wenn nur Monat und Jahr gebraucht werden) sollte man immer ein Datum verwenden. Es vereinfacht vieles, weil man von einem Datum problemlos 5 Monate addieren oder abziehen kann. Das kann für Auswertungen durchaus wichtig werden. Z.B. wie viele Stunden vom Oktober 2011 bis Februar 2012. Versuche das mal mit nur Monat und Jahr?
Übrigens kannst Du das Feld durchaus so formtieren, dass nur Monat und Jahr
angezeigt wird.
Ich würde Dir trotzdem raten, die Personen (Mitarbeiter und HV) in einer Tabelle zu führen, es vereinfacht die Datenpflege.
Zitat von: DF6GL am Oktober 05, 2011, 16:35:24
Hallo,
naja, es ist kaum einer der Tipps umgesetzt, speziell der der (Endlos-)Formulare anstelle der Tabellenansicht.
Was verstehst du denn unter Endlos-Formular? Das Formular "Mitarbeiter_Studie" erweiter sich ja selbständig mit jedem weiteren Datensatz.
Die Abfrage mit den Stunden funktioniert nun. Da fehlte eine Tabelle weshalb es wohl mit den Beziehungen nicht geklappt hat.
@MzK|Mu
Die Datenbank wird nicht so gross werden. Mitarbeiter bleibt unter 20 und Verantwortliche wird es auch nicht mehr wie 50 geben. Ich lasse es deswegen lieber so. Die Abfrage der Daten wäre für mich wieder komplizierter wenn ich die Mitarbeiter und Verantwortlichen in einer Tabelle habe.
Die Darstellung finde ich nur ungewöhnlich weil ich mich gewohnt war, Jan - Dez auf einmal zu sehen.
Es wäre optimal wenn ich Formular erstellen könnte, das für jeden Mitarbeiter ein Reiter hat und in jedem dieser Reiter, befindet sich ein Felder für die Monate.
Allerdings verlangt das wohl etwas an Programmierkenntnisse. Denn wenn etwas in ein Feld eingetragen wird, müsste ein Datensatz erstellt werden. Ist soetwas überhaupt möglich? Also mit einem Textfeld welches nicht direkt einem Tabellenfeld zugewiesen ist.
----
Im Anhang befindet sich die neuste DB mit dem Beispiel zu den Reitern. Das Beispiel befindet sich in dem Formular "Studien".
[Anhang gelöscht durch Administrator]
Ich möchte das ganze nun anders realisieren.
Im Hauptformular oder Unterformular sollen zwei Kombinationsfelder als Filter dienen. Im einen werden die Namen der Mitarbeiter gelistet, im anderen die Jahre.
Den Code den ich bisher gefunden habe:
Private Sub Mitarbeiterauswahl_AfterUpdate()
Me!Stunden.Form.Filter = "Mitarbeiter = " & Me!Mitarbeiterauswahl
Me!Stunden.Form.FilterOn = True
End Sub
Stunden = Name Unterformular
Mitarbeiter = Kombinationsfeld im Unterformular
Mitarbeiterauswahl = Kombinationsfeld im Hauptformular (Soll im Kombifeld "Mitarbeiter" die Namen filtern)
Leider funktioniert das noch nicht so wirklich. Ich kann zwar die Namen auswählen aber dann erscheint ein PopUp "Parameterwert eingeben".
In diesem Fall befindet sich das Kombifeld im Hauptformular. Muss ich noch irgendwo etwas anfügen um das Unterformular ansprechen zu können?
Hallo,
warum willst Du das nun "anders" (Wie anders, andere Tabellen, andere Formular-Konstruktion?) lösen?? Statt da zu drehen, sorg zunächst dafür, dass die DB mit Standard-Mitteln/Methoden prinzipiell richtig läuft. Danach kannst Du Dir "andere" Bedienungsformen/-abläufe überlegen.
Zur Frage:
ZitatMitarbeiter = Kombinationsfeld im Unterformular
Mitarbeiterauswahl = Kombinationsfeld im Hauptformular (Soll im Kombifeld "Mitarbeiter" die Namen filtern)
Im Hauptform:
Private Sub Mitarbeiterauswahl_AfterUpdate()
Me!Stunden.Mitarbeiter.Rowsource= "Select MitarbeiterID, MitarbeiterName from tblMitarbeiter where MitarbeiterName = '" & Me!Mitarbeiterauswahl & "'"
End Sub
So zumindest wäre die genaue Beantwortung Deiner Frage.. (was ich eher als Holzweg ansehe)
Was ich anders wollte ist die Formularkonstruktion. Ich möchte die Dateneingabe möglichst einfach gestalten. Dazu gehört auch, dass ich nicht jedesmal den 15. eines Monates vor das Datum setzte oder
Aber nochmal zur DB-Allgemein.
Funktionieren tut soweit alles, ich kann Daten eingeben, ich kann die Stunden mit einer Abfrage ausgeben. Die Beziehungen stimmen.
Kurz: An den Tabellen ändert sich nichts mehr.
Die Tabelle mit den Fachabteilungen erhält kein Formular da dort die Daten einmal eingegeben werden und dann sollte sich da kaum noch was ändern.
Jetzt geht es eigentlich nur noch um die Formulare und deren Funktionen.
Da dachte ich, wenn ich nach Mitarbeiter filtere, wird es viel übersichtlicher. Ich hatte es nochmal versucht mit dem neuen Code, leider kommt jetzt ein neuer Fehler.
Im Anhang ist die aktuelle DB. Den Versuch habe im im Forumlar frm_Studie gemacht.
Zitatnaja, es ist kaum einer der Tipps umgesetzt, speziell der der (Endlos-)Formulare anstelle der Tabellenansicht.
Das verstehe ich nicht. Ich habe ja ein EndlosFORMULAR eingefügt.
[Anhang gelöscht durch Administrator]
Hallo,
naja, die Tabelle tblMitarbeiter_Studie beinhaltet ja eher die "Studienbelastungen" (Stundenaufwand für eine bestimmte Studie) denn die Studienmitarbeiter
Von welchem Blickwinkel sollen denn die Daten betrachtet werden?
--Studien und deren Mitarbeiter, bzw. Stundenbelastung
--Stundenbelastung durch einen bestimmten MA
--Monatliche (oder anderer Zeitraum) Belastungen der Studien durch MAs
Die Eingabe des "Datums" kann ja noch verbessert werden, z. B. mitteld zweier ungebundener Kombis (cmbMonat, cmbJahr) mit fest eingestellten Wertlisten , aus denen das "richtige" Datum (15. des Monats) per VBA zusammengesetzt und derst dann im Datumsfeld gespeichert wird.
In Deinem Hauptform (Basis zu Tabelle tbl_Studie) solltest Du nur nach bestimmten Studien filtern...Wenn zusätzlich nach einem MA (bezogen auf eine bestimmte Studie) gefiltert werden soll , dann muss das im Unterform passieren.
"es ist kaum einer der Tipps umgesetzt" vergiss das mal. Das ist überholt.
Die Idee mit der Datumseingabe gefällt mir.
Zum Blickwinkel...
Das Grundlegende Ziel ist, anhand der Daten eine Rechnung für die Studien zu erstellen.
Oder anders gesagt, ich möchte sehen, wie viel Aufwand für eine Studie aufgebracht wurde.
Wie viele Stunden ein Mitarbeiter ansonsten gearbeitet hat, ist unwichtig, es dreht sich alles um die Studien.
ZitatIn Deinem Hauptform (Basis zu Tabelle tbl_Studie) solltest Du nur nach bestimmten Studien filtern...Wenn zusätzlich nach einem MA (bezogen auf eine bestimmte Studie) gefiltert werden soll , dann muss das im Unterform passieren.
Das heisst also, das Kombifeld im Kopf des EndlosFormular (frm_Mitareiter_Studie) einbauen anstatt im Hauptformular frm_Studie?
Hallo,
"ich möchte sehen, wie viel Aufwand für eine Studie aufgebracht wurde."
Ok, das ist aus dem Haupt/Unterform zu erkennen (bzw. zu berechnen, wenn im Unterform in dessen Fußbereich die Summe über das Stundenfeld z. B. als Ausdruck im Steuerelementinhalt eines Textfeldes berechnet wird
"Wie viele Stunden ein Mitarbeiter ansonsten gearbeitet hat, ist unwichtig"
dann brauchst Du auch nicht nach MAs zu filtern...
Huhu. Ich melde mich mal wieder.
Ich kann die Mitarbeiter nun im UFO sortieren. Dazu habe ich ein Kombifeld im Kopfbereich des UFO angelegt und folgenden Code genutz:
Private Sub cmbFilterMa_AfterUpdate()
Me.Filter = "Mitarbeiter_F Like '" & Me!cmbFilterMa & "'"
Me.FilterOn = True
End Sub
Jetzt würde ich gerne die Dateneingabe bei den Stunden vereinfachen mit dem von dir vorgeschlagenen Tipp. Ich wäre hier um Tipps dankbar. Wie kann ich zwei Kombifelder zur Dateneingabe für ein Datumsfeld nutzen?
Hallo,
falls ich richtig den ganzen Thread überflogen habe, willst Du ein Datum erstellen und abspeichern, das sich aus dem fixen 15-ten und den per Kombis ausgewählten Werten für den Monat und das Jahr ergibt.
cmbMonat:
Spaltenanzahl: 1
Herkunftstyp: Wertliste
Datensatzherkunft: 1;2;3;4;5;6;7;8;9;10;11;12
Gebundene Spalte:1
Spaltenbreiten:1cm
cmbJahr:
Spaltenanzahl: 1
Herkunftstyp: Wertliste
Datensatzherkunft: 2010;2011;2012;2013;2014;2015
Gebundene Spalte:1
Spaltenbreiten:1,5cm
Sub cmbMonat_Afterupdate()
cmbJahr_Afterupdate
End Sub
Sub cmbJahr_Afterupdate()
Me!Aufwanddatum= Dateseriell (nz(Me!cmbJahr,year(Date)), (nz(Me!cmbMonat,month(Date)), 15)
End Sub
Hallo,
Warum nicht einfach das Datums-Control mit einer Vorgabe befüllen?
Ich meine so Stundenerfassung erfolgen doch in der Regel zeitnah.
Da bietet es sich doch an den 15. des aktuellen Monats als Vorgabe anzuzeigen, oder, wenn das z.B. immer am Anfang eines Monat geschieht, den vorigen Monat.
gruss ekkehard
Wäre auch eine Möglichkeit. Ich finde jedoch rein optisch störrt die 15. Ich werde die Variante von DF6GL testen. Danke euch.
Hallo,
ZitatIch finde jedoch rein optisch störrt die 15.
Den musst Du doch gar nicht anzeigen. Wie bereits mehrfach gesagt lässt sich das über die Formateigenschft verhindern.
Es zeigt mir ja auch Januar 2011, Februar 2011 etc. an. Wenn ich aber daraufklicke bzw. die Daten eingebe, wechselt es wieder in die normale Ansicht: 15.01.2011, 15.02.2011 etc.
Me!BuchungsMonat= Dateseriell (nz(Me!cmbJahr,year(Date)), (nz(Me!cmbMonat,month(Date[color=green])), 15[/color])
Hier scheint es einen Fehler im Code um die ", 15" zu geben. Was mich auch noch aufgefallen ist, im Endlosformular ändern sich hierdurch alle Combis "Monat" auf einmal miteinander. Vielleicht liegt das aber auch weil es z.Z. noch einen Fehler im Code hat.
Hallo,
ja, eine Klammer ist zuviel:
Me!Aufwanddatum= Dateseriell (nz(Me!cmbJahr,year(Date)), ( nz(Me!cmbMonat,month(Date)), 15)
Endlosform: versteh ich nicht. Was soll sich bei den Kombis ändern?
"Wenn ich aber daraufklicke bzw. die Daten eingebe"
dann sperr dieses Feld, so dass es nicht den Fokus erhalten kann. Du brauchst da auch nichts direkt eingeben, wenn Du diese "Komfort-Eingabe" weiterhin behalten willst. Ansonsten ist das Datum nun mal der 15. des Monats (und Jahres), wie anfänglich definiert/abgesprochen.
Zitat von: DF6GL am Januar 04, 2012, 15:50:38
"Wenn ich aber daraufklicke bzw. die Daten eingebe"
dann sperr dieses Feld, so dass es nicht den Fokus erhalten kann. Du brauchst da auch nichts direkt eingeben, wenn Du diese "Komfort-Eingabe" weiterhin behalten willst. Ansonsten ist das Datum nun mal der 15. des Monats (und Jahres), wie anfänglich definiert/abgesprochen.
Dies hat sich auf den Post von MzKlMu bezogen.
Auf was bezieht sich "Dateseriell" ? Müsste ich den Namen anpassen?
Hallo,
um was (welche Probleme ) geht es jetzt eigentlich?
Derzeit ist mein Problem, dass der Code für die Datumsauswahl mit den beiden Combis nicht geht.
Darauf bezieht sich auch folgende Frage¨:
Auf was bezieht sich "Dateseriell" im Code ? Müsste ich den Namen anpassen?
"Me!Aufwanddatum=" bezieht sich auf mein Formularfeld in dem die Daten gespeichert werden, oder?
Hallo,
wie soll ich erraten, was "Nicht geht" bedeutet??
In einer VBA-Ereignisprozedur:
Me!BuchungsMonat= Dateserial (nz(Me!cmbJahr,year(Date)), (nz(Me!cmbMonat,month(Date)), 15)
Formular-Textfeld
VBA-Funktion, die aus 3 Zahlen (Jahr, Monat,Tag) ein gültiges Datum generiert
Nz-Funktion auf Formular-Kombi angewendet, damit ein "NULL"-Wert durch das Jahr des akt. Datums ersetzt wird
Dito für Monat
dito für (festen) Tag