November 23, 2020, 17:07:51

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


Datumswerte für einen ganzen Monat ausgeben (mit NULL Werten)

Begonnen von SMBR, November 18, 2020, 18:30:54

⏪ vorheriges - nächstes ⏩

SMBR

Hallo und schönen guten Abend,
ich arbeite gerade an einem neuen Objekt für einen Freund von mir. Die DB dient der Stundenerfassung von gearbeiteten Stunden. Kurz gesagt möchte ich umsetzen, dass man in einem Formular Einzelheiten zu Schichtzeiten, Objekte und Angaben über Feiertags/-Nacht/-und Sonntagsstunden erfassen kann. Nun zu meiner Frage. Es gibt für die gearbeiteten Stunden von der Firma ein Formblatt Stundenzettel. Ich möchte nun die Daten, welche ich über ein Formular erfasse auf den Stundenzettel übertragen. (Mit Hilfe eines Access Berichtes. Wie setze ich sowas am besten um? Da der Stundenzettel immer die gleiche Anzahl der Spalten hat, sprich vom 01. - 31.... Kann ich eine Abfrage generieren lassen in dem jeder Tag des Monats aufgelistet wird, auch die an denen nicht gearbeitet wurde. Oder gibts ne bessere Lösung, wie ich die eingegebenen Daten in die richtigen Spalten des Formblattes übertragen kann? Wenn man nun 20 Tage beispielsweise arbeitet, stellt Access ja alle Daten untereinander, natürlich ohne die Tage an denen nicht gearbeitet wurde....Im Ergebnis wären die generierten Daten nicht in den richtigen Spalten auf dem Formblatt....Wäre in dem Fall ein Export nach Excel leichter realisierbar? Schön wäre wenn ich alles in Access machen könnte.... Danke schon mal für euere Hilfe und einen schönen Abend.

ebs17

ZitatDa der Stundenzettel immer die gleiche Anzahl der Spalten hat, sprich vom 01. - 31
Die "Querstellung" kann man einfach über eine Kreuztabellenabfrage umsetzen, in diesem Fall gleich mit fixierten Überschriften.
Zur Erstellung von Kreuztabellenabfragen gibt es auch einen Assistenten.
Mit freundlichem Glück Auf!

Eberhard

SMBR

Hallo Eberhard,
danke für deinen Tip, leider habe ich es bisher nicht geschafft, das über die Kreuztabellenabfrage zu realisieren. Ich habe mal einen kleinen Dummy gebastelt und im Anhang hinterlegt. Könntest du mir anhand der DB mal zeigen, wie man so etwas umsetzt? Für weitere Hilfe wäre ich sehr danbar.

ebs17

Ich habe unterstellt, dass die Gesamtstunden in der Darstellung gefragt sind (die Datenmodellierung hat Reserven).
Zusätzlich ist unterstellt, dass die Stunden dem Datum des Schichtbeginns zugeordnet werden.
TRANSFORM
   MIN(stdztGesamtstunden) AS X
SELECT
   Year(stdztSchichtAnfang) * 100 + Month(stdztSchichtAnfang) AS JahrMonat
FROM
   tblArbeit_Stundenzettel
GROUP BY
   Year(stdztSchichtAnfang) * 100 + Month(stdztSchichtAnfang)
PIVOT
   Day(stdztSchichtAnfang) IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31)
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

@SMBR
Kannst du den grundsätzlichen Sinn erklären?
Denn um Entlohnung kann es ja nicht gehen, wo da doch niemand arbeitet.
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

SMBR

Zitat von: Beaker s.a. am November 21, 2020, 12:24:14@SMBR
Kannst du den grundsätzlichen Sinn erklären?
Denn um Entlohnung kann es ja nicht gehen, wo da doch niemand arbeitet.

Hi, danke für den Einwand,
da es sich um eine Entlohnung im Sicherheitsgewerke ist, wollte ich aus Schutzgründen nur Dummydaten eingeben. Die DB sollte die Zeiterfassung und die Übertragung auf einen Musterstundenzettel der Firma bewerkstelligen. Außerdem eine Spesenabrechnung für den Verpflegungsmehraufwand und die Fahrkosten für den Lohnsteuerjahresausgleich.


SMBR

Hallo @ebs17 und danke für deine Hilfe,
es geht in eine gute Richtung, doch leider benötige ich die Spalten was jetzt nebeneinander stehen untereinander. Würde das auch auf diese Art funktionieren? ich poste im Anhang mal den Stundenzettel, auf den letzten Endes die in der DB eingetragenen Stunden übertragen werden sollen. Ein Blanko Stundenzettel für jeden Monat. Und in den Zeilen (1. - 31.) sollten dann eben die Werte aus der DB an der richtigen Stelle ( Beim richtigen Datum) auf dem Formblatt stehen sollen.

ebs17

ZitatDa der Stundenzettel immer die gleiche Anzahl der Spalten hat, sprich vom 01. - 31....
Jetzt darf man sich fragen, welche Worte eine Bedeutung haben ...

Die Tage untereinander hast Du doch aus der Tabelle abrufbar.

Für die Absicherung einer fortlaufende Tagesfolge braucht man eine entsprechende Hilfstabelle/Kalendertabelle als vollständige Menge, etwa
... FROM VollstaendigeMenge LEFT JOIN VorhandeneMenge ON ...
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

@SMBR
Eine genauere Beschreibung vom gleichen Autor findest du hier.
gruss ekkehard
--
Beaker s.a., der lieber an seinem eigenen Projekt arbeiten würde/sollte, aber irgendwie immer gerne seinen Senf dazu gibt ;-)
S.M.I².L.E.

SMBR

Zitat von: ebs17 am November 21, 2020, 22:20:52
Zitat von: undefinedDa der Stundenzettel immer die gleiche Anzahl der Spalten hat, sprich vom 01. - 31....
Jetzt darf man sich fragen, welche Worte eine Bedeutung haben ...

Die Tage untereinander hast Du doch aus der Tabelle abrufbar.

Für die Absicherung einer fortlaufende Tagesfolge braucht man eine entsprechende Hilfstabelle/Kalendertabelle als vollständige Menge, etwa
... FROM VollstaendigeMenge LEFT JOIN VorhandeneMenge ON ...
Das Problem besteht darin, dass die Tage alle untereinander stehen. Die freien Tage werden nicht berücksichtigt. Wenn ich in nem Monat beispielsweise 20 Arbeitstage habe, schreibt er die 20 Datensätze untereinander, ohne die freien Tage zu berücksichtigen. Aus diesem Grund stünden die Datensätze dann im Stundenzettel vom 01. bis zum 20.
Da ich in der Richtung noch keine großen Erfahrungen habe, bleibt das ganze, wenigstens für den Moment schwierig umzusetzen. :-X  :-X

ebs17

Vollständige Menge ist lösbar über eine Kalendertabelle oder, wenn man sich konsequent auf die Tage eines Monats beschränken möchte, über eine einfache Zahlenhilfstabelle, hier ausreichend von 1 bis 31.

Mit freundlichem Glück Auf!

Eberhard