Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Frage zur Tabelle und Daten Kopie

Begonnen von silentwolf, Januar 09, 2013, 14:12:09

⏪ vorheriges - nächstes ⏩

database

#15
Hallo Albert,

folgendes immer auf die ältere Version der DB bezogen:

zu 1:

Das Fahrtenbuch zeigt alle Fahrzeiten und zugehörige Daten der Fahrer.
Ob es sich dabei um eine Hinfahrt oder eine Rückfahrt handelt ist so nicht ersichtlich, es werden keine Ausgangspunkte erfasst - z.B. Firma ... Ojekt ... oder  Objekt ... Firma

Die Fahrzeiten der Mitfahrer werden automatisch in die Tabelle tblObjMitarbeiter übertragen und dort als Fahrzeit gekennzeichnet.
Wenn es nun so sein soll, dass ein MA bei Objekt A 'abgeladen' wird und ein weiterer MA zu Objekt B weiterfährt ist es klar, dass nicht beide MA-Zeiten dem Objekt A zugeordnet werden dürfen.
Das kann aber mit einer Fragestellung bei der automatischen Datenübertragung gelöst werden (mittels MsgBox ... Zeiten von Max übernehmen ja / nein).

Wenn nun ein MA zu einem weiteren Objekt gefahren wird oder selbst weiterfährt ist das ein neuer Datensatz im Fahrtenbuch, sonst stimmen die Zeiten und km nicht überein.

zu 2:

Ich habe ja angeregt Fahrzeiten und Arbeitszeiten getrennt zu erfassen - was ja m.E. auch Sinn macht.
Wenn nun ein MA von der Firma zu Objekt A mitfährt bekommt er für dieses Objekt bereits die Fahrzeit als Arbeitszeit (aber gekennzeichnet) in die tblObjMitarbeiter eingertagen.
Arbeitet er dort dann weitere 5 Stunden dann ist diese Zeit als Arbeitszeit für Objekt A einzutragen.
Fragst du dann die Zeiten von Objekt A ab erhältst du z.B. 25 Minuten als Fahrzeit und 5 Stunden als Arbeitszeit für MA Max als Ergebnis der Abfrage angezeigt.

zu 3:
Fragst du die gleiche Tabelle ab und schließt jene Datensätze aus, die als Fahrzeit gekennzeichnet sind hast du die reine Arbeitszeit.

zu 4:
Abfrage der tblObjMitarbeiter mit Einschränkung auf das Feld ObjM_Datum sollte das Problem lösen

zu 5:
Es müsste ja eigentlich bei Projektstart bereits bekannt sein welche Verrechnungsart für das betreffende Objekt zur Anwendung kommen muss (Pauschale, Stundensatz x, etc.)
Da würde es sich anbieten diese Informationen in eigenen Feldern der tblObjekte zu hinterlegen dann kann bei einer Abfrage auch darauf zugegriffen werden.

ZitatDie Endzeit von der Fahrt also Endzeit von der Hinfahrt würde ja den Anfangszeitpunkt des Objektes  ...
Ja, ich weiß worauf du hinaus willst - das ist auch generell realisierbar - die Übergabe der Fahrzeiten ist ja auch gelungen ;-)
M.E. wirst du aber NIE ganz darum herum kommen irgendwelche Daten mehrfach einzugeben, da sich nicht alles automatisiert erledigen lassen wird



Zur neuen Version deine DB:

Ich halte es nicht für klug, Hin- und Rückfahrten in getrennten Tabellen zu halten - da sind wir dann bei der Redundanz, die es eigentlich zu vermeiden gäbe.
Wenn du Hin- und Rückfahrten deutlich gekennzeichnet brauchst, dann stell ein Flag- Feld in die Tabelle Fahrtenbuch (H / R)


p.s. Nachtrag:
Ich würde das Fahrtenbuch rein als solches führen und keine Mitfahrerer im Zuge der Fahrtenbucheinträge im gleichen Formular
erfassen - die haben ja auch praktisch gesehen mit einem Fahrtenbuch nichts zu tun.
Das ist aber reine Geschmacksache bzw. Gewohnheitssache - wichtig ist halt die Trennung der beiden Dinge voneinander






silentwolf

Hallo Peter,

vielen  Dank für Deine Erklärung! Hab die DB nun soweit abgeändert und verstehe auch das Prinzip dahinter.
Ich komme aber leider nicht selbst auf wie ich mittels MsgBox die Zeiten von Max übernehmen kann wie Du es beschrieben hast :(
Könntest Du mir hier noch etwas helfen bitte?
Die anderen Punkte bin ich noch beim abarbeiten werde aber glaub ich auch noch etwas Hilfe benötigen :(

Vielen lieben Dank aber erstmals !!!

Albert

database

Hallo Albert,

eine Möglichkeit wäre folgende - Code hinter dem Übergabe-Button im Formular frmkfz:


Private Sub cmdUebertrag_Click()

   Dim rst As Recordset
   Dim strSQL As String
   Dim strMitarbeiter As String
   
   
   'Alle Einträge des Mitfahrer-Unterformulars auslesen
   Set rst = Me.tblMitFZ_Unterformular.Form.Recordset
   
   rst.MoveFirst
   
   Do While Not rst.EOF
       'Datenübergabe nur für MITfahrer ohne Datenübertrag
       If Me.tblMitFZ_Unterformular!MitFZ_Fahrer = 0 And Me.tblMitFZ_Unterformular!Datenuebertrag = 0 Then
           'Mitarbeiternamen auslesen
           strMitarbeiter = Me.tblMitFZ_Unterformular!cboMitarbeiter.Column(1)
           
           If MsgBox("Die Fahrzeit von " & strMitarbeiter & " für dieses Objekt übertragen?", vbExclamation + vbYesNo + vbDefaultButton2, "Fahrzeit übertragen") = vbYes Then
               'Anfügeabfrage erstellen
               strSQL = "INSERT INTO tblObjMitarbeiter (ObjM_Obj_Id,ObjM_Mit_Id,ObjM_Datum,ObjM_Anfang,ObjM_Ende,ObjM_Fahrtzeit)" & _
                        "VALUES(" & Me.tblFahrtenbuch_Unterformular!FB_Obj_Id & "," & _
                                    Me.tblMitFZ_Unterformular!cboMitarbeiter & "," & _
                                    Format(Me.tblFahrtenbuch_Unterformular!FB_Datum, "\#yyyy\-mm\-dd\#") & "," & _
                                    Format(Me.tblFahrtenbuch_Unterformular!FB_Anfang, "\#hh\:nn\#") & "," & _
                                    Format(Me.tblFahrtenbuch_Unterformular!FB_Ende, "\#hh\:nn\#") & ",-1)"
                               
               'Den Dateneintrag veranlassen
               CurrentDb.Execute strSQL, dbFailOnError
               'Den Datenübertrag kennzeichnen
               Me.tblMitFZ_Unterformular!Datenuebertrag = -1
           End If
           
       End If
       rst.MoveNext
   Loop

   Set rst = Nothing
   
End Sub



Wie weit diese Möglichkeit nun tatsächlich deine Vorstellungen abdecket kann ich nicht beurteilen - das findest du am Besten durch probieren heraus.
Erweiterungen / Änderungen kann man immer in verschiedenen Formen finden  ::)

ZitatDie anderen Punkte bin ich noch beim abarbeiten werde aber glaub ich auch noch etwas Hilfe benötigen
Gerne!

HTH

silentwolf

Hallo Peter,

na sehr herzlichen Dank für Deine mail! Hat wie immer super funktioniert!
Ganz einfach gel wenn man es kann ;)

Sehr schöne Grüße

Albert

silentwolf

Hallo Peter,

hab grad gesehen das Du auch online bist :)
SChön zu sehen gg

Ich habe nun das nächste kleine Problem in meiner Abfrage.

Habe eine tblFahrtkosten erstellt die mit der tblObjekt verknüpft ist.
Diese tabelle enthält nur die ID und FK_Name
Wie kann ich denn nun einen 'Wert auf meine Abfrage erstellen.

Also in der Tabelle habe ich z.B. Keine Fahrtkosten, Alle Fahrtkosten, Pauschale, Fahrer...
Nun muss meine Abfrage je nachdem welche Auswahl ich getroffen habe diese Fahrtkosten berrechnen :(

Kannst Du mir sagen ob ich hier noch richtig unterwegs bin???

Bekomme es leider in meiner Abfrage nicht hin :(

Lg
Albert

ach und danke natürlich für Deine Hilfe!!!!!!!!!!

database

Sorry Albert, aber da kann ich dir nicht ganz folgen  :-\

Kannst du das ein wenig genauer und detaillierter schildern und dazu die DB mit den Neuerungen anhängen
ich schau mir das morgen Vormittag gerne mal an..

silentwolf

Hallo Peter,

danke nochmals für Deine Hilfe!!! So jetzt hab ich etwas mehr Zeit um es genauer zu formulieren.
In dieser DB im Anhang habe ich eine neue tblFahrtkosten erstellt. Diese ist mit der tblObjekte verknüpft.
Folgende DS sind in dieser nun vorhanden. Alle FK "FK-Fahrtkosten", Keine FK, Pauschale (die aber wiederum in Euro ist und auch evt. Unterschiedlich sein kann!)
und KM Geld ( hier sollte die Fahrt je nach Kilometer Aufwand mit einem KM Geld von 0,42 Euro verrechnet werden)
Nun war meine Frage wie ich diese Daten in einer Abfrage integrieren kann damit ich je nach Objekt auwerten kann was nun tatsächlich für die Fahrt und den Objekt
verrechnet werden soll.
In der tblFahrtkosten habe ich im moment nur die FK_ID und FK_Name denn sonst würde ja wieder Äpfel mit Birnen vorhanden sein :(

In meiner Bestehenden Abfrage steuere ich ja die Abfrage mit meinem Formular also Datum von Datum bis, und Objekt und den Objekt Std. Satz., und zeigt mir die Daten an
als Kontrollkästchen ob es sich um eine Fahrtzeit handelt oder Objekt Zeit.

Nun wie bekomme ich nun in Euro und Cent die Fahrtzeit und die Objekt zeit aus dieser Abfrage.


Hoffe Du kannst mir folgen ??


Schöne Grüße und vielen Dank

Albert

P:S. Die neue SQL Anweisung hab ich in dieser DB noch nicht upgedatet!


[Anhang gelöscht durch Administrator]

database

Hallo Albert, ein paar Fragen

Wenn es so sein soll, dass z.B. Pauschalen differieren, müssen diese Informationen in einer Zwischentabelle zwischen Objekt und Fahrtkosten hinterlegt werden.
Gleiches gilt für das amtl. Kilometergeld, das sich im Lauf der Zeit ja auch ändern kann.
Im Prinzip müsstest du eine Historie der Beträge führen, die pro Startdatum eines Objeks zugewiesen werden, da du ja nicht auftragsbezogen sondern objektbezogen arbeitest.

Ich gehe dabei natürlich davon aus, dass du an einem Objekt ev. mehrere Aufträge in zeitlichem Abstand auszuführen hast
und so kann es durchaus sein, dass sich zwischen dem ersten und dem letzten Auftrag ein Unterschied in einer ev. Fahrtenpauschale ergibt
bzw. bei ersten Auftrag eine Pauschale verrechnet wird und beim letzten keine Fahrtkosten anfallen.

Diese Zwischentabelle solle das Objekt, dessen Startdatum, die FK-Art und den aktuellen Wert derselben anzeigen können.
Diese Tabelle kann man dann in deine Abfrage integrieren und die entsprechend angefallenen Stunden mit den Sätzen einer Berechnung zuführen.
Allerdings nur in Verbindung mit dem Fahrtenbuch - Mitfahrer erhalten ja in der Regel kein km-Geld wodurch eine Verbindung mit tblObjMitarbeiter
zur Berechnung von Fahrtkosten nicht zielführend ist. Die reinen Fahrtzeiten eines MA ergeben sich durch die Kennzeichnung und sind per Abfrage leicht zu ermitteln.

Wird in deinem Geschäftsmodell bei Mitarbeitern zwischen Arbeitszeit und Fahrzeit stundsatzbezogen unterschieden?
Was ist mit 'Fahrer FK' und 'Alle FK' in der tblFahrtkosten gemeint?
Wo und wie erfaßt du denn die €-Werte für die Einträge in der tblFahrtkosten - hast du da schon eine Überlegung dazu?

Kannst du mir mal die obenstehenden Fragen beantworten - vielleicht mit einem oder zwei unterschiedlichen beispielhaften Beschreibungen.



silentwolf

Hallo Peter,

danke erstmal für Deine Zeit und Mühe!!
Zu Deinen Fragen.
Es kann sein das die Fahrtzeit für jeden MA berechnet wird aber mit einem anderer Stundensatz wie am Objekt.
Fahrer FK heist das die Fahrtzeit nur für den Fahrer berechnet werden soll manchmal der gleiche Stundensatz wie am Objekt manchmal billiger oder ein anderer StdSatz
Alle FK soll heissen alle Fahrtkosten werden verrechnet. Also für jeden MA wird ein Stundensatz verrechnet auch die Fahrt. Muss aber auch wieder nicht heissen das
es der gleiche also der vom Objekt sein muss.
Die Euro werte hab ich noch nicht für die Fahrtkosten also zumindest nicht als solche hinterlegt.
Und weis nicht genau wo diese stehen sollen das man eine vernünftige Abrechnung erzielen kann.

Hab etwas Zeitdruck um es ausführlicher zu beschreiben aber vielleicht kannst Du es ja so schon etwas  besser verstehen.
Muss leider nochmals los zur Arbeit würde aber später nochmals schaun ob Du noch Fragen hast :)

Ich weis auch noch nicht genau wie Du es mit der Zwischentabelle meinst :(

Vielen Dank erstmal

Albert

database

Hallo Albert,

hat ein wenig gedauert ...

Im Anhang die DB mit folgender Ergänzung:

Ich habe 2 Abfragen erstellt, 'qryFahrtkosten' - ermittelt die Fahrtkosten bezogen auf Mitarbeiter-Fahrtzeit und Objekt
sowie 'qryObjektkosten' - ermittelt die Kosten der reinen Arbeitszeit eines Mitarbeiters an einem Objekt.
Beides natürlich eingeschränkt auf einen bestimmten Zeitraum.
Beide Abfragen enthalten ein 'Dummy-Feld' - Art -  um die Kostenart zu Kennzeichnen - 'O' = Arbeitszeit am Objekt, 'F' = Fahrzeiten der Mitarbeiter.

Das Formular 'frmObjStunden' habe ich mit einem Button ausgestattet um die Abfrage der Gesamtabrechnung zu öffnen.
In diesem Formular ist das Objekt auszuwählen sowie der gewünschte Zeitraum anzugeben - klick auf 'Abrechnung' öffnet dann die 3. neue Abfrage 'qryGesamtkosten',
eine UNION-Abfrage, welche die Aufstellung der entstandenen Kosten aus den obigen Abfragen darstellt.

Wenn nun auch das Fahrtenbuch in diese Abfrage inkludiert werden soll, kannst du das analog der von mir erstellten beiden Abfragen nachbauen,
einschließlich eines Dummy-Feldes 'Art' mit Inhalt 'FB' um die Kostenart 'Fahrtenbuch' zu kennzeichnen.
Wichtig dabei ist, dass die Abfrage die gleiche Anzahl von Feldern in der gleichen Reihenfolge besitzt.
Anzufügen wäre sie dann nach einer weiteren UNION-Anweisung ausschließlich in der SQL-Ansicht der 'qryGesamtkosten'.

Bitte beachte, dass der Aufruf aus dem Formular 'frmObjStunden' nur beispielhaft zu sehen ist.
Solltest du den Aufrug der Abrechnung auf ein anderes Formular verlegen wollen, musst du in den einzelnen Abfrageentwürfen die Kriterienpfade anpassen.
Die Abfrage 'qryGesamtkosten' kannst du natürlich auch als Datenherkunft für einen, nach dem Abfragefeld 'Art', gruppierten Bericht verwenden.

Hoffe, die vorgeschlagene Lösung hilft dir weiter  ;)

[Anhang gelöscht durch Administrator]

silentwolf

Guten Morgen Peter,
erstens muss ich mich sehr bei Dir entschuldigen das ich erst jetzt die Zeit gefunden habe mir Deine Nachricht und Deinen Vorschlag anzusehen!
Ich war bis jetzt mit einer anderen DB beschäftigt :(
Hoffe Du bist mir deshalb nicht böse!?
Ich schau es mir grad an und bin mir sicher das es nun schon bald funktionieren wird sieht gut aus!!

Vielen Dank
werde Dich auf den laufenden halten wie es mir dabei ergeht :)

Glg


Albert

silentwolf

Hallo Peter,

ich hab nun die DB angesehen aber jetzt hab ich da doch noch einige Fragen :(

Der tblMitFZ ist nicht verknüpft....braucht diese nicht verknüpft mit einer anderen tabelle sein?
In tblObjektFahrtkosten ist dien FKID_F auch nicht verknüpft...braucht es das auch nicht??
In tblObjekte ist auch ein Obj_FK_Id auch noch keine..
Bin mir nicht mehr ganz sicher was verknüpft sein muss und was nicht.

Würde mich sehr freun wenn Du mir diesbezüglich noch mal Antworten könntest und Dir vielleicht die DB nochmals anschaun kannst.


Mfg

Albert

database

Hallo Albert,

nein, ich bin nicht böse!
Du bewegst dich im Forum, wenn du dazu Zeit findest - wie ich, ich habe leider auch nicht immer Zeit mich sofort um eine Antwort zu kümmern.
Die Tätigkeiten zur Vermehrung unserer Währung verlangen das halt so  ;) :D

Ich habe mir die DB aus dem letzten Beitrag angeschaut.
K.A. warum die tblMitFZ da einen 'Freiflug' gemacht hat, ich hab das behoben.
Zur Vollständigkeit habe ich noch die tblMitarbeiter mit der tblMitFZ in Beziehung gesetzt.
In der tblObjektFahrtkosten passt alles, da hat nix gefehlt.
In der tblObjekte war der Fremdschlüssel Obj_FK_Id noch als Überbleibsel vorhanden, habe ich rausgenommen.
Weiter habe ich die tblAnrede mit den entsprechenden Tabellen in Beziehung gesetzt und dabei
die fehlerhafte Beziehung zwischen tblObjekte und tblKontakte berichtigt.

Was mir allerdings nicht klar ist - die beiden Felder Kon_KunT_Id und Kon_KonT_Id in der tbl Kontakte  ???

Im Anhang findest du jedenfalls die berichtigte Version.

LG

[Anhang gelöscht durch Administrator]

silentwolf

Hallo Peter,

danke für Deine Mühe hab mich auch schon damit beschäftigt und auch dieselben Änderungen gemacht :)
Muss jetzt erst mal wieder in dieser DB zurecht kommen :(
Wie funktioniert das wieder mit den Daten übertragen?
Hab nun Daten in meinem Fahrtenbuch eingetragen aber bin mir nicht mehr sicher wie die Datenübertragung funktioniert?
Auch würde ich gerne ein Formular mit den DS aus einen HF in einem neuen Formular öffnen.
Habe es nun mit Macro gemacht aber würde doch lieber VBA nehmen bekomme es aber leider noch nicht hin :(

Schöne Grüße

Albert

database

Hallo Albert,

ZitatHab nun Daten in meinem Fahrtenbuch eingetragen aber bin mir nicht mehr sicher wie die Datenübertragung funktioniert?

Ich gestehe, ich steh im Moment etwas daneben - welche Datenübertragung meinst du da konkret?


ZitatHabe es nun mit Macro gemacht aber würde doch lieber VBA nehmen
Du könntest das Makro zu VBA konvertieren lassen, dann hast du den Code, der dahintersteht.

Ich habe dir dazu auch in deiner anderen Frage geantwortet.