Avatar billede Jman Praktikant
22. november 2004 - 12:30 Der er 29 kommentarer og
1 løsning

Indenfor tidsinterval - selcet

Jeg har en StrStartTid og en StrSlutTid.
Mellem disse to tidspunkter skal jeg lave en select for hver time samt for hver 10 minutter

Noget a'la:
  StrStartTid = 13:35:21
  StrSlutTid = 14:45:29

  Response.write "Timebasis"
  For hver time der er fra kl. 13:35 indtil kl. 14:45:29
  Select1  bla bla bla
  Loop 

  Response.write "Pr. 10 min.:"
  For hver 10 min. der er fra kl. 13:35 indtil kl. 14:45:29
  Select2 bla bla bla
  loop

Jeg synes den er svær og den haster - derfor 200p  c",)
Avatar billede fennec Nybegynder
22. november 2004 - 13:02 #1
Skal det forståes sådan, at du inden for et givet tidsrum, skal køre et script hver 10 min og hver time??
Avatar billede Jman Praktikant
22. november 2004 - 13:08 #2
nej jeg har en masse records hvor den første er record er '19-11-2004 13:35:21' og den sidste er '19-11-2004 14:45:29'

Det er tidsstemplet. Derimellem ligger så en masse records med forkellig stempel.
Jeg vil så lave et udtræk af hvad der er sket på timebasis og derefter hvad der er sket pr. 10. minut
Avatar billede strickie Nybegynder
22. november 2004 - 13:11 #3
Følger lige med i spørgsmålet...
Skal bruge noget lign.
Avatar billede fennec Nybegynder
22. november 2004 - 13:22 #4
Noget i denne stil???

startTid = "22-11-2004 12:00:00"
SlutTid = "22-11-2004 14:00:00"
counter = 0
do while dateDiff("n",dateadd("n",10*counter,startTid),SlutTid)
  tempFrom = dateadd("n",10*counter,startTid)
  tempTo = dateadd("n",(10*counter)+10,startTid)
  response.write "Fra "& tempFrom  &" til "& tempto
  set rs = conn.execute("select * from DinTabel where datoFelt>='"& tempFrom &"' and datoFelt<'"& tempTo &"'")
  do while not rs.eof
    response.write "Data fra udtræk"
    rs.MoveNext
  loop
  counter = counter + 1
loop
Avatar billede Jman Praktikant
22. november 2004 - 13:38 #5
Yessir ... den er i vinkel.. den tager ikke højde for de sidste sekunder, dog..

Kan du ikke lige smide det med, så den sidste tidsinterval egentlig er 10 min. højere (så jeg får de sidste records med)
Avatar billede fennec Nybegynder
22. november 2004 - 13:43 #6
Den forstod jeg ikke???
Avatar billede Jman Praktikant
22. november 2004 - 13:46 #7
min starttid er 13:35:21
min starttid er 14:45:29

Mit sidste udtræk er: Antal records fra kl. 14:35:21 - 14:45:21:  29

- altså mangler jeg de sidste 8 sekunder op til 14:45:29

;o)
Avatar billede fennec Nybegynder
22. november 2004 - 14:09 #8
Så er jeg med. Ændre denne linje:
do while dateDiff("n",dateadd("n",10*counter,startTid),SlutTid)

til:
do while dateDiff("s",dateadd("n",10*counter,startTid),SlutTid)

Men så kan jeg se et andet problem. Den finder alle for de næste 10 min. Den skal vel kun finde dem for de 8 sek. Er det rigtigt opfattet??
Avatar billede Jman Praktikant
22. november 2004 - 14:13 #9
ja, men det er ikke noget problem, for jeg medtager et par kriterier i selecten

S.U.  c",)
Avatar billede fennec Nybegynder
22. november 2004 - 14:20 #10
OK.
.o) <-- One Eyed Jack
Avatar billede Jman Praktikant
22. november 2004 - 15:24 #11
¨hmm - lige sen sidebemærkning.. måske er det bare mig.. Denne funktion er u-t-r-o-l-i-g langsom... (?)
Avatar billede Jman Praktikant
22. november 2004 - 16:51 #12
Hvad i hede hule h*** er der galt..
Scriptet virker perfekt.. med de angivede tidstempler.. men ændres disse går servere (ISS'en) grasat...

Prøv at skifte tidsstemplerne:
startTid = "19-11-2004 10:40:09"
SlutTid = "19-11-2004 11:51:50"

'startTid = "22-11-2004 12:00:00"
'SlutTid = "22-11-2004 14:00:00"
Avatar billede fennec Nybegynder
23. november 2004 - 08:37 #13
snakker vi et uendeligt loop???
Avatar billede Jman Praktikant
23. november 2004 - 08:41 #14
Ja, den står bare og tænker og bruger ca. 60% af CPU
Avatar billede fennec Nybegynder
23. november 2004 - 08:46 #15
Hvordan ser din kode ud nu??
Avatar billede Jman Praktikant
23. november 2004 - 09:02 #16
den er ikke ændret andet end tidsstemplerne (det er stadig kun den kodestump .. isoleret ...

Jeg er kommet frem til at hvis minut-tallet ender på 5 eller 0, så virker den fint - ellers gå den i selvsving.
Derudover; Hvis jeg ændrer counteren med 1*counter, så virker scriptet - men jeg kan ikke overskue om det får konsekvenser af nogen art (????)
Avatar billede Jman Praktikant
23. november 2004 - 09:06 #17
aarh - det kan jeg så se nu... så regner den starttiden pr. minut.. det er jo ikke for heldigt
Avatar billede Jman Praktikant
23. november 2004 - 09:16 #18
D.v.s. counteren var rigtig i dit kodeeksempel, men hvordan laver man en workaorund for at "skæve" minut-tal også funger?
Avatar billede fennec Nybegynder
23. november 2004 - 09:29 #19
Den burde også køre med skæve minut-tal. Det eneste den gør er at lægge 10 min til det tidspunkt der er oplyst. Det man skulle tjekke for var om tempTo er størrere end SlutTid. Så den, i sidste gennemløb, kun finder der er inden for sluttiden.

startTid = "22-11-2004 12:00:00"
SlutTid = "22-11-2004 14:00:00"
counter = 0
do while dateDiff("n",dateadd("n",10*counter,startTid),SlutTid)
  tempFrom = dateadd("n",10*counter,startTid)
  tempTo = dateadd("n",(10*counter)+10,startTid)
  if datediff("s",SlutTid,tempTo) > 0 then tempTo = SlutTid
  response.write "Fra "& tempFrom  &" til "& tempto
  set rs = conn.execute("select * from DinTabel where datoFelt>='"& tempFrom &"' and datoFelt<'"& tempTo &"'")
  do while not rs.eof
    response.write "Data fra udtræk"
    rs.MoveNext
  loop
  counter = counter + 1
loop
Avatar billede Jman Praktikant
23. november 2004 - 10:13 #20
hmm.. det synes nu (efter at have siddet med det hele dagen i går og her til formiddag) at være en smule sporadisk..
eksempelvis har jeg lige kaldt
StartDato = 19-11-2004 08:36:48
SlutDato  = 19-11-2004 10:56:07
med succes..
Men efterfølgende virker det ike igen .. er det et umuligt.

-Det skal lige siges her at jeg har lavet det på en ny asp-side, så jeg nu også mistænker at der ikke "cleare" ordentligt i hukommelsen eller sådan noget og det måske er dét, der volder problemer..
Avatar billede Jman Praktikant
23. november 2004 - 10:14 #21
.. når jeg laver en IISreset virker scriptet igen -... første gang...- med ovennævnte tidsstempler
Avatar billede fennec Nybegynder
23. november 2004 - 10:24 #22
Det er mærkeligt. Jeg har aldrig hørt om et script, der kun virker en gang. Husker du at lukke for database forbindelse o.lign?? Prøv også at smide dette i toppen, selv om jeg ikke tror det hjælper:

Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
Avatar billede Jman Praktikant
23. november 2004 - 10:51 #23
jeg har ingen db-forbindelser eller noget kørende endnu - det er kun følgende i min kode:

<%
' ---- til test ---
StrStartDato = "19-11-2004 08:00:48"
StrSlutDato = "19-11-2004 10:56:07"
'------------------
startTid = StrStartDato
SlutTid = StrSlutDato
counter = 0
do while dateDiff("n",dateadd("n",10*counter,startTid),SlutTid)
  tempFrom = dateadd("n",10*counter,startTid)
  tempTo = dateadd("n",(10*counter)+10,startTid)
  response.write "Fra "& tempFrom  &" til "& tempto &"<br>"
  'set rs = conn.execute("select * from DinTabel where datoFelt>='"& tempFrom &"' and datoFelt<'"& tempTo &"'")
  'do while not rs.eof
  '  response.write "Data fra udtræk"
  '  rs.MoveNext
  'loop
  counter = counter + 1
loop
%>
Avatar billede Jman Praktikant
23. november 2004 - 10:54 #24
hvis jeg ændrer til

<%
' ---- til test ---
StrStartDato = "19-11-2004 08:00:48"
StrSlutDato = "19-11-2004 10:56:07"
'------------------
startTid = StrStartDato
SlutTid = StrSlutDato
counter = 0
do while dateDiff("n",dateadd("n",1*counter,startTid),SlutTid)
  tempFrom = dateadd("n",1*counter,startTid)
  tempTo = dateadd("n",(1*counter)+10,startTid)
  response.write "Fra "& tempFrom  &" til "& tempto &"<br>"
  'set rs = conn.execute("select * from DinTabel where datoFelt>='"& tempFrom &"' and datoFelt<'"& tempTo &"'")
  'do while not rs.eof
  '  response.write "Data fra udtræk"
  '  rs.MoveNext
  'loop
  counter = counter + 1
loop
%>

er der ingen problemer overhovedet
Avatar billede fennec Nybegynder
23. november 2004 - 10:59 #25
Prøv lige at ændre denne:
do while dateDiff("s",dateadd("n",10*counter,startTid),SlutTid)

til:
do while dateDiff("s",dateadd("n",10*counter,startTid),SlutTid) > 0
Avatar billede Jman Praktikant
23. november 2004 - 11:03 #26
Der var guldkornet ... (havde nær sagt).. Det ser ud til at virke... Jeg prøver lige at lave DB kald med i det hele og vender så tilbage
Men jeg er kommet længere nu end hidtil :o)
Avatar billede Jman Praktikant
23. november 2004 - 11:05 #27
yes yes yes ... nu kalder den fint med hastighed og det hele...
men hvordan kan dateDiff'en gå hen og blive negativ.. ??
Avatar billede fennec Nybegynder
23. november 2004 - 11:54 #28
Det handler om hvordan tiderne står.
datediff("d","23-11-2004","24-11-2004") = 1
datediff("d","24-11-2004","23-11-2004") = -1

Det er min fejl, jeg ikke havde "> 0" med fra start, men jeg mente at den valliderede alle positive tal til true og negative tal til false, når man brugte det på den måde. Det er åbentbart kun 0 der bliver valideret til false. Derfor virkede det ved "hele" tider, da datedif'en på et tidspunkt gav 0 (false) og derfor afbrød løkken.
Avatar billede Jman Praktikant
23. november 2004 - 12:26 #29
OK - tak for hjælpen med det sidste :)
Avatar billede fennec Nybegynder
23. november 2004 - 12:30 #30
... og tak for karma :o)
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