Neuigkeiten:

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

Mobiles Hauptmenü

Berichte erstellen Aufteilung je Monat, Quartal, Halbjährlich, Jährlich

Begonnen von lukyluke68, Mai 31, 2013, 17:50:37

⏪ vorheriges - nächstes ⏩

lukyluke68

Hallo,

ich habe mir eine Datenbank erstellt aufgeteilt in BE/FE zum speichern folgender Daten:

1. Ausgeführte Wartungen an Bauteilen (je Wartung ein Datensatz mit Datumsangabe als erledigt markiert)
2. Reparaturaufkommen in der Werkstatt (je Reparatur ein Datensatz mit Datumsangabe als erledigt markiert)

Ich habe bei Pkt.1 eine Abfrage erstellt, um zu sehen wieviel Wartungen momentan erledigt sind.

Wie muss ich nun vorgehen um es später auf einem Bericht zu sehen?
Muss ich für jeden Bericht (z.Bsp. Monatlich ) eine Abfrage erstellen.

Stehe momentan auf dem Schlauch?

mfg
Ludwig
Gruß Ludwig

database

Hallo,

nein du benötigst nicht für jedes Monat eine eigene Abfrage.
Es gibt z.B. Möglichkeiten die SQL, die hinter der Abfrage steht, zur Laufzeit deiner Anwendung dynamisch zu ändern
und so die Abfrage an die jeweils benötigte Datenmenge anzupassen.

Im Prinzip ändert sich bei der Abfrage lediglich die WHERE-Klausel, die dadurch die unterschiedlichen Sichten
auf die gespeicherten Daten ermöglicht (monatlich, quartalsbezogen, ...)

So könntest du angepasst an deine Bedürfnisse eine String-Variable mit der Grundstruktur deiner Abfrage belegen

Dim strSQL As String
strSQL = "SELECT * FROM DeineTabelle"


und diesen String kannst du dann nach Bedarf ergänzen
um z.B. Daten zu erhalten, die in den Monat Februar fallen

strSQL = strSQL & " WHERE Month(Datum) = 2"

und danach den so erstellten String der gespeicherten Abfrage zuweisen

CurrentDB.QueryDefs("DeineAbfrage").sql = strSQL

Da die Abfrage als Datenherkunft deines Monatsberichts definiert ist,
zeigt der Bericht immer die Daten, die du vorher bestimmt hast ...


lukyluke68

Hallo,

ich habe aus einem Eintrag im Forum etwas gebastelt das nun super funktioniert.

Die Datei die ich im Forum gefunden habe, habe ich mal angehängt.

Soweit so gut! Ich möchte aber bei meiner Abfrage eine Bedingung setzen, dass ich im Bericht nur die Datensätze sehe die "Gebucht" sind.
Im Bericht habe ich das Bezeichnungsfeld unsichtbar gemacht, da es sich hier um ein Kontrollkästchen handelt.

[Anhang gelöscht durch Administrator]
Gruß Ludwig

database

Hallo,

ich habe dein Beispiel ein klein wenig erweitert.
In der Tablle muss dazu ein Feld 'gebucht, Ja/nein' eingefügt werden, Standardwert 0 (nein)
Danach muss das SQL-Statement um den Part ' AND gebucht=-1' erweitert werden um nur Aufträge zu erhalten, die gebucht sind.

Die Änderungen sind im Anhang enthalten.



[Anhang gelöscht durch Administrator]

lukyluke68

Hallo,

vielen Dank für deine rasche Hilfe. Tolles Forum! Genau das habe ich benötigt. Bin schon am erweitern für etliche Berichte von versch. Abfragen wie Reparatur, Wartung...

Meine Datenbank wird in mit einem Hauptformular geöffnet, von wo ich dann zu den einzelnen Formularen (Reparaturerfassung, Datenerfassung Störungen vor Ort, Wartungserfassung) gelange.
Wenn ich nun im Hauptformular das kleine Formular öffne um durch die Auswahl von Monat/Jahr einen Bericht zu erstellen für Wartungserfassung, wird der Bericht im Hintergrund geöffnet. Wie bekomme ich es hin, dass ich den erstellten Bericht dann auch gleich sehe?
Ich habe für jede einzelne Abfrage wo ich einen Bericht benötige, nun ein extra Auswahlformular mit Monat/Jahr erstellt.
Gibt es hierzu die Möglichkeit, dass es nur ein Formular ist und ich nach dem Auswählen von Monat/Jahr noch ein Optionsfeld habe, wo ich dann vor dem erstellen des Berichtes auswähle, welchen Bericht ich möchte?

mfg Ludwig
Gruß Ludwig

database

Hallo,

ZitatWie bekomme ich es hin, dass ich den erstellten Bericht dann auch gleich sehe
Eine Möglichkeit wäre im Berichtsentwurf auf der Registerkarte 'Andere' die Einstellung 'PopUp' auf JA zu stellen.

Zur anderen Frage:

Ja, auch da gibt es Möglichkeiten.
So kannst du beispielsweise die Auswahl der entsprechenden Berichte mittels Optionsschaltflächen (Radiobutton) regeln oder mittels Buttons.
Die Berichte sollten allesamt mit je einer passenden allgemeinen Abfrage erstellt werden.
Wie im Beispiel gezeigt änderst du dann die SQL der benötigten Abfrage bei Auswahl durch einen Buttonklick entsprechend der vorher getätigten Auswahl mittels Radiobutton.
Im Anschluss daran öffnest du dann den Bericht zur Ansicht.

Im Beispiel ist die Erweiterung zu sehen.

[Anhang gelöscht durch Administrator]

lukyluke68

Hallo Peter,

ja genau, danke für deine Hilfe. Ich habe die Datenbank noch etwas erweitert um Halbjährlich, Quartal. Ich weis nur nicht wie ich die SQL schreiben muss.

mfg
Ludwig

[Anhang gelöscht durch Administrator]
Gruß Ludwig

ebs17

Ein Quartal oder ein Halbjahr, übrigens auch schon ein Monat, sind Zeiträume. Zeiträume dokumentiert man mit dem Start und dem Ende. Wenn man nun für eine Benutzereingabe zwei Textfelder, ggf. um ein Kalenderformular oder -ActiveX benutzertechnisch verbessert, anbietet, kann man beliebige Zeiträume auswählen lassen, dann auch jahresübergreifend, von Monatsmitte zu Monatsmitte u.a.:

Schlechte Lösung:
"WHERE Month([Lieferdatum])=" & Me.cboMonat & " AND Year([Lieferdatum]) =" & Me.cboJahr & " AND gebucht=-1"
Schlecht,
- weil nicht variabel genug,
- weil so ein möglicher Index auf Lieferdatum nicht genutzt werden kann und somit mögliche Performance (die man in einer Datenbank bei datenbankgemäßen Datenmengen vermutlich benötigen wird) verschenkt. Alleine deshalb beurteile ich einen solchen Vorschlag (ohne Not so vorgestellt) bereits als Fehler.

Bessere Lösung:
"WHERE Lieferdatum >= " & Format(Me.txtBeginn, "\#yyyy\-mm\-dd\#") & _
" AND Lieferdatum <= " & Format(Me.txtEnde, "\#yyyy\-mm\-dd\#")
& " AND gebucht=-1"

MfGA
ebs
Mit freundlichem Glück Auf!

Eberhard

lukyluke68

Hallo,

ich habe jetzt mal ein Formular erstellt wo ich zwei Steuerelemente eingefügt habe. Ich weis nicht ob VBA passt?

[Anhang gelöscht durch Administrator]
Gruß Ludwig