Toon posts:

[ASP] Datums vergelijken

Pagina: 1
Acties:

Verwijderd

Topicstarter
Stonden meerdere topics over in de search, I know, ben ook wat opgeschoten, maar het werkt toch niet helemaal goed nog..

Ik heb een Access XP database met een tabel "Agenda", daarin staat een kolom "Datum", ik wil dus alle records ophalen die ouder zijn dan vandaag:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<%@LANGUAGE="VBSCRIPT"%> 
<!--#include file="Connections/connBassline.asp" -->
<%
function fixDate(datum)
fixDate = datepart("yyyy",datum) & "/" & datepart("m",datum) & "/" & datepart("d",datum) 
end function
%>
<%
set fotos = Server.CreateObject("ADODB.Recordset")
fotos.ActiveConnection = MM_connBassline_STRING
fotos.Source = "SELECT *  FROM AGENDA  WHERE fixDate(Datum) < fixDate(date())  ORDER BY Datum DESC"
fotos.CursorType = 0
fotos.CursorLocation = 2
fotos.LockType = 3
fotos.Open()
fotos_numRows = 0
%>


die fixDate functie heb ik uit de search gehaald en moet beide datums in hetzelfde formaat zetten, zodat het daar niet fout kan gaan. Maar ik krijg nu de melding dat deze functie niet gedefinieerd is...
Voor ik deze functie erin stopte werkte het trouwens wel met een = vergelijking, maar niet met een < of >
Datum staat trouwens in access als een datum/tijd type met korte datumnotatie...

[ Voor 21% gewijzigd door curry684 op 09-06-2003 17:03 ]


Verwijderd

Omdat je fixDate() in je query aanroept, zal de functie binnen Access geevalueerd worden, waar deze dus niet bestaat. Je zult het dus anders op moeten lossen ...

Verwijderd

Topicstarter
enig idee hoe?? ik zit er nu al 3 uur aan maar het wil maar niet lukken :(

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

enig idee hoe?? ik zit er nu al 3 uur aan maar het wil maar niet lukken
Gebruik die functie fixDate gewoon om de dag van vandaag in een variabele te plaatsen en gebruik deze variabele vervolgens om alle records waarvan de datum kleiner is dan de waarde van deze variabele te tonen :)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Hint 1: Zet je query eens op je scherm en wees verbaasd.
Hint 2: Waarbij ik me verder afvraag wat het nut is van je fixdate.
Hint 3: SQL kent een DateDiff functie.

Vraag 1: Enig idee wat je aan het doen bent, of is het op de gok dat je wat uitprobeert?

[ Voor 86% gewijzigd door gorgi_19 op 09-06-2003 17:16 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • PcFer
  • Registratie: September 2002
  • Laatst online: 22:13
je bedoelt data :D

Verwijderd

Topicstarter
gorgi_19 schreef op 09 June 2003 @ 17:09:
Hint 1: Zet je query eens op je scherm en wees verbaasd.
Hint 2: Waarbij ik me verder afvraag wat het nut is van je fixdate.
Hint 3: SQL kent een DateDiff functie.

Vraag 1: Enig idee wat je aan het doen bent, of is het op de gok dat je wat uitprobeert?
tis niet echt op de gok, kan wel redelijk programmeren...maar ASP heb ik moeten leren met dreamweaver, waar je dus niets van de code ziet. Maar als ik het goed begrijp kan ik in mijn SQL die dateDiff functie aanroepen om zo de records te selecteren waar het verschil < 0?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op 09 juni 2003 @ 17:26:
[...]


tis niet echt op de gok, kan wel redelijk programmeren...maar ASP heb ik moeten leren met dreamweaver, waar je dus niets van de code ziet. Maar als ik het goed begrijp kan ik in mijn SQL die dateDiff functie aanroepen om zo de records te selecteren waar het verschil < 0?
Probeer het eens, zou ik zeggen.

[ Voor 3% gewijzigd door gorgi_19 op 09-06-2003 17:29 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 09 June 2003 @ 17:28:
[...]

Probeer het eens, zou ik zeggen.
code:
1
2
3
4
5
6
7
8
9
10
<%
set fotos = Server.CreateObject("ADODB.Recordset")
fotos.ActiveConnection = MM_connBassline_STRING
fotos.Source = "SELECT * FROM AGENDA WHERE DateDiff("d",now(),Datum) < 0"
fotos.CursorType = 0
fotos.CursorLocation = 2
fotos.LockType = 3
fotos.Open()
fotos_numRows = 0
%>


zo staat ie in m'n ASP, query werkt wel in access, maar in IE krijg ik de melding:
Compilatiefout Microsoft VBScript (0x800A0401)
Einde van de instructie wordt verwacht
/Bassline/fotos.asp, line 6, column 54
fotos.Source = "SELECT * FROM AGENDA WHERE (DateDiff("d",now(),Datum) < 0)"
maar ja, zodra ik er wat aan verander klopt m'n SQL niet meer... :?

[ Voor 21% gewijzigd door Verwijderd op 09-06-2003 18:04 ]


Verwijderd

Denk aan het escapen van quotes in een string ...

Verwijderd

Topicstarter
Verwijderd schreef op 09 June 2003 @ 18:05:
Denk aan het escapen van quotes in een string ...
wat bedoel je precies? quotes staan toch goed...ik open, drop m'n SQL erin en sluit 'm

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

ASP:
1
Response.Write "Deze string met "quotes" gaat fout. Nu de vraag.. Waarom?"

De eenvoudige versie van boven.

[ Voor 19% gewijzigd door gorgi_19 op 09-06-2003 18:12 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
in dat geval zal het ongetwijfeld door de "d" komen...wat moet ik er voor zetten zodat het niet herkend wordt als einde van de instructie?

Verwijderd

code:
1
fotos.Source = "SELECT * FROM AGENDA WHERE (DateDiff("d",now(),Datum) < 0)"

De string loopt nu vanaf de eerste " tot de eerstvolgende, nl. die na DateDiff(". De rest wordt niet begrepen, waardoor je deze foutmelding krijgt. Om een " in een string op te nemen moet je hem escapen. In VBScript gaat dat (uit mijn hoofd) door er een extra " voor te zetten. De code zou dus volgens mij zo moeten werken (niet getest):
code:
1
fotos.Source = "SELECT * FROM AGENDA WHERE (DateDiff(""d"",now(),Datum) < 0)"

HTH :)

Verwijderd

Topicstarter
Verwijderd schreef op 09 juni 2003 @ 18:16:
code:
1
fotos.Source = "SELECT * FROM AGENDA WHERE (DateDiff("d",now(),Datum) < 0)"

De string loopt nu vanaf de eerste " tot de eerstvolgende, nl. die na DateDiff(". De rest wordt niet begrepen, waardoor je deze foutmelding krijgt. Om een " in een string op te nemen moet je hem escapen. In VBScript gaat dat (uit mijn hoofd) door er een extra " voor te zetten. De code zou dus volgens mij zo moeten werken (niet getest):
code:
1
fotos.Source = "SELECT * FROM AGENDA WHERE (DateDiff(""d"",now(),Datum) < 0)"

HTH :)
nope, dan werkt de query niet meer :'(

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

En wij mogen nu raden naar de foutmelding en wat er gebeurd?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
Dim CurrentDate As Date

CurrentDate = Now()

fotos.Source = " SELECT *" & _
               " FROM AGENDA" & _
               " WHERE (Datum < #" & Format$(CurrentDate,"mm") & "/" & _
                                     Format$(CurrentDate,"dd") & "/" & _
                                     Format$(CurrentDate,"yyyy") & "#" & _
               " ORDER BY Datum DESC"


ps. Hoe krijg ik lege regels in [code]?

Verwijderd

Topicstarter
gorgi_19 schreef op 09 June 2003 @ 18:24:
En wij mogen nu raden naar de foutmelding en wat er gebeurd?
nee het is mij duidelijk wat er fout is, enige wat ik dus wil weten is hoe ik die "d" zo krijg dat die aanhalingstekens niet herkend worden als einde van de expressie, snap je? :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-08 11:40

gorgi_19

Kruimeltjes zijn weer op :9

da's escaping en heeft MrX je al voorgedaan.

Methodiek van sinaasappelsap, weliswaar omgeschreven naar VBScript, moet ook werken.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op 09 June 2003 @ 18:28:
da's escaping en heeft MrX je al voorgedaan.

Methodiek van sinaasappelsap, weliswaar omgeschreven naar VBScript, moet ook werken.
ja dat heb ik dus geprobeerd, alleen werkt mijn query dan niet meer (heb ik getest in Access)...idem bij die methodiek van sinaasappelsap..

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Vervang die dubbele quotes eens door single quotes ;)
ASP:
1
fotos.Source = "SELECT * FROM AGENDA WHERE (DateDiff('d',now(),Datum) < 0)"

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


Verwijderd

Topicstarter
DeverauX schreef op 09 June 2003 @ 18:33:
Vervang die dubbele quotes eens door single quotes ;)
ASP:
1
fotos.Source = "SELECT * FROM AGENDA WHERE (DateDiff('d',now(),Datum) < 0)"
Afbeeldingslocatie: http://www.weak-link.nl/forum/html/emoticons/cork.gif

held!

gorgi en mrX ook bedankt! :)

  • Feyd-Rautha
  • Registratie: November 2001
  • Laatst online: 02-08-2025
Petur:

Het is wel de bedoeling van GoT dat je ook dingen gaat opzoeken in tutorials, boeken, ...

Je kreeg reeds de oplossing voorgeschoteld: namelijk dat je de " moest escapen. Ik denk dat het een kleine klus was om eens in tutorials van vbScript enzo op te zoeken hoe je moet escapen. Zo zal je het meest bijleren :)

I must not fear. Fear is the mind-killer. Fear is the little-death that brings total obliteration. I will face my fear. I will permit it to pass over me and through me. Where the fear has gone there will be nothing. Only I will remain.


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Feyd-Rautha schreef op 09 June 2003 @ 19:35:
Petur:

Het is wel de bedoeling van GoT dat je ook dingen gaat opzoeken in tutorials, boeken, ...

Je kreeg reeds de oplossing voorgeschoteld: namelijk dat je de " moest escapen. Ik denk dat het een kleine klus was om eens in tutorials van vbScript enzo op te zoeken hoe je moet escapen. Zo zal je het meest bijleren :)
Het is dat ik te lang aan het eten was om het verloop van dit topic te volgen, anders had ik 'm ergens rond kwart over 6 dichtgegooid :) Op het moment dat we hier in een topic beginnen te helpen ontslaat dat je niet van enige plicht om nog zelf dingen te proberen en op te zoeken: GoT is geen 'oplossingenfabriek' maar een denktank waar je hier en daar de problemen in kunt stoppen die je boven het hoofd groeien. Volgende keer wat assertiever dus aub. :Y)
Verwijderd schreef op 09 June 2003 @ 18:25:
ps. Hoe krijg ik lege regels in [code]?
Sprak hij nadat hij 2 lege regels in een blok VB had gebruikt...? :? :+

Professionele website nodig?

Pagina: 1