Avatar billede rille101 Nybegynder
10. december 2010 - 14:30 Der er 1 løsning

Opdater post, hvis den er indenfor bestemt tidsrum

Hej.
Jeg har ASP en side der viser nogle slides.
Siden opdaterer sig selv hvert 20. sekund, og jeg har netop lavet et felt i min database der hedder "status".
Med den kan jeg gøre et slide inaktiv/aktiv ved at ændre værdien til hhv. 0 og -1.

Jeg kunne godt tænke mig at lave en timer, hvor jeg kan indtaste dato og klokkeslæt for starttid og sluttid.

Ideen er så at et recordset finder alle poster der ligger indenfor et givent tidsrum og ændrer status værdien til -1, samtidig med at et andet recordset finder alle dem udenfor og sætter deres statusværdi til 0.

For at den ikke skal løbe alle poster igennem, hver gang den skal opdatere en side har jeg lavet et felt der hedder "timer".
Kun slides der har en aktiveret timer (felt sat til -1) vil blive medtaget i recordsettet.

Mit problem er, at jeg ikke kan finde ud af at lave en sql der finder de poster der ligger mellem det aktuelle tidspunkt.

Her er hvad jeg har:

'------------------------------------------------------
Dim myConn
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.open(sConn)

set RStimer=Server.CreateObject("ADODB.recordset")
RStimer.Open "SELECT * FROM slides WHERE timer = -1", myConn

if not RStimer.EOF then

'-- aktiv --
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.open(sConn)
strSQL = "update slides set prioritet = prioritet"
strSQL = strSQL & ", status= -1"
strSQL = strSQL & " where (FraDato >= "&date()&" AND tidspunkt >= "&time()&") And ("&date()&" <= TilDato AND sluttidspunkt <= "&time()&") AND timer = -1"
myConn.Execute(strsql)
'-- "opdater record" slut
bUpdate = true
end if'------------------------------------------------

Får dog at vide at der er en fejl i min sql
[MySQL][ODBC 3.51 Driver][mysqld-5.0.77-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ':18:43) And (10-12-2010 <= TilDato AND sluttidspunkt <= 14:18:43) AND timer = -1' at line 1
Avatar billede rille101 Nybegynder
23. februar 2011 - 07:18 #1
Her er løsningen:

set RStimer=Server.CreateObject("ADODB.recordset")
RStimer.Open "SELECT * FROM slides WHERE timer = -1", myConn

if not RStimer.EOF then

'-- Sæt aktiv --
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.open(sConn)
strSQL = "update slides set prioritet = prioritet"
strSQL = strSQL & ", status= -1"
strSQL = strSQL & " where Now() BETWEEN timerStart AND timerStop AND timer = -1 AND status = 0"
myConn.Execute(strsql)
'-- "opdater record" slut
bUpdate = true
end if
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