Irgendwie habe ich gerade ein Prob. =;)
Eigentlich möchte ich nur den Stromzähler täglich ablesen und den Verbrauch
sofort berechnen lassen.
Aber kann mir mal jemand sagen, wie man das macht?
Ich erfasse in einer Tabelle den täglichen wert. Aber wie berechne ich den
Täglichen verbrauch?
Sorry..anfänger =;)
MfG
Ingo Kramarek
Ingo Kramarek wrote:
> Eigentlich möchte ich nur den Stromzähler täglich ablesen und den
> Verbrauch sofort berechnen lassen.
>
> Aber kann mir mal jemand sagen, wie man das macht?
>
> Ich erfasse in einer Tabelle den täglichen wert. Aber wie berechne
> ich den Täglichen verbrauch?
>
> Sorry..anfänger =;)
Nichts mit Anfänger! Das ist gar nicht so trivial ;-)
Nehmen wir mal an, Du hast eine Tabelle die Zählerstände heisst.
Diese Tabelle habe zwei Felder:
AbleseDatum Datum/Zeit
Zählerstand Double
Nun willst Du die Differenz zur letzten Ablesung ermitteln. Da Du nicht
davon ausgehen kannst, dass immer täglich abgelesen wird, kannst Du also
nicht einfach einen SelfJoin der Tabelle mit sich selber über das Datum -1
machen, da dort evt. gar kein Eintrag drin ist. Da der Zähler nicht
rückwärts laufen kann, ist es daher wohl einfacher, einfach den grössten
Zählerstand zu nehmen, der bis vor dem gesuchten Datum in der Datenbank
abgelegt ist. Diesen kannst Du am einfachsten mit der DMax() Funktion
ermitteln.
Daraus resultiert dann folgendes SQL Statement:
SELECT [Ablesedatum], [Zählerstand]
- DMax("[Zählerstand]","[Zählerstände]","[Ablesedatum] < " &
Format([Ablesedatum],"\#mm\/dd\/yyyy\#")) AS Verbrauch
FROM Zählerstände;
HTH
Henry
--
Keine E-Mails auf Postings in NGs senden!
Don't send e-mails to postings in newsgroups!
KB: http://support.microsoft.com/default.aspx
FAQ: http://www.donkarl.com/FAQ/FAQStart.htm
MVP: http://mvp.support.microsoft.com
OH: Online Hilfe von Microsoft Access (Taste F1)
On Mon, 9 Jun 2003 13:49:58 +0700, Henry Habermacher [MVP Access] wrote:
> Daraus resultiert dann folgendes SQL Statement:
>
> SELECT [Ablesedatum], [Zählerstand]
> - DMax("[Zählerstand]","[Zählerstände]","[Ablesedatum] < " &
> Format([Ablesedatum],"\#mm\/dd\/yyyy\#")) AS Verbrauch
> FROM Zählerstände;
uaaaah, Henry - ein DMax in einer Abfrage, pfui! ;-)
Bis dann,
Olaf [MVP]
--
Bitte keine emails auf NG-postings.
My .02: www.Resources.IntuiDev.com
AccessFAQ: www.donkarl.com
KnowHow.mdb: www.freeaccess.de
>> SELECT [Ablesedatum], [Zählerstand]
>> - DMax("[Zählerstand]","[Zählerstände]","[Ablesedatum] < " &
>> Format([Ablesedatum],"\#mm\/dd\/yyyy\#")) AS Verbrauch
>> FROM Zählerstände;
> uaaaah, Henry - ein DMax in einer Abfrage, pfui! ;-)
Naja, Kompromiss wuerd ich sagen. Denn die "saubere" Syntax ...
SELECT [Z1].[Ablesedatum], [Z1].[Zählerstand], [Z1].[Zählerstand]-(SELECT
Max([Z2].[Zählerstand]) FROM [Zählerstände] AS Z2 WHERE [Z2].[Ablesedatum]
< [Z1].[Ablesedatum]) AS Verbrauch FROM [Zählerstände] AS Z1;
... ist unter Jet leider nicht so performant. ;-)
Gruss - Peter
--- snip ----
> Da der Zähler nicht
> rückwärts laufen kann, ist es daher wohl einfacher, einfach den grössten
> Zählerstand zu nehmen, der bis vor dem gesuchten Datum in der Datenbank
> abgelegt ist. Diesen kannst Du am einfachsten mit der DMax() Funktion
> ermitteln.
´
--- snip ----
Kleine Ergänzung - Stromzähler laufen nicht rückwärts, springen aber nach
Erreichen des Höchststandes wieder auf Null und zählen dann wieder aufwärts.
Das Erreichen des jeweilige Hächststand müsste auch noch abgefangen werden.
HTH
Michael
erstmal vielen Dank.
Mir ist noch nicht ganz klar, was in dieser Abfrage passiert aber ich denke
das sehe ich dann beim Testen =;)
Wie verhält es sich denn wenn ich den Zählerstand mehrmals am Tag ablesen
möchte und immer nur die Differenz zum letzten Ablesen ermitteln will?
Natürlich kommen dann noch so sachen wie Monatsverbrauch und
Jahresverbrauch.
Ich denke, dass so eine Abfrage ja auch für gefahrene KM beim Auto
eingesetzt werden kann..zum führen eines Fahrtenbuch oder so..die Abfrage
müsste dann ja identisch sein, oder?
Fragen über Fragen =;))
MfG
Ingo Kramarek
Außerdem werden sie gelegentlich seitens des Energieversorgers
(z.B. bei defekt oder im Rahmen einer Stichprobenprüfung)
ausgetauscht. Der Zählerstand des neuen Zählers ist dabei i.d.R.
nicht 0.
hth
Ruben
Ingo Kramarek wrote:
> Natürlich kommen dann noch so sachen wie Monatsverbrauch und
> Jahresverbrauch.
>
> Ich denke, dass so eine Abfrage ja auch für gefahrene KM beim Auto
> eingesetzt werden kann..zum führen eines Fahrtenbuch oder so..die
> Abfrage müsste dann ja identisch sein, oder?
In diesem Fall würde ich Dir folgendes Vorgehen anraten:
Bei jedem Ablesen schreibst Du die Differenz zum vorherigen Stand, nicht den
eigentlichen Zählerstand weg. Dann kannst Du einfach die Summe über die
Differenzen bilden. Wird später viel einfacher. Zudem muss ich mich dann
nicht wegen dem DMax() im SQL Statement gegenüber Olaf schämen ;-)
Gruss
Olaf Rabbachin wrote:
> uaaaah, Henry - ein DMax in einer Abfrage, pfui! ;-)
Ich verstehe Dein Grauen! Geht mir auch so, ist aber leider performanter,
als die saubere Lösung, die mir eingefallen ist, Jet scheinbar hier den
Cache optimaler verwalten kann. Alternativ wäre denkbar, dass man sich statt
eines Joins einer Where-Bedingung bedient, und mit < sucht, nur habe ich das
nicht auch noch austesten wollen.
Sorry und Gruss
Nochmals Danke, auch an alle Anderen für die Hilfe =;)
Ich werd das gleich mal probieren.
Und um deine Ehre zu retten erfasse ich nur den Verbrauch und berechne den
Zählerstand..das ist eh einfacher und sollte selbst mir gelingen *ggg*
MfG
Ingo Kramarek
"Henry Habermacher [MVP Access]" <he...@psp-online.com> schrieb im
Newsbeitrag news:bc1tih$eqos7$1...@ID-30649.news.dfncis.de...
On Mon, 9 Jun 2003 19:07:26 +0700, Henry Habermacher [MVP Access] wrote:
>> uaaaah, Henry - ein DMax in einer Abfrage, pfui! ;-)
>
> Ich verstehe Dein Grauen! Geht mir auch so, ist aber leider performanter,
> als die saubere Lösung, die mir eingefallen ist, Jet scheinbar hier den
> Cache optimaler verwalten kann.
wow, Tatsache!? Habe mir nie die Mühe gemacht, weil ich noch nie D*(...) in
einer Abfrage verwendet habe.
> Alternativ wäre denkbar, dass man sich statt eines Joins einer
> Where-Bedingung bedient, und mit < sucht, nur habe ich das
> nicht auch noch austesten wollen.
Für das Austesten bzw. Vergleichen von was-auch-immer-Fragmenten müsste es
doch auch 'mal irgendwann den einfachen Knopfdruck geben. Ich bin nur sehr
selten _nicht_ zu 'faul' (besser: kostenscheuend :-), Vergleichstests
durchzuführen ...
>-----Originalnachricht-----
>.
>