|
 |
Forum |
 |
 |
|  |
|
|
| Auteur |
Bericht |
The_Vicar
|
|
Onderwerp: constant uur opzoeken
Geplaatst: 08 feb 2010 - 15:16
|
|
In de startblokken
Geregistreerd op: 28-apr-2008
Berichten: 92
Status: Offline
|
|
Hoi,
Heb een tabel in Access met pakweg 25000 lijnen. De eerste kolom in de tabel bevat een tijdstip dat bepaalde gegevens zijn opgeslagen. Er wordt om de 10 seconden een lijn opgeslagen. (dus 25000 lijnen komt ongeveer overeen met 2,9 dagen).
nu wil ik met vba hier door die 25000 lijnen lopen en gegevens op die tijdstippen (andere kolommen in die tabel) gaan vergelijken met elkaar. Ik zou er telkens een vol uur (of 360 lijnen achter elkaar) die niet meer dan 5% van elkaar verschillen willen uithalen.
dus bv:
tijdstip waarde
1______120
2______118
3______119
4______121
5______etc...
dus de waardes van 1 opeenvolgend uur mogen niet meer dan 5% verschillen van elkaar.
De tijdstippen staan in de tabel onder de vorm : "dd/mm/jjj uu:mm:ss"
iemand een idee?
tx
Vic. |
|
|
| |
|
|
|
 |
Jenny
|
|
Onderwerp: Re: constant uur opzoeken
Geplaatst: 08 feb 2010 - 16:35
|
|
In draf
Geregistreerd op: 01-feb-2007
Berichten: 271
Status: Offline
|
|
ik begrijp je vraag niet hoor
zoals ik het begrijp:
je wil van een volledig uur de waardes weten
dus zoiets als 'select tijdstip,waarde from jetabel where tijdstip between begintijdstip en eindetijdstip' ???
dat zal je dus 360 records teruggeven(tenminste als beide tijdstippen in de tabel voorkomen,en bijde tijdstippen juist 1 uur vormen )
wat bedoel je nu met:
Quote: dus de waardes van 1 opeenvolgend uur mogen niet meer dan 5% verschillen van elkaar.
5% verschillen van de laagste waarde
of
5% verschillen van de hoogste waarde
of
5% verschillen van de gemiddelde waarde
of
5% verschillen van een bepaalde waarde
wat is het datatype van het 'tijdstip' veld, en wat is de code om het tijdstip IN de database te zetten
wat is eigenlijk de bedoeling van wat je tracht te doen ? |
|
|
| |
|
|
|
 |
The_Vicar
|
|
Onderwerp: Re: constant uur opzoeken
Geplaatst: 08 feb 2010 - 19:36
|
|
In de startblokken
Geregistreerd op: 28-apr-2008
Berichten: 92
Status: Offline
|
|
Hoi Jenny,
Bedankt voor je antwoord. Ben waarschijnlijk wel wat te "cryptisch" (lees: onduidelijk ) geweest omdat ik daarstraks te weinig tijd had om een degelijke post te doen.
De bedoeling is eigenlijk dat ik ergens in de 25000 lijnen, 360 lijnen achter mekaar kan vinden (1 uur dus) waarbij de hoogste waarde van die 360 niet meer dan 10% verschilt met de laagste. (dus het middelpunt verschilt max 5% met de hoogste en 5% met de laagste).
zou, denk ik, dus ongeveer zo te werk moeten gaan, maar geraak er niet uit:
- neem tijdstip 1 en lees de waarde
- neem tijdstip 2 en lees de waarde
- als waarde 2 niet meer dan 5% van waarde1 verschilt (naar boven of naar beneden) heb ik al 2 opeenvolgende lijnen
- neem tijdstip 3 en lees de waarde
- als waarde3 niet meer dan 5% verschilt van waarde1, heb ik al 3 opeenvolgende lijnen
- etc, etc, etc...
het moeilijke is, dat wanneer ik bijv al 120 opeenvolgende lijnen heb die niet meer dan 10% van mekaar verschillen, en de 121ste lijn verschilt wčl meer dan 10 %, ik overnieuw zal moeten beginnen, en ditmaal vanaf lijn 2... tot ik er 360 achter elkaar heb gevonden waarvan de hoogste waarde niet meer dan 10% verschilt van de laagste waarde.
Ik weet het, het is geen simpele vraag, want de code zou dus een "reeks" moeten gaan zoeken of herkennen, en dit in heel veel lijnen.
Op dit moment plotten we deze waardes in een grafiek, en gaan we manueel kijken waar de lijn in de grafiek 1 uur stabiel blijft. Dat zou ik graag automatiseren... maar 't zal niet makkelijk worden.
MAAR: uitdagingen zijn er om aangegaan te worden!
tx,
Vic. |
|
|
| |
|
|
|
 |
Jenny
|
|
Onderwerp: Re: constant uur opzoeken
Geplaatst: 08 feb 2010 - 23:57
|
|
In draf
Geregistreerd op: 01-feb-2007
Berichten: 271
Status: Offline
|
|
ok,even zien of ik het begrijp
we hebben dus een geordende verzameling van +-25000 waardes (geordend op tijdstip)
deze verzameling heeft +-24640 geordende deelverzamelingen van 360 waardes
sommige van deze deelverzamelingen kunnen 'stabiel' zijn
nu moeten we weten wat onder een 'stabiele' verzameling verstaan wordt
a)als elk element maximum 5% verschild van het eerste element
dus volgens je voorgestelde manierQuote: - neem tijdstip 1 en lees de waarde
- neem tijdstip 2 en lees de waarde
- als waarde 2 niet meer dan 5% van waarde1 verschilt (naar boven of naar beneden) heb ik al 2 opeenvolgende lijnen
- neem tijdstip 3 en lees de waarde
- als waarde3 niet meer dan 5% verschilt van waarde1, heb ik al 3 opeenvolgende lijnen
- etc, etc, etc...
of
b)als elk element maximum 5% verschild van het gemiddelde van zijn elementen
dusQuote: (dus het middelpunt verschilt max 5% met de hoogste en 5% met de laagste).
of
iets anders
bv:
de verzameling:95,100,105 is stabiel volgens b),maar niet volgens a)
de code om zoiets te doen is heel waarschijnlijk niet zo ingewikkeld, maar we moeten natuurlijk wel weten hoe die tabel opgebouwd is
dus de velden EN hun datatype
het beste is je db hier eens te zetten(enkel met de desbetreffende tabel,en gecompact,en gezipt)
edit:
als je db access 2007 is, gelieve ze dan eerst te converseren naar access 2000 of 2002 of 2003 (ik heb access 2007 niet) |
|
|
| |
|
|
|
 |
The_Vicar
|
|
Onderwerp: Re: constant uur opzoeken
Geplaatst: 09 feb 2010 - 07:46
|
|
In de startblokken
Geregistreerd op: 28-apr-2008
Berichten: 92
Status: Offline
|
|
Hey Jenny,
Ondertussen ben ik al redelijk dicht bij het antwoord. Het is inderdaad bedoeld zoals jij in je laatste voorbeeld aanhaalt (van die 95, 100 en 105), die lijn is dus nog altijd stabiel.
Hetgeen ik nu doe is een gemiddelde nemen van lijn 1 tem 360, en dan lijn per lijn die 360lijnen bekijken of de waarde niet meer dan 5% verschilt met het gemiddelde. Als er 1 van die lijnen verschilt, loop verlaten en de volgende blok van 360 lijnen nemen (2 tem 361) en daar weer het gemiddelde van nemen, en zo verder, en zo verder, enz...)
Zo geraak ik er wel uit. Bedankt voor de tip! Zo had ik het nog niet bekeken. kga't wel nog ff zelf proberen verder op te lossen, is altijd leuker, maar je tip heeft me wel goed op weg gezet.
Ik ga hier morgen verder mee aan de slag en laat een bericht als't lukt of niet (zal morgen pas zijn, mijn computer in auto vergeten die nu niet thuis is )
Groetjes
Vic. |
|
|
| |
|
|
|
 |
Jenny
|
|
Onderwerp: Re: constant uur opzoeken
Geplaatst: 09 feb 2010 - 23:53
|
|
In draf
Geregistreerd op: 01-feb-2007
Berichten: 271
Status: Offline
|
|
Quote: Hetgeen ik nu doe is een gemiddelde nemen van lijn 1 tem 360, en dan lijn per lijn die 360lijnen bekijken of de waarde niet meer
dan 5% verschilt met het gemiddelde. Als er 1 van die lijnen verschilt, loop verlaten en de volgende blok van 360 lijnen nemen (2 tem 361)
het is echt niet nodig van die 360 lijnen lijn per lijn te bekijken hoor
je kan ze in een klap bijeen query-en
iets zoals:
Quote:
Select Count(TijdStip) as Aantal, Avg(Waarde) as Gemiddeld, Min(Waarde) as Minimum, Avg(Waarde)*0.95 AS ToegelatenMinimum, Max(Waarde) as
Maximum, Avg(Waarde)*1.05 as ToegelatenMaximum
From JeTabel
Having (TijdStip) Between #Het Tijdstip Van De Eerste Lijn In De deelVerzameling# And #Het Tijdstip Van De Eerste Lijn In De deelVerzameling +1/24#
zo weet je in 1 klap het gemiddelde,minimum,maximum,het minimum toegelaten,het maximum toegelaten van de 360 lijnen van de deelverzameling
(De 1e Lijn In DeelVerzameling 1 is de 1e lijn van JeTabel)
(De 1e Lijn In DeelVerzameling 2 is de 2e lijn van JeTabel)
enz...
een woordje uitleg over '#Het Tijdstip Van De Eerste Lijn In De DeelVerzameling +1/24#'
een DateTime veld in access wordt achter de schermen opgeslagen als een double, waarvan het gehele deel het aantal dagen voor/na een
referentie datum is, en het decimale deel het tijdstip in die dag
dus:
#Het Tijdstip Van De Eerste Lijn In De DeelVerzameling +1# is 1 dag later als #Het Tijdstip Van De Eerste Lijn In De DeelVerzameling#
en:#Het Tijdstip Van De Eerste Lijn In De DeelVerzameling +1/24# 1 uur later als #Het Tijdstip Van De Eerste Lijn In De DeelVerzameling#
(een dag is 24 uren,een uur dus 1/24 ste van een dag)
als het niet moest lukken, wil ik je wel code geven hoor |
|
|
| |
|
|
|
 |
|
|
|
|
|
|
 |
|
 |
|
|
|