Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: lukyluke68 am Januar 11, 2014, 20:47:52

Titel: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: lukyluke68 am Januar 11, 2014, 20:47:52
Hallo,

ich möchte mir in einem Bericht die Anzahl der Störungen jedes Monates anzeigen lassen und am Ende soll die Gesamtsumme angezeigt werden.

Das Jahr habe ich in einem Textfeld so gesteuert
=Format$([Stoerungsdatum];"jjjj";0;0)

Den Monat habe ich so gesteuert
=Format$([Stoerungsdatum];"mmmm";0;0)

Nun möchte ich ein Textfelder wo ich die Anzahl der Störeinträge im Januar, Februar, ... sehe

Bsp.:
Januar    15
Februar   20
März       12
usw bis Dezember

Ich bekomme zwar mit dem Textfeld  =Anzahl([Stoerungsdatum]) das richtige Ergebnis, aber wie mache ich es über das ganze Jahr und den einzelnen Monaten.

Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: database am Januar 11, 2014, 21:01:13
Hallo,

Zitat...aber wie mache ich es über das ganze Jahr und den einzelnen Monaten.
Würde dazu eine gruppierte Abfrage verwenden.

In etwa so:

SELECT Count(ID) AS AnzahlvonID, DatePart("m",[DeinDatumsfeld]) AS m
FROM DeineTabelle
GROUP BY DatePart("m",[DeinDatumsfeld])


Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: lukyluke68 am Januar 11, 2014, 21:39:22
Hallo,

bekomme es leider nicht auf die Reihe.
Im Anhang habe ich mal den Bericht wie er momentan aussieht. Die Daten sind ja soweit richtig, auch die Gesamtanzahl passt. Was ist aber wenn heute Juni wäre und ich mir die Anzahl der VorOrt Störungen im Jahr 2014 ansehe möchte. So wie jetzt der Bericht aufgebaut wäre, würde ich wahrscheinlich mehr als 20 Seiten haben.
Ich möchte aber alles auf eine Seite nur den Monat angezeigt mit der jeweiligen Anzahl der VorOrt Störungen
Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: database am Januar 11, 2014, 21:55:11
Hallo,

das ist ja klar, dass der Bericht viele Seiten umfaßt.
Du hast ja auch jedes Vorkommen im Detailbereich eingepackt.

Warum erzeugst du nicht einen eigenen Bericht als 'Übersicht' und verwendest dazu meine Abfrage - vielleicht ein wenig abgeändert um die Monatsnamen auch anzuzeigen, eingeschränkt auf das Jahr 2014.


SELECT COUNT(ID) AS AnzahlvonID, Monatsname(DatePart("m",[DeinDatumsfeld])) AS m
FROM DeineTabelle
GROUP BY DatePart("m",[DeinDatumsfeld]),  DatePart("yyyy",[beoBeginnDat])
HAVING DatePart("yyyy",[DeinDatumsfeld]))=2014
Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: DF6GL am Januar 12, 2014, 08:39:09
Hallo,


Gruppieren und Sortieren sollte bei einem Bericht nicht in der zugrundeliegenden Abfrage, eher im Bericht selber (Fenster Gruppieren/Sortieren) erfolgen. Ansonsten kann es passieren, dass sich der Bericht überhaaupt nicht um die angegebene Gruppierung/Sortierung in der Abfrage schert...
Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: database am Januar 12, 2014, 10:09:05
Ich weiß, dass die Sache schon mehrmals diskutiert wurde und wollte zusätzlich/alternativ einen gruppierten Bericht vorschlagen...
Habe aber im Vorfeld ein wenig herumexperimentiert und keine Probleme gesehen.
Auch dann nicht, wenn ich dem Bericht weitere Gruppierungen, GruppenKöpfe und GruppenFüße und/oder Sortierungen hinzufüge oder ändere.
Ein absolut aufwandsloses Beispiel ist im Anhang

EDIT:
ZitatAnsonsten kann es passieren, dass sich der Bericht überhaaupt nicht um die angegebene Gruppierung/Sortierung in der Abfrage schert...
Passiert in der Hauptsache dann, wenn der Bericht per Assistenten erstellt wird, da im Zuge der Erstellung möglicherweise Sortierungen und Gruppierungen vorgenommen werden, die in der Abfrage ev. (noch) nicht enthalten waren.
Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: lukyluke68 am Januar 12, 2014, 13:05:09
Hallo,

im Anhang ein Bsp.
Der Bericht ist so wie ich ihn gerne haben möchte. Mit dem Formular wähle ich das Jahr aus.
Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: Hondo am Januar 12, 2014, 13:26:14
Hallo,
SELECT * FROM Anzahl_Wieviel Stoerungen im Jahr_abfr
Wenn du weder in Tabellennamen noch Abfragenamen Leerzeichen verwenden würdest, könnte es eventuell funktionieren....
So aber auf gar keinen Fall.

Gruß Andreas
Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: lukyluke68 am Januar 12, 2014, 14:14:43
Hallo Andreas,

habe nun alle Leerzeichen mit einem _ ersetzt. Auch hier kein Erfolg nachdem ich im Formular das Jahr ausgewählt habe.
Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: DF6GL am Januar 12, 2014, 14:17:21
Hallo,


da fehlt noch viel mehr Nacharbeit:

Keine Beschriftungen bei Tabellenfeldern benutzen
Keine reservierten Wörter benutzen.
Richtige/passende Datentypen benutzen
Beziehungen im Beziehungsfenster definieren.
Tabelle "Jahreszahl_tab" ist überflüssig, bzw. darin ein separates ID-Feld zu führen.

Ich würde trotz der vagen  Gruppierungsmöglichkeit in der Berichtsabfrage darauf verzichten und nur eine einfache über die beteiligten Tabellen verknüpfende Abfrage benutzen, sowie den Bericht mit Übergabe eines evtl. benötigten Kriterium zur DS-Einschränkung bei Openreport öffnen, anstatt die Abfrage mit einem (anderen, bzw. neuen) SQL-Strings zu versorgen.
Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: database am Januar 14, 2014, 20:43:42
Hallo,

in Anlehnung an die Empfehlung(en) von DF6GL  (Ich würde trotz der vagen  Gruppierungsmöglichkeit in der Berichtsabfrage darauf verzichten ...)
Deine DB mit ein paar Änderungen im Anhang.

Den Timer im Formular habe ich entfernt, das eingebettete Makro verworfen, die Abfrage angepasst einen neuen gruppierten Bericht erstellt, die Tabellen berichtigt und die Beziehungen hergestellt, Die Auswahl der Jahre auf die tatsächlichen eingestellt - dadurch benötigst du die Tabelle mit den Jahreszahlen auch nicht mehr, usw ...  :'(
;) :) :)
HTH
Titel: Re: Textfeld Steuerelementinhalt: Jeden Monat berechnen
Beitrag von: lukyluke68 am Januar 15, 2014, 20:10:26
Hallo Peter,

vielen Dank für die Hilfe. Genau das habe ich benötigt.

Habe es schon eingebaut. Es läuft einwandfrei.