Neuigkeiten:

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

Mobiles Hauptmenü

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.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

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

SMBR

Und die Verbindung zwischen der Tabelle "tblStundenzettel" lässt sich dann über eine Verknüpfung regeln? Und ja in diesem Fall recht es wenn ich nur immer die Tage für einen Monat habe...

ebs17

Zitatüber eine Verknüpfung regeln?
Eine Verknüpfung ist nun kein Wunderwerk der Programmierung unter Einbeziehung einer Expertenrundendiskussion, sondern etwas Alltägliches in einer Abfrage.
Man sollte nur  beachten, dass man jeweils gleiches miteinander verknüpft, also Datum-Datum oder Tageszahl-Tageszahl.
Mit freundlichem Glück Auf!

Eberhard

Beaker s.a.

@SMBR
ZitatUnd die Verbindung zwischen der Tabelle "tblStundenzettel" lässt sich dann über eine Verknüpfung regeln? Und ja in diesem Fall recht es wenn ich nur immer die Tage für einen Monat habe...
Sach' mal, liest du die angeboten Links überhaupt?
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

SMBR

Guten Abend,
erst mal möchte ich mich für die lange Antwortzeit entschuldigen. Da ich die letzten 2 Wochen nahezu im Bett verbracht habe, zog ich es zunächst vor wieder auf die Beine zu kommen.
@ebs17. Check** natürlich lese ich jeden einzelnen Hinweis, Link oder ähnliches durch bevor ich unnötigerweise eine neue Frage stelle. Was aber nicht heißt dass ich das Gelesene auch 1 zu 1 umsetzen kann. Da ich mich nur als Hobby bzw Leidenschaft mit dem Theme Access DB´s beschäftige, kommt das schon mal vor.

Nach reichlichen Überlegungen habe ich mich dazu entschlossen das Problem anders anzugehen. Entweder den Export nach Excel, oder ich hinterlege das Formblatt im Access-Bericht als Seitenhintergrund. Letzteres habe ich soweit vorbereitet, stellt mich aber noch nicht so 100 Prozentig zufrieden, da ich immer eine kleine Diskrepanz am Ende der Zeilen habe. Egal an welchen Reglern ich auch drehe, entweder treffe ich ganz oben die Zeilen nicht richtig, oder ganz unten.
Kann ich mit TransferSpreadsheet oder OutputTo oder eine bestehende Tabelle in, oder besser gesagt ab einem bestimmten Bereich die Daten schreiben?
Oder wie sieht es mit dem Befehl CopyFromRecordset aus? Habe in dem einen oder anderen Video gesehen, dass man dort zwar den Bereich angeben kann wohin die Daten exportiert werden sollen, aber kann ich hierfür das besagte Formblatt als Excel Datei verwenden?