Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: rosebud am Dezember 06, 2012, 10:05:36

Titel: Stunden mal Stundenansatz berechnen
Beitrag von: rosebud am Dezember 06, 2012, 10:05:36
Vielleicht kann mir hier jemand helfen, nachdem ich nun schon seit 3 Tagen eine Lösung versuche und im Internet nicht fündig geworden bin.
Ich benutze Access 2010 und möchte in einer Tabelle den Endbetrag, der sich aus Stundenanzahl und Stundenansatz multipliziert, errechnen. Konkret enthält meine Tabelle folgende Felder:
- Datum (Felddatentyp: Datum/Uhrzeit, Format: Datum kurz) z.B. 03.12.2012
- Beginn (Felddatentyp: Datum/Uhrzeit, Format: Zeit/24 Std) z.B. 14:15
- Ende (Felddatentyp: Datum/Uhrzeit, Format: Zeit/24 Std.) z.B. 15:45
- Dauer (Felddatentyp: Datum/Uhrzeit, Format: Zeit/24 Std.) Dieses Feld soll die Differenz zwischen Ende und Beginn berechnen. Hierzu verwendete ich den Ausdrucksgenerator
  [Ende]-[Beginn] und soll mir die Dauer in Industriezeit anzeigen, also 1.25. Soweit funktioniert das auch
- Arbeit (Dieses Feld soll aus einer anderen Tabelle nachgeschlagen werden, welches die Felder ID-Wert, Arbeit (Ablage, Telefonate, Korrespondenz), Tarif (1,2,3) und den
  Stundenansatz (50.00, 60.00, 70.00) aufweist. Mit dem Assistenten funktioniert auch das. In einem Listenfeld werden mir die Arbeiten auch angezeigt und im Feld eingetragen.
- Stundenansatz (Dieses Feld wird ebenfalls - wie unter Arbeit - aus der gleichen Tabellen entnommen. Soweit so gut.

Beim Endbetrag (Arbeit = Ablage, Stundenansatz = 60.00) soll dieses mit der Dauer multipliziert werden (1.25 * 60 = 75.00)
Hier wird mir jeweils ein Wert berechnet, der sich offensichtlich auf den Autowert-ID bezieht. Ideal wäre wenn sich der Stundenansatz automatisch eintragen lässt, nachdem ich die Arbeit ausgewählt habe (der Stundenansatz bezieht den Wert ja aus der gleichen Tabelle)

Ich habe nun schon alles mir Bekannte versucht, komme aber nicht weiter. Kann mir jemand weiterhelfen?
VIIIEEELEN DANK IM VORAUS
rosebud
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: MzKlMu am Dezember 06, 2012, 10:19:36
Hallo,
als aller erstes solltest Du mal die Nachschlagefelder aus allen Tabellen entfernen, die sind von Übel und verhindern den sauberen Aufbau einer DB. Nachschlagefelder sind in Form von Kombinationsfeldern nur in Formularen sinnvoll. Die Nachschlagefelder sind auch das Problem für die Berechnung mit der ID.
Das Feld Dauer ist in der Tabelle überflüssig. Die Dauer wird in einer Abfrage berechnet.
Du hast eine Tabelle mit den Preisen. Wenn eine Arbeit zugeordnet wird, wird der Stundensatz aus der Preistabelle genommen und redundant gespeichert. Daher fehlt in der Tabelle auch ein Feld für den Stundensatz.

Vermutlich gibt es noch mehr grundsätzliche Fehler in der DB.

Daher beschreibe bitte mal genauer deren Aufbau
- Tabellen
- Felder
- Beziehungen

Zu den Nachschlagefeldern in Tabellen:
http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern (http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern)
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: rosebud am Dezember 06, 2012, 10:32:02
@MzKIMu
Vorerst schon mal Danke für Dein schnelles Statement. Konkret habe ich folgende Tabellen:
Firmenart (Felder: ID, Firmenart (juristisch, natürlich)
Kunden (Felder: ID, Firmenname, Adresse, PLZ, Ort, Firmenart). Das Feld Firmenart ist in Beziehung mit dem Feld Firmenart aus der gleichnamigen Tabelle
Mitarbeiter (Felder: ID, Nachname, Vorname)
Stundenansätze (Felder: ID, Arbeit, Tarif, Stundenansatz)
Arbeiten (Felder: ID, Mandant - Beziehung zu Firmenname aus Tabelle Kunden, Mitarbeiter - Beziehung zu Feld Nachname aus Tabelle Mitarbeiter, Datum, Beginn, Dauer, Arbeiten - Beziehung zu Tabelle Stundenansätze Feld "Arbeit", Ansatz - Beziehung zu Feld "Stundenansatz" aus Tabelle Stundenansätze). Beziehungen sind jeweils 1:n

Reichen diese Angaben um sich ein Bild meiner Tabelle und von meinen Vorstellungen zu machen?
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: MzKlMu am Dezember 06, 2012, 10:55:19
Hallo,
Beziehungen laufen grundsätzlich über die IDs und nicht über die Klartexte. Aber vermulich ist das im Hintergrund auch so und wird wegen den unsäglcien Nachschlagefeldern irreführend dargestellt. Hast Du diese entfernt?
Überarbeite zunächst mal die Tabellen wie folgt:
Firmenart (Felder: FiArtID, Firmenart (juristisch, natürlich)
Kunden (Felder: KundenID, Firmenname, Adresse, PLZ, Ort, FiArtID_F). Das Feld FiArtID_F ist in Beziehung mit dem Feld FiArtID aus der gleichnamigen Tabelle
Mitarbeiter (Felder: MitarbeiterID, Nachname, Vorname)
StundenSatz (Felder: StundensatzID, Arbeit, Tarif, Stundenansatz)
Arbeiten (Felder: ArbeitID, KundenID_F - Beziehung zu KundenID aus Tabelle Kunden, MitarbeiterID_F - Beziehung zu Feld MitarbeiterID aus Tabelle Mitarbeiter, Datum, Beginn, Dauer, StundensatzID_F - Beziehung zu Tabelle Stundenansätze Feld StundensatzID, Stundensatz (redundant, keine Beziehung)

Eine ID muss man immer zweifelsfrei unterscheiden können, daher ist ein Name ID in allen Tabellen völlig ungeeignet. Außerdem ist es empfehlenswert an die Fremdschlüsselfelder ein _F anzuhängen.

Kann ein Auftrag eigenlich immer nur eine Arbeit umfassen?
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: rosebud am Dezember 06, 2012, 13:01:07
Danke für die Antwort. Habe die Tabellen so erstellt.
Wenn ich das jetzt richtig sehe, muss ich Formular erstellen und dort die Kombinations- bzw. Listenfelder einfügen. Und um die Arbeitsdauer (Differenz von Ende und Beginn) zu berechnen hierfür eine Abfrage mit dem Abfrageassistenten erstellen; ebenso für die Berechnung des Stundensatzes?

Wie Du richtig vermutet hast gibt es pro Auftrag nicht nur eine Arbeit (tatsächlich hat es mehr Arbeiten, wie die von mir angegebenen 3 Beispiele). Diese werden aufgelistet und für jede Arbeit soll der Aufwand als Betrag ersichtlich sein - und am Schluss sollen alle Arbeiten mit dem Betragstotal zusammengefasst werden.
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: MzKlMu am Dezember 06, 2012, 13:05:19
Hallo,
ZitatWie Du richtig vermutet hast gibt es pro Auftrag nicht nur eine Arbeit
dann ist das Datenmodell noch nicht vollständig. Es fehlt noch eine Tabelle für den eigentlichen Kundenauftrag (mit Beziehung zu Kunde) und eine Tabelle für die Erfassung der Positionen mit je einer Beziehung zu Auftrag und Arbeit. In die Tabelle kommt dann Menge und redundant der Einzelpreis.


PS:
Ich bin erst morgen wieder am Rechner.
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: rosebud am Dezember 06, 2012, 17:16:40
Das mit der zustätzlichen Tabelle für den Auftrag verstehe ich (es sind ja verschiedene Aufgaben in diesem Auftrag notwendig). Wieso aber nochmals eine separate Tabelle für die Position und wie sieht dann die Beziehung genau zu Auftrag und Arbeit aus.

Habe unterdessen auch ein Formular erstellt. Allerdings zeigen sich hier schon die nächsten Schwierigkeiten beim Erstellen von einem Kombinationsfeld bzw. von berechnenden Feldern.

Habe zur Veranschaulichung ein Printscreen von den Tabellen mit ihren Beziehungen beigefügt.

Schon jetzt einmal ein Dankeschön für Deine / Eure Geduld und den Antworten.
rosebud

[Anhang gelöscht durch Administrator]
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: Halwin am Dezember 06, 2012, 17:39:20
Hi Rosebud,

wenn ich mich nicht täusche musst du die Tabelle tab_KuAuftrPositionen (Spalte Auftraga-ID_F) mit Tabelle tab_Kundenaufträge (Spalte KuAuftrag-ID) verbinden und ie Verbindung zwischen tab_Arbeiten und tab_Kunden löschen.

Dann würde ich gefühlt behaupten, dass die Verbindung zwischen abf_arbeiten und tab_Arbeiten sinnfrei ist.
Die Abfrage würdest du dann über die Tabellen Kunde, Aufträge,Positionen,Arbeiten, Mitarbeiter erstellen. Zumindest wäre das glaube ich der "klassische" Ansatz...

Gruß
Halwin
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: rosebud am Dezember 07, 2012, 10:48:11
Hi Halwin

Habe Dein Feedback mal umgesetzt. Mit den Abfragen komme ich noch nicht klar; hab sie mit dem Abfrageassistenten erstellt, diese zeigen jedoch noch keine Ergebnisse.
Mit dem Formular sollte doch im Feld Dauer die Möglichkeit bestehen, dass dieses berechnet wird. Über welche Funktion geschieht dies?. Die Kombinationsfelder sind im Formular eingefügt.

@ MzKIMu Gestern erwähntest Du, dass das Feld "Dauer" in einer Tabelle überflüssig ist, dafür ist eine Abfrage da. Auf der Webseite von Microsoft  (http://office.microsoft.com/de-ch/access-help/einfuhrung-in-das-dateiformat-von-access-2010-HA010341788.aspx)
wird explizit darauf hingewiesen, dass mit Access 2010 Berechnungen, entgegen früheren Versionen, auch in einer Tabelle stattfinden. Entschuldige, ich will Deine Kenntnisse keineswegs in Frage stellen, bin aber etwas verwirrt.

Mein Problem ist, dass ich bis heute Abend schon mal erste Ergebnisse präsentieren kann. Mit der Datenbank selbst habe ich noch bis Ende nächster Woche Zeit. I
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: MzKlMu am Dezember 07, 2012, 13:39:55
Hallo,
ich habe mir mal Deine obiges Beziehungsbild angesehen, die Beziehungen sind fast alle völlig falsch. So kannst Du nicht weitermachen. So habe ich das auch nicht gemeint. Da lohnen sich auch keine Formulare, die kannst Du alle wieder wegschmeisen. Du hast auch einige 1:1 Beziehungen angelegt die auch unmöglich funktionieren können. Ein Abfrage im Beziehungsbild ist auch nicht üblich. In das Beziehungsbild kommen nur Tabellen.

Lade bitte die DB hier hoch, es ist mir nicht möglich die Fehler alle zu beschreiben.
DB natürlich mit anonymen Daten, nach Möglichkeit Access2003, komprimiert und dann gezippt.
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: rosebud am Dezember 07, 2012, 13:58:16
Hallo MzKIMu
Danke für das Angebot. Die DB habe ich hochgeladen, aber wie ich schon beschrieben habe ist diese in Access 2010 erstellt. Trotzdem nochmals eine Frage zu Deinem gestrigen Kommentar, dass Nachschlagefelder in Tabellen zu vermeiden sind. Wieso hat die Beispieldatenbank Northwind diese dann?



[Anhang gelöscht durch Administrator]
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: MzKlMu am Dezember 07, 2012, 14:02:11
Hallo,
ZitatWieso hat die Beispieldatenbank Northwind diese dann?
Weil das wie die berechneten Felder ab Access2007 eine Erfindung ist von Microsoft. Und wer macht schon seine eigenen Erfindungen schlecht.
Du hast keinerlei Nachteile, wenn Du die Nachschlagefelder in den Tabellen weg lässt. Genau wie die berechneten Felder.

Die DB sehe ich mir erst heute Abend genauer an.

Die DB lässt sich problemlos nach Access2003 konvertieren. Ich werde nur mit Access2003 arbeiten, ich bin mit Access2010 nicht vertraut.
Du kannst auch mit Version2003 weiterarbeiten.
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: MzKlMu am Dezember 07, 2012, 20:21:02
Hallo,
anbei mal eine vorläufige Version.
Ich habe mal die Feldnamen angepasst, keine Sonder und Leerzeichen in Feldnamen.

Schaue Dir mal die Beziehungen an und die eine Abfrage an.

Morgen früh mache ich Dir noch ein Formular zur Erfassung der Arbeiten.


[Anhang gelöscht durch Administrator]
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: rosebud am Dezember 08, 2012, 09:13:34
Danke schon mal. Die Beziehungen sind mir jetzt klar. Ein Vorteil sehe ich auch in den Tabellen in denen man die Tabellen anklicken kann (+ Zeichen), mit denen eine Beziehung besteht.

Die Abfrage ist auch o.k. Aber die Firmennamen wie auch die Mitarbeiter sind nur als Zahl ersichtlich. Lässt sich das im Berichtsassistent noch ändern?.

Danke nochmals für Deine Mühe.
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: MzKlMu am Dezember 08, 2012, 09:23:12
Hallo,
ZitatEin Vorteil sehe ich auch in den Tabellen in denen man die Tabellen anklicken kann (+ Zeichen), mit denen eine Beziehung besteht.
Das ist kein Vorteil, sondern überflüssiger Schnickschnack den man nicht benötigt.
ZitatAber die Firmennamen wie auch die Mitarbeiter sind nur als Zahl ersichtlich. Lässt sich das im Berichtsassistent noch ändern?.
Die Zahlen sind völlig bedeutunglos, die bekommt man auch im Regelfall gar nicht zu sehen. Abfragen werden auch niemals direkt geöffnet, höchtens zum Testen, wie hier.
In den Berichten und Formularen sieht man später nur die passenden Klartexte.

Ich mache Dir später noch ein Formular zur Erfassung der Arbeiten.
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: MzKlMu am Dezember 08, 2012, 10:49:58
Hallo,
anbei mal die DB mit einem Formular zur Erfassung der Arbeiten.
Bitte ansehen, bei Fragen bitte melden. Ich habe im Momant kein Zeit für weitere Erläuterungen.

[Anhang gelöscht durch Administrator]
Titel: Re: Stunden mal Stundenansatz berechnen
Beitrag von: rosebud am Dezember 09, 2012, 14:48:22
Das Formular funktioniert prima. DANKE!!!
Will zuerst noch das Formular-Layout etwas anders gestalten (inkl. Aktivierungsreihenfolge) und mal einige Beispieldaten eingeben.

Habe mich schon mal an den Berichtsassistenten gewagt. Ziel ist, dass aktuell ersichtlich ist, welcher Kunde monatlich als auch jährlich welches Auftragsvolumen (Betrag) hat und dass die Arbeiten nach Kunden UND Mitarbeiter ersichtlich sind. Bin deshalb vorerst noch damit beschäftigt. Melde mich am Montag wieder.