Avatar billede canedo Nybegynder
08. februar 2005 - 18:24 Der er 20 kommentarer og
2 løsninger

Tidskriterie i sql query

Jeg vil lave en lille statistik over hvor mange besøgende der har været på min side, men ikke hvis den besøgende har været derinde indenfor en time.

Jeg har lavet dette script:


tiden = dateadd("n", +60, now())

'feltet ekstra: den besøgendes sessionID (tekst)
'feltet profilID: den profil som der besøges (tekst)

----------------
sql = "SELECT * FROM [statistik] where [ekstra]='" & session("BrugerID") & "'"
sql = sql & " AND [dato] < " & tiden
rsStat = Connect.execute(sql)

IF rsStat.EOF Then
rsStat("profilID") = request("brugerID")
rsStat("ekstra") = session("BrugerID")
rsStat.addNew
End If

rsStat.Close
----------------

Men jeg får denne fejl:

Syntax error (missing operator) in query expression '[ekstra]='100' AND [dato] < 2/8/2005 7:14:01 PM'.

Feltet [dato] er i langt datoformat.

Hvor går det galt?
Avatar billede and_ Nybegynder
08. februar 2005 - 18:26 #1
er det access?

så husk #
sql = "SELECT * FROM [statistik] where [ekstra]='" & session("BrugerID") & "'"
sql = sql & " AND [dato] < #" & tiden & "#"
Avatar billede canedo Nybegynder
08. februar 2005 - 18:30 #2
Jeg tror det hjalp på det med datoen... men nu får jeg denne:

Object doesn't support this property or method: 'rsStat.eof'
Avatar billede and_ Nybegynder
08. februar 2005 - 18:36 #3
det er heller ikke lige lovligt det du prøver på?

Som jeg forstår koden...

Hvis brugeren ikke har været her inde for den seneste time, skal den lave en post, med nuværende tidspunkt ellers ikke noget?

rigtigt?
Avatar billede canedo Nybegynder
08. februar 2005 - 18:38 #4
Lige præcis... Er den ikke go nok i formlen?

nb: smutter nogle timer, men vender stærkt tilbage.
Avatar billede and_ Nybegynder
08. februar 2005 - 18:38 #5
sql = "SELECT * FROM [statistik] where [ekstra]='" & session("BrugerID") & "'"
sql = sql & " AND [dato] < #" & tiden & "#"
rsStat = Connect.execute(sql)

IF (rsStat.BOF or rsStat.EOF) Then
  rsStat.addNew
  rsStat("profilID") = request("brugerID")
  rsStat("ekstra") = session("BrugerID")
  rsStat.update
End If

rsStat.Close
Avatar billede and_ Nybegynder
08. februar 2005 - 18:40 #6
Du skal huske at Addnew skal være først, da du gerne vil lave en post...
Avatar billede and_ Nybegynder
08. februar 2005 - 18:41 #7
hov... Vi skal vel også lige sætte en tid, så vi ikke tester imod en NULL-værdi :p

sql = "SELECT * FROM [statistik] where [ekstra]='" & session("BrugerID") & "'"
sql = sql & " AND [dato] < #" & tiden & "#"
rsStat = Connect.execute(sql)

IF (rsStat.BOF or rsStat.EOF) Then
  rsStat.addNew
  rsStat("profilID") = request("brugerID")
  rsStat("ekstra") = session("BrugerID")
  rsStat("dato") = now()
  rsStat.update
End If

rsStat.Close
Avatar billede canedo Nybegynder
08. februar 2005 - 21:50 #8
Nu skriver den:

Object doesn't support this property or method: 'rsStat.BOF'
Avatar billede and_ Nybegynder
08. februar 2005 - 22:09 #9
hvordan ser din connect ud?

sql = "SELECT * FROM [statistik] where [ekstra]='" & session("BrugerID") & "' AND [dato] < #" & tiden & "#"
set rsStat = Connect.execute(sql)

IF (rsStat.BOF or rsStat.EOF) Then
  rsStat.addNew
  rsStat("profilID") = request("brugerID")
  rsStat("ekstra") = session("BrugerID")
  rsStat("dato") = now()
  rsStat.update
End If

rsStat.Close
set rsStat = nothing
Avatar billede canedo Nybegynder
08. februar 2005 - 22:38 #10
Jeg har fået min rsStat.BOF til at virke ved at gøre sådan her:

-------
If NOT(int(session("BrugerID"))=int(request("brugerID"))) Then

      tiden = dateadd("n", +1, now())
     
      'feltet ekstra: den besøgendes ID
      'feltet profilID: den profil som der besøges
     
      Set rsStat = Server.CreateObject("ADODB.Recordset")
      sql = "SELECT * FROM [statistik] where [ekstra]='" & session("BrugerID") & "'"
      sql = sql & " AND [dato] < #" & tiden & "#"
      rsStat.Open sql, Connect, 1, 2
     
      IF (rsStat.BOF or rsStat.EOF) Then
        rsStat.addNew
        rsStat("profilID") = request("brugerID")
        rsStat("ekstra") = session("BrugerID")
        rsStat.update
      End If
     
      rsStat.Close
End If
--------------------

Men jeg har et problem... den tæller ikke. Der puttes ikke noget i databasen, - hvorfor gør der ikke det? Den har kun sat ET recordset i databasen (dato: 08-02-05 22:19:11), men sidenhen intet... også selvom jeg har sat "tiden" ned til kun 1 minut.
Avatar billede and_ Nybegynder
08. februar 2005 - 22:41 #11
Prøv at tage en nyt browser-vindue at teste med... og ikke ctrl+n
Avatar billede canedo Nybegynder
08. februar 2005 - 22:46 #12
det hjalp ikke... uanset under hvilke brugerID'er jeg kigger, så sker det ikke en skid.
Avatar billede canedo Nybegynder
08. februar 2005 - 22:49 #13
Jo, vent... Jeg har lige logget ind under en anden profil. Det der tilsyneladende sker er, at første besøg på hvilken somhelst profil bliver registreret, men ikke når man kigger på nogle efterfølgende.

Der må være noget i vejen med sql-querien...
Avatar billede and_ Nybegynder
08. februar 2005 - 22:52 #14
Umiddelbart vil jeg da sige, at det er fordi du tilføjer et minut til tiden, istedet for at trække et minut fra at teste på:

If NOT(int(session("BrugerID"))=int(request("brugerID"))) Then

      tiden = dateadd("n", -1, now())
     
      'feltet ekstra: den besøgendes ID
      'feltet profilID: den profil som der besøges
     
      Set rsStat = Server.CreateObject("ADODB.Recordset")
      sql = "SELECT * FROM [statistik] where [ekstra]='" & session("BrugerID") & "'"
      sql = sql & " AND [dato] < #" & tiden & "#"
      rsStat.Open sql, Connect, 1, 2
     
      IF (rsStat.BOF or rsStat.EOF) Then
        rsStat.addNew
        rsStat("profilID") = request("brugerID")
        rsStat("ekstra") = session("BrugerID")
        rsStat.update
      End If
     
      rsStat.Close
End If
Avatar billede canedo Nybegynder
08. februar 2005 - 23:01 #15
Det hjælper ikke. uanset om der står -1 eller +1 skriver den ikke mere i databasen... SQL'en søge records hvor profil-id'en matcher den besøgendes ID, - OG kun i de records den finder skal der så findes en tid.

Den sql jeg har lavet laver ikke et match mellem den besøgendes id (session brugerID) og profilens id (tabellen [ekstra]). Hmmmm... Den skal jeg lige tænke en ekstra gang over...

Kan du se hvad jeg mener?
Avatar billede and_ Nybegynder
08. februar 2005 - 23:09 #16
Prøv lige at lave ca. 5-10 forespørgsler, hvor du skriver sql'en ud:

  Set rsStat = Server.CreateObject("ADODB.Recordset")
      sql = "SELECT * FROM [statistik] where [ekstra]='" & session("BrugerID") & "'"
      sql = sql & " AND [dato] < #" & tiden & "#"
response.write sql & "<br>"
Avatar billede canedo Nybegynder
08. februar 2005 - 23:21 #17
SELECT * FROM [statistik] WHERE profilID='327' AND [ekstra]='8' AND [dato] < #2/8/2005 11:16:47 PM#

SELECT * FROM [statistik] WHERE profilID='327' AND [ekstra]='8' AND [dato] < #2/8/2005 11:17:13 PM#

SELECT * FROM [statistik] WHERE profilID='327' AND [ekstra]='8' AND [dato] < #2/8/2005 11:18:45 PM#

SELECT * FROM [statistik] WHERE profilID='283' AND [ekstra]='8' AND [dato] < #2/8/2005 11:19:15 PM#

SELECT * FROM [statistik] WHERE profilID='306' AND [ekstra]='8' AND [dato] < #2/8/2005 11:19:49 PM#



nb: har lige tilføjet kriteriet med profilid vs brugerID
Avatar billede and_ Nybegynder
08. februar 2005 - 23:26 #18
lad os prøve med nogle paranteser også:
sql = "SELECT * FROM [statistik] where (profilID = " &  & " AND [ekstra] = '" & session("BrugerID") & "'"
sql = sql & " AND [dato] < #" & tiden & "#)"

Tilføj selv lige profilid i sql'en

er du helt sikker på at det er den rigtige værdi vi tester med i profilid og ekstra?
hvad med tal og bogstaver?

dato skal have # omkring sig
tekst skal have 'omkring sig
tal skal ikke have noget omkring sig
Avatar billede canedo Nybegynder
08. februar 2005 - 23:28 #19
Det ser ud til at virke nu... vil lige teste det ordentligt igennem. Men læg et svar and_ :o)
Avatar billede and_ Nybegynder
08. februar 2005 - 23:44 #20
svar :)

men jeg nægter at tage imod mere end 100
det synes jeg ikke at det er er mere værd ;)
Avatar billede canedo Nybegynder
09. februar 2005 - 11:11 #21
så nupper jeg da bare selv de sidste *s*
Avatar billede and_ Nybegynder
09. februar 2005 - 11:18 #22
takker for point :p
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