Liebes Forum,
anbei findet ihr eine abgespeckte Version meiner Energiedatenerfassung und Auswertung. Hierzu trage ich in das Formular Zaehlererfassung meine abgelesenen Zaehlerwerte. Dieses Formular besteht aus einem Haupt- und einem Unterformular.
Bisher:
Das Hauptformular beinhaltet hierbei die AblesungsID, das Ablesedatum, den Monat und das Jahr. Im verknüpften Unterformular, (über AblesungsID) trage ich für jeden Zähler meinen abgelesenen Wert ein. Damit ich als Standardwert immer schon den Zähler angezeigt bekomme, habe ich für jeden Zähler ein Unterformular sowie eine Abfrage erstellt, dass als Standardwert die ID des jeweiligen Zählers hat.
Somit muss ich bei jeden Zähler, den ich irgendwann dazu bekomme, eine Abfrage sowie ein neues Unterformular erstellen.
evtl. Besser + Problem:
Dies ist doch ziemlich umständlich und muss sich sicherlich auch irgendanders bewerkstelligen lassen. Deshalb habe ich nochmals ein zweites Unterformular (frmZaehlerablesung_neu_UF) erstellt, das ebenfalls mit dem Hauptformular (frmZaehlerablesung_neu) über die AblesungsID verknüpft ist und sämtliche Zaehler in einem Formular beinhaltet.
Wenn ich jetzt aber einen neuen Datensatz anlegen will, muss ich immer erst alle Zähler anlegen und danach die Werte eintragen. Gibt es hier eine Möglichkeit, die Zeilen des Unterformulars bereits mit dem Zähler vorzufüllen, quasi als eine Art Standardwert?
Ich hofe, dass dies einigermaßen verständlich war, sonst gerne nochmal nachfragen...
Sollte eigentlich im angehängten Beispiel in dem Formular schön zu sehen sein!
Danke für die Antwort
Dan
[Anhang gelöscht durch Administrator]
Hallo,
der Aufbau ist falsch.
Ins Hauptformular gehören die Daten zum Zähler und sonst nichts.
Dann benötigst Du eine Tabelle zur Erfassung der Ablesungen mit einem Bezug zur ZaehlerID.
In diese Tabelle kommt das Ablesedatum (Jahr und Monat sind überflüssig) sowie den Zählerstand.
Im Hafo kannst Du dann problemlos auch einen neuen Zähler anlegen und im Ufo gleich die Ablesewerte erfassen.
Die DB kann ich mir leider nicht ansehen, ich habe nur Access2003.
Du solltest die DB in eine kleinere Version konvertieren.
Hallo,
schon mal vielen Dank für deine Antwort, anbei findest du nochmals das Beispiel als Access 2003 Version...
Vielleicht kannst du dir dieses nochmals anschauen und dir fällt noch was auf...
Schöne Grüße
Dan
[Anhang gelöscht durch Administrator]
Hallo,
ich sehe hier die Beziehung anders, siehe Bild.
Eine Tabelle für Jahr und Monat (und die Felder dazu) halte ich für übeflüssig. Das Abrechnungsjahr und der Monat lässt sich aus dem Ablesedatum bestimmen (ein Monat zurück).
[Anhang gelöscht durch Administrator]
Hallo,
ich habe das Datenmodell noch weiter vereinfacht. Siehe Bild.
[Anhang gelöscht durch Administrator]
Hallo,
vielen Dank für deine Mühen...
Anbei mein Entwurf nach deinem Vorbild zur Diskussion.
Leider habe ich noch ein kleines Problem mit meiner Verbrauchsberechnung, da ich beim Austausch eines Zählers nach defekt im folgenden Monat entsprechend kleinere Ablesewerte habe und meine Select Max Funktion in der Abfrage (siehe Zähler 10 in Abfrage qryZaehlerverbrauch) nicht mehr funktioniert.
Hat hierzu noch jemand eine bessere Lösung, damit ich den Verbrauch des jeweiligen Zählers berechnen könnte? Alternativ gibt es natürlich auch die Möglichkeit, einen neuen Zähler anzulegen. Ist aber nicht schön zur späteren Auswertung...
Danke für die Hilfe.
Grüße
Dan
[Anhang gelöscht durch Administrator]
Hallo,
nach meiner Auffassung ist das Anlegen eines neuen Zählers die richtige Lösung. Es ist ja auch körperlich ein anderer Zähler.
Hallo,
danke für die Antwort.
Mich würde trotzdem interessieren, ob es eine andere Möglichkeit gibt, um auf den vorherigen Datensatz zuzugreifen.
Hast du hier noch eine gute Idee?
Danke!
Hallo,
nein, da habe ich jetzt keine Idee. Nach meiner Auffassung, musst Du zwingend einen neuen Zähler anlegen. Du brauchst auch 2 Ablesungen. Endstand alter Zähler und Anfang neuer Zähler, mit dem gleichen Ablesedatum.
Übrigens Deine Formel zur Bestimmung des Abrechnungszeitraums ist viel zu kompliziert.
Das geht mit der Funktion Datdiff() viel einfacher. Es genügt auch ein Feld (MMMM.JJJJ) für die Ausgabe Dezember 2011 bei Ablesung am 1.1.2012
Hallo,
welche Formel meinst du? Wie würde hier die Datdiff Funktion ausschauen?
Danke!
Hallo,
sorry, ich meinte natürlich DateAdd.
So dann:
Abrechnungsmonat: Format(DatAdd("m";-1;[Ablesedatum]);"mmmm JJJJ")
Hallo,
Datadd Funktion funktioniert super.
Allerdings ist mir aufgefallen, dass das jetzige Datenmodell von der Performance deutlich langsamer als das bisherige Datenmodell ist, vor allem bei der Verbrauchsberechnung sowie der anschließenden Jahresverbrauchsberechnung (Summe der Monatsverbräuche) in der Abfrage.
Die Formeln sind eigentlich nur an das neue Datenmodell angepasst und es wird ja nur der Vormonatswert und anschließend der Verbrauch sowie die Kosten gerechnet.
Hat jemand hierzu eine Idee, weshalb die Berechnung so lange dauert? Es müssen ungefähr 1000 Datensätze berechnet werden (Jahr 2006 bis 2012; ca. 10 Zähler pro Monat)