Toon posts:

[ASP/SQL]Datum en Tijd verglijken met ASP

Pagina: 1
Acties:

Verwijderd

Topicstarter
Sorry om jullie nogmaals te storen, maar ditmaal kom ik er echt niet uit, ben al zo'n 3 uur aan het zoeken naar een oplossing, en ook al anderen om hulp gevraagd maar kom er echt niet uit.

Dit is de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<%
    bestand = Request.ServerVariables("QUERY_STRING")
    datum = date()
    ip = Request.ServerVariables("REMOTE_ADDR")
    tijd = time()
    Secs = TimeValue("00:00:30")
    Later = TimeValue(time + Secs)
    Response.Write TimeValue(time)
    Response.Write "<br>"
    Response.Write Later
    Response.Write "<br>"
%>
<%
    
    stats = "SELECT * FROM INTRANET_Statistieken WHERE Datum=#" & datum & "# AND IP = '"& ip & "' AND Tijd BETWEEN #" & tijd & "# AND #" & Later & "#"
    Response.Write stats
    Response.Write "<br>"
    Set RS2 = Conn.Execute(stats)
    
    If IsNull(RS2("Datum")) = True Then
    
    sql = "INSERT INTO INTRANET_Statistieken ([Bestand], [Datum], [Tijd], [IP]) VALUES ('" & bestand & "', '" & datum & "', '" & tijd & "', '" & ip & "')"
    Set RS = Conn.Execute(sql)
    
    Else
    
    Response.Write "test"
    End If
%>



code:
1
2
3
4
5
6
7
De Tabel:

Unicode: Autonummering, Primary Key
Bestand: Text
Datum: Datum/Tijd
Tijd: Datum/Tijd
IP: Text


De server: Microsoft IIS 5.0
De database: Access 2003

Het probleem is dat deze code altijd als resultaat test weergeeft, wat volgensmij betekent dat hij altijd een resultaat heeft, terwijl dit niet zo is.

Het vreemde is als ik de SQL code in Access uitvoer werkt deze wel; dus als er een resultaat is van een bepaalde tijd tot een bepaalde tijd, geeft hij deze ook weer. Is deze er niet dan geeft Access ook geen resultaten weer.

Iemand die hier een antwoord op zou hebben?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-02 14:52

gorgi_19

Kruimeltjes zijn weer op :9

Probeer eens met parametrized queries te werken :) En dat Insert-statement; SQL heeft ook functies om de tijd te bepalen :)

[ Voor 43% gewijzigd door gorgi_19 op 27-04-2006 14:35 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op donderdag 27 april 2006 @ 14:34:
Probeer eens met parametrized queries te werken :) En dat Insert-statement; SQL heeft ook functies om de tijd te bepalen :)
Eh..Het maakt toch niet uit of het bepalen van de datum op ASP of SQL niveau gebeurd?
En voor parameterized queries, dat is toch helemaal niet nodig?

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 22-02 00:22

Janoz

Moderator Devschuur®

!litemod

Jij bent degene die moeite heeft met je code. Het lijkt me daarom ook niet dat je zomaar kunt beoordelen dat dingen niet uitmaken of overbodig zijn. Zeer waarschijnlijk lossen ze je probleem wel op.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Zou er iemand dan zo vriendelijk willen zijn een link te plaatsen naar waar ik geavanceerde datum reken functies kan vinden op SQL niveau of iemand die een aantal voorbeeldjes wilt plaatsen hoe het wel moet?

Verwijderd

Verwijderd schreef op donderdag 27 april 2006 @ 15:08:
Zou er iemand dan zo vriendelijk willen zijn een link te plaatsen naar waar ik geavanceerde datum reken functies kan vinden op SQL niveau of iemand die een aantal voorbeeldjes wilt plaatsen hoe het wel moet?
www.google.nl :)

Heb je al geprobeerd je query af te drukken? Hoe heb je de code in Access getest?

Druk hem eens af en bekijk hem dan eens goed :)

Je doet een select op een time/date en geeft hem een time mee... Zoiets heb ik je in je vorige topic ook al proberen te vertellen.

[ Voor 13% gewijzigd door Verwijderd op 27-04-2006 15:23 ]


Verwijderd

Topicstarter
Verwijderd schreef op donderdag 27 april 2006 @ 15:22:
[...]

www.google.nl :)

Heb je al geprobeerd je query af te drukken? Hoe heb je de code in Access getest?

Druk hem eens af en bekijk hem dan eens goed :)

Je doet een select op een time/date en geeft hem een time mee... Zoiets heb ik je in je vorige topic ook al proberen te vertellen.
1. Ja ik heb al op google gezocht (al 2 uur lang) en ja, de query werkt in Access

2. Ik heb hem met een Response.Write weergegeven dan is de output bijvoorbeeld als volgt:
code:
1
SELECT * FROM INTRANET_Statistieken WHERE Datum=#27-4-2006# AND IP = '192.168.146.199' AND Tijd BETWEEN #15:22:47# AND #15:23:17#

[ Voor 4% gewijzigd door Verwijderd op 27-04-2006 15:29 ]


Verwijderd

Hmms, als dat goed gaat, oke...

Maar goed: If IsNull(RS2("Datum")) = True Then

Dit slaat nergens op :) Ik heb niet veel verstand van ASP, maar volgens mij komt uit deze toekenning altijd TRUE :)

Je kunt vast wel op een of andere manier opvragen hoeveel records je select heeft opleverd, dit is echt enorm lelijk. Die =True hoeft er echt niet bij.

Je zegt toch ook niet:

IF 3=3 = true

... :)
Zou er iemand dan zo vriendelijk willen zijn een link te plaatsen naar waar ik geavanceerde datum reken functies kan vinden op SQL niveau of iemand die een aantal voorbeeldjes wilt plaatsen hoe het wel moet?
Die zijn ECHT wel te vinden op google
Snap niet waar jij dan 2 uur naar gezocht hebt 8)7

[ Voor 46% gewijzigd door Verwijderd op 27-04-2006 15:31 ]


Verwijderd

Topicstarter
Verwijderd schreef op donderdag 27 april 2006 @ 15:29:
Hmms, als dat goed gaat, oke...

Maar goed: If IsNull(RS2("Datum")) = True Then

Dit slaat nergens op :) Ik heb niet veel verstand van ASP, maar volgens mij komt uit deze toekenning altijd TRUE :)

Je kunt vast wel op een of andere manier opvragen hoeveel records je select heeft opleverd, dit is echt enorm lelijk. Die =True hoeft er echt niet bij.

Je zegt toch ook niet:

IF 3=3 = true

... :)
Die = True was nog een probeersel van mij dat ook niet werkte :P
Een counter erin heb ik net al gedaan en geeft als aantal results 0 aan :S

Verwijderd

Verwijderd schreef op donderdag 27 april 2006 @ 15:34:
[...]

Een counter erin heb ik net al gedaan en geeft als aantal results 0 aan :S
Dan zijn er dus geen records opgeleverd... 8)7 Of zouden die er wel moeten zijn..?

Verwijderd

Topicstarter
Als er geen records zijn, moet hij die INSERT draaien, maar dat gebeurd dus niet en displayed hij toch het bericht test weer, dat is net het vreemde :?

Verwijderd

Verwijderd schreef op donderdag 27 april 2006 @ 15:38:
Als er geen records zijn, moet hij die INSERT draaien, maar dat gebeurd dus niet en displayed hij toch het bericht test weer, dat is net het vreemde :?
Ja test dan op hoeveel records die select oplevert, indien gelijk aan 0 => insert.

Dus niet met die Isnull...

Verwijderd

Topicstarter
Oke, naar wat te hebben getest, ben ik er achtegekomen dat het aan de query ligt.

De query werkt gedeeltelijk als ik If RS18("IP") = "", maar niet als ik IsNull of IsEmpty gebruik en de query werkt, niet volledig, het stuk met de Datum en het IP werkt. Het stuk met AND Tijd BETWEEN ... AND .... werkt niet. Daar zit dan volgensmij ook de fout.

Verwijderd

Verwijderd schreef op vrijdag 28 april 2006 @ 09:21:
Oke, naar wat te hebben getest, ben ik er achtegekomen dat het aan de query ligt.

De query werkt gedeeltelijk als ik If RS18("IP") = "", maar niet als ik IsNull of IsEmpty gebruik en de query werkt, niet volledig, het stuk met de Datum en het IP werkt. Het stuk met AND Tijd BETWEEN ... AND .... werkt niet. Daar zit dan volgensmij ook de fout.
Hoevaak moet ik hetzeggen?? Het is enorm lelijk om op die manier te kijken of je een resultaat hebt!!! Je kunt van je resultaat opvragen hoeveel records het bevat, die check vervang je dan door die IsNull of die nieuwbedachte if van je.

:X

  • azuidhof
  • Registratie: April 2005
  • Laatst online: 07-01-2022
Verwijderd schreef op vrijdag 28 april 2006 @ 09:21:
Oke, naar wat te hebben getest, ben ik er achtegekomen dat het aan de query ligt.

De query werkt gedeeltelijk als ik If RS18("IP") = "", maar niet als ik IsNull of IsEmpty gebruik en de query werkt, niet volledig, het stuk met de Datum en het IP werkt. Het stuk met AND Tijd BETWEEN ... AND .... werkt niet. Daar zit dan volgensmij ook de fout.
En ik kan je echt aanraden je goed te verdiepen in het verschil tussen NULL values en lege/empty velden (""). Dit probleem ga je zeker vaker tegenkomen.
Kijk bv es naar dit draadje op GoogleGroups waar een goede uitgebreide uitleg staat http://groups.google.nl/g...fd7c49%232062ace22afd7c49

Mijn .NET blog!


Verwijderd

Topicstarter
Oke, dat artikel heb ik gelezen en heb een query toegevoegd die lege Items naar NULL omzet.
Verder ben ik nu bezig de query op SQL niveau te bouwen m.b.v. de Query Tool in Access, maar kom er nog niet uit.

Dit is wat ik al heb:

code:
1
2
3
SELECT INTRANET_Statistieken.Unicode, INTRANET_Statistieken.Bestand, INTRANET_Statistieken.Datum, INTRANET_Statistieken.Tijd
FROM INTRANET_Statistieken
WHERE (((INTRANET_Statistieken.Datum)=Date()) AND ((INTRANET_Statistieken.Tijd) Between Time() And "xxxxx"));


De xxxxx op het eind moet verplaatst worden door Nu + 30 seconden in de toekomst, heb al zitte puzzelen met dateadd, time()+seconds(30) etc... maar kom er niet echt uit en op google vind ik ook niet echt een duidelijk antwoord behalve: http://www.codetoad.com/asp_converting_time.asp maar dit wil dus niet werken.

Verwijderd

code:
1
2
3
SELECT INTRANET_Statistieken.Unicode, INTRANET_Statistieken.Bestand, INTRANET_Statistieken.Datum, INTRANET_Statistieken.Tijd
FROM INTRANET_Statistieken
WHERE (((INTRANET_Statistieken.Datum)=Date()) AND ((INTRANET_Statistieken.Tijd) Between Time() And DateAdd("s", 30, Time());

8)7

Timeadd ASP op google:

http://www.htmlforums.com/archive/index.php/t-16586.html

Tsjah...

Wellicht moet je met Now() ipv Time() in DateAdd() gaan werken, maar dan moet je er de tijd even uitfilteren. Kan het nl. niet checken, maar het moet wel zo.

[ Voor 38% gewijzigd door Verwijderd op 28-04-2006 10:37 ]


Verwijderd

Topicstarter
Oke, wat je hebt geschreven lukt, maar hij geeft met de query, helaas zowel in Access als ASP geen resultaten weer. Hoe zou dat mij now() wel werken btw als het met time niet werkt?, en als dat werkt, hoe haal je de datum er dan vanaf?

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:30

TeeDee

CQB 241

http://msdn.microsoft.com...1bc-a489-070296ced968.asp

Misschien dat dat een hele hoop werkt scheelt. Met andere woorden: er zijn meer wegen naar rome.

[ Voor 10% gewijzigd door TeeDee op 28-04-2006 11:33 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
Oke, bedankt allemaal :)

En ik ben eigenwijs, dat weet ik :P, maar ik heb het uiteindelijk opgelost met de volgende code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%
    
    stats = "SELECT * FROM INTRANET_Statistieken WHERE Bestand='" & bestand & "' AND IP = '"& ip & "' AND Datum=#" & datum & "# ORDER BY Tijd DESC"
    Set RS18 = Conn.Execute(stats)
    
    HuidigeTijd = Time()
    DBTime = RS18("Tijd")
    DBTime_Future = DateAdd("s", 30, DBTime)
    
    If DBTime_Future < HuidigeTijd Then
    
    sql4 = "INSERT INTO INTRANET_Statistieken ([Bestand], [Datum], [Tijd], [IP]) VALUES ('" & bestand & "', #" & datum & "#, #" & mytime & "#, '" & ip & "')"
    Set RS = Conn.Execute(sql4)
    
    Else
    
    Response.Write "U heeft de pagina binnen 30 seconden ververst"
    
    End If
%>


Niet de beste code maar het werkt :)

[ Voor 20% gewijzigd door Verwijderd op 28-04-2006 12:24 ]


Verwijderd

Het werkt, maar is veel minder efficient :)
Pagina: 1