Avatar billede Monkeybrain Juniormester
13. oktober 2012 - 09:12 Der er 9 kommentarer og
1 løsning

find årsforbrug ud fra forskellige datoer

Jeg har en access database med mine elmålinger og vil gerne finde årsforbruget. dvs. 365 dage tilbage, der er bare det problem at det er ikke daglige elmålinger så jeg skal have regnet gennemsnittet ud pr. dag mellem to målinger og derefter gå 365 dage tilbage for at finde årsforbruget.

nogle ideer?
Avatar billede Monkeybrain Juniormester
13. oktober 2012 - 09:20 #1
03-08-2011    17588
20-08-2011    17691
30-11-2011    18411
01-04-2012    19257
29-06-2012    19714
30-06-2012    19720
15-07-2012    19766
26-08-2012    19897
16-09-2012    19958
12-10-2012    20056
Avatar billede finb Ekspert
13. oktober 2012 - 09:28 #2
Access har en funktion,
der kan regne på data mellem datoGAMMEL og datoNY, fx
datoGAMMEL = i dag - 365 og datoNY = i forgårs
eller
datoGAMMEL = i dag - 22 mdr og datoNY = i dag - 20 mdr
osv.
Jeg kan ikke huske, om funktionen hedder
"datesort" eller "timesort" eller...
finb
Avatar billede Monkeybrain Juniormester
13. oktober 2012 - 09:56 #3
jeg tænkte noget med at at lave to felter mere hvor der er antal dage siden sidst og forbrug. derefter sortere med nyeste dato først tælle 365 dage, hvis der så er mere en 365, så trække det overskydende fra ved at dele den sidste tilføjede dags forbrug som er delt ud pr. dag.
Avatar billede finb Ekspert
13. oktober 2012 - 10:28 #4
Funktionen hedder vist DatePart
Avatar billede softspot Forsker
13. oktober 2012 - 18:02 #5
Det lyder som om du skulle trække alle målinger indenfor det seneste år ud (sorteret efter dato) og så iterere over dem alle, hvor du beregner gennemsnittet mellem den aktuelle og den forrige (med datediff(nu, da) / difference mellem nu og da).

Noget i stil med dette:

sql = "SELECT * " & _
      "FROM maalinger " & _
      "WHERE dato BETWEEN dateadd('d', -365, now) AND now " & _
      "ORDER BY dato DESC"
'
'... data hentes fra databasen, dvs. connect, execute og alt det der knald
'

sum = 0
maalinger = 0
forrigeDato = empty
do while not rs.eof
  maalinger = maalinger + 1
  aktuelleDato = rs("dato")
  aktuelleMaaling = rs("maaling")

  if not isempty(forrigeDato) then
      dage = datediff("d", forrigeDato, aktuelleDato)
      enheder = aktuelleMaaling - forrigeMaaling
      sum = sum + (enheder / dage)
  end if

  forrigeDato = aktuelleDato
  forrigeMaaling = aktuelleMaaling

  rs.movenext
loop
gns = sum / maalinger

'
' rs lukkes, connection lukkes og objekter nedlægges
'

Sum skulle så, efter løkken, indeholde det akkumulerede gennemsnit for hver periode. Det divideres så med antallet af målinger, hvorefter du skulle have det daglige gennemsnit (vil jeg mene - det er kun hurtigt smasket sammen).
Avatar billede Monkeybrain Juniormester
12. november 2012 - 20:40 #6
Ingen løsninger brugt, smid svar hvis point ønskes
Avatar billede softspot Forsker
12. november 2012 - 20:49 #7
Hvad er årsagen til at du ikke har brugt nogen af løsningerne?
Avatar billede Monkeybrain Juniormester
12. november 2012 - 20:59 #8
Projektet faldt fra hinanden
Avatar billede softspot Forsker
12. november 2012 - 21:53 #9
OK, surt :-(
Avatar billede Monkeybrain Juniormester
12. november 2012 - 23:24 #10
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester