April 14, 2021, 15:46:52

Neuigkeiten:

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


Abfrage für ein Jahr

Begonnen von eneg79, Februar 19, 2021, 12:19:44

⏪ vorheriges - nächstes ⏩

eneg79

Hallo an Alle,

schön das es dieses Forum gibt. Bei so einigen Problemen hat das schon sehr geholfen nur passiv mitzulesen.

Nun habe ich aber ein Problem, da finde ich nirgends im Netz eine Lösung.

In meiner Datenbank erfasse ich jeden Monat zum 1. meine Zählerstände.
Ich habe mir auch eine Parameterabfrage gebastelt, die mich vorher fragt, welches Jahr ich auswerten möchte.
Das funktioniert soweit ganz gut, nur fehlt mir der komplette Dezember.
Mir fehlt ja quasi der Wert vom 31.12. den erfasse ich in meiner Tabelle ja unter 01.01. des nächsten Jahres.

Ich weiß ich könnte die Zählerstände einmal als 31.12. und einmal als 01.01. erfassen.
Aber ich bin mir sicher da gibt es eine elegantere Lösung.

Ich freue mich auf Antwort und bedanke mich schon vorab.

Gruß Andreas

MzKlMu

Hallo,
als einfachste Lösung:
Lege in einer Abfare ein berechnetes Feld an:
AbrechnungsDatum: ErfassungsDatum - 1Zieht vom Datum einen Tag ab, aus dem 01.01.2021 wird dann der 31.12.2020.
Deine Auswertung machst Du dann mit dem berechneten Feld.
Der Vorschlag setzt aber voraus, dass das ErfassungsDatum immer am 1. eines Monats ist.
Gruß
Klaus

eneg79

Danke für die schnelle Antwort.

Darüber hatte ich auch schon nachgedacht, nur verschiebt das mein Problem ja an den Jahresanfang.

Dadurch wird ja aus dem 01.01. des abgefragten Jahres der 31.12. des Vorjahres und mir fehlen dann die Werte aus dem Januar.

:-\

MzKlMu

Hallo,
versteh ich nicht, wiso soll da der Januar fehlen. Du verschiebst genau ein Tage,, aus den 1.2. wird der 31.1.

Siehe Bild:
Gruß
Klaus

eneg79

na damit wird doch mein Zählerstand vom 01.01.20 zum Zählerstand vom 31.12.19.
Somit fehlt doch in meiner Abfrage der Verbrauch aus Januar, weil sie erst mit dem Zählerstand vom 01.02.20 (Buchungsdatum) bzw. 31.01.20 (Abrechnungsdatum) beginnt.

Vorher fehlte mein Verbrauch aus Dezember, nun der aus Januar.

Ich möchte quasi eine Abfrage vom 01.01.2020 - 31.12.2020 und das nur mit Ablesedaten vom 1. eines jeden Monats.

MzKlMu

Hallo,
verstehe ich immer noch nicht.
Zitat von: undefinedSomit fehlt doch in meiner Abfrage der Verbrauch aus Januar,
Der Verbrauch Januar hast Du doch mit dem 1.2. erfasst.

Siehe mein Bild, da sind alle 12 Monate des Jahres 2020 enthalten, oder siehst Du einen fehlenden Januar?
Gruß
Klaus

ebs17

ZitatIch möchte quasi eine Abfrage vom 01.01.2020 - 31.12.2020 und das nur mit Ablesedaten vom 1. eines jeden Monats.
Nein, genauer möchtest Du eine Abfrage vom 01.01.Jahr bis 01.01.Jahr + 1, und genau so müsste man das Filterkriterium setzen.
Mit freundlichem Glück Auf!

Eberhard

eneg79

Okay, ich hole jetzt mal aus, vllt. ist mein Problem ja nicht das Datum, sondern das ich meine Abfrage zu kompliziert gestalte.

Ich erfasse an jedem 1. des Monats meinen Zählerstand vom Wechselrichter in einer Tabelle.
In der Abfrage ermittle ich neben dem Zählerstand (aktuell) den Zählerstand aus Vormonat mittels:
Zählerstand Vormonat WR: DomWert("[Zählerstand Wechselrichter]";"tblZählerstanderfassung";"[Ablese-ID] = " & [Ablese-ID]-1)
Aus diesen beiden Werten errechne ich meine Erzeugung in kW/h.
Siehe Anhang...

Wie du siehst wurden im Januar 481kW/h erzeugt und im Dezember 395kW/h.
Vorher hatte ich mit meiner Parameterabfrage Jahr([Ablesedatum]) das Problem das er die 395kW/h nicht genommen hat, nach deiner Variante Parameterabfrage Jahr([Auswertungsdatum]) nimmt er die 481kW/h nicht.

eneg79

Zitat von: ebs17 am Februar 19, 2021, 14:06:03Nein, genauer möchtest Du eine Abfrage vom 01.01.Jahr bis 01.01.Jahr + 1, und genau so müsste man das Filterkriterium setzen.

Okay, wie stelle ich das an?

ebs17

Das wäre jetzt eine (richtige) Parameterabfrage:
PARAMETERS
   parJahr INT
;
SELECT
   *
FROM
   TabelleX
WHERE
   Datumsfeld BETWEEN DateSerial(parJahr, 1, 1)
      AND
   DateSerial(parJahr + 1, 1, 1)
Mit freundlichem Glück Auf!

Eberhard

eneg79

Zitat von: ebs17 am Februar 19, 2021, 17:31:22Das wäre jetzt eine (richtige) Parameterabfrage:
PARAMETERS
   parJahr INT
;
SELECT
   *
FROM
   TabelleX
WHERE
   Datumsfeld BETWEEN DateSerial(parJahr, 1, 1)
      AND
   DateSerial(parJahr + 1, 1, 1)

eneg79

Hallo Eberhard,

genau das hatte ich gesucht, damit habe ich es tatsächlich gelöst bekommen, musste es nur noch leicht modifizieren.

Vielen Vielen Dank.

Aber auch vielen Dank Dir Klaus, ich glaube auch mit deinem Ansatz hätte ich mit ein wenig Modifikation eine Lösung gefunden.