Toon posts:

[ASP/Access] Datum vergelijking werkt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben voor een website bezig een agenda te maken, op zich geen probleem behalve dat ik op de voorpagina alle evenementen tussen vandaag en over 3 maanden wil laten zien.

In mijn access 2000 database zijn de startdatum en de einddatum als datum opgeslagen

Ik heb voor de vergelijking 2 variabelen aangemaakt "ditpunt" dat de datum van vandaag bevat en "beginpunt" dat via DateAdd de datum over 3 maanden bevat.

Om alle evenementen die binnen nu en 3 maanden plaatsvinden te selecteren en de evenementen die nu al lopen (beginnen voor vandaag of vandaag en eindigen vandaag of na vandaag) heb ik de volgende selectiequery gemaakt:

code:
1
2
3
4
5
6
7
8
9
rsEvents.Source = "SELECT *  FROM tblAgenda  WHERE 
active = 1 
AND 
(
startdatum <= #" + Replace(rsEvents__beginpunt, "'", "''") + "# 
AND 
einddatum >= #" + Replace(rsEvents__ditpunt, "'", "''") + "#
) 
ORDER BY startdatum ASC"


Na een output naar het scherm komt ik op het volgende resultaat:

SELECT * FROM tblAgenda WHERE active = 1 AND ((startdatum <= #1-4-2003# AND einddatum >= #1-4-2003#) OR (startdatum <= #1-7-2003# AND einddatum >= #1-4-2003#))ORDER BY startdatum ASC

Het probleem is dat hij geen evenementen toont :? bijvoorbeeld een evenement op 9-6-2003 geeft hij niet weer terwijl die toch echt actief is en binnen nu en drie maanden begint en daarmee ook voldoet aan de tweede datumselectie.

Wie weet waar dit aan kan liggen?

[ Voor 15% gewijzigd door Verwijderd op 01-04-2003 11:08 . Reden: Lay-out werd ver***kt ]


Verwijderd

Ik heb zelf een MFC applicatie met een Access database, maar dan moet de datum juist andersom neergezet worden, net als in MySQL zeg maar: yyyy-mm-dd

code:
1
startdatum <= #2003-4-1# AND einddatum >= #2003-4-1#

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Het lijkt me beter wanneer je in je WHERE clausule gebruik maakt van BETWEEN dus:

ASP:
1
2
3
SELECT * FROM tblAgenda 
WHERE active = 1 AND startdatum BETWEEN 1-4-2003 AND 1-7-2003 
ORDER BY startdatum ASC 


Zie ook
http://www.w3schools.com/sql/sql_between.asp

...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
Maar de datum wordt door de Server via Date() gemaakt, het lijkt me dat hij dan toch dd-mm-yyyy gebruikt en de database ook uitleest alszijnde dd-mm-yyyy of zou ik dat fout bedenken?

Ik ben ondertussen even met alleen "startdatum > #" + Replace(rsEvents__ditpunt, "'", "''") + "# " bezig geweest en dan selecteert hij ook de data die al zijn geweest... hij kan dus de data niet vergelijken met < of >.

Het zou toch moeten werken met < of > tenminste alle sites en de boeken die ik ervoor heb opengeslagen geven allemaal aan dat ik het zo zou moeten doen...

@ Devraux:

Ga ik even proberen, laat het zo weten...

------ 2 minutes later:

Output response.write:

SELECT * FROM tblAgenda WHERE active = 1 AND ((startdatum BETWEEN #1-4-2003# AND #1-7-2003#) OR (einddatum BETWEEN #1-4-2003# AND #1-7-2003#)) ORDER BY startdatum ASC

Resultaat: geen evenementen worden getoond, het lijkt wel of mijn testsysteem en de server waar hij op moet gaan draaien beide niet begrijpen wat een datum is.

[ Voor 42% gewijzigd door Verwijderd op 01-04-2003 12:50 . Reden: Comment toegevoegd ]


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Simpelste oplossing is meestal alle data eenduidig te formatten in je SQL-statement. Of de datum dan namelijk van de server of client of whatever afkomt: de format zorgt ervoor dat ze altijd hetzelfde opgebouwd zijn.

My personal website


Verwijderd

Topicstarter
Ik heb het als harde datum in de query gezet (yyyy-mm-dd) en dan werkt het inderdaad wel...
Dus dan gaan we dat eens verder uitzoeken.

mfcer, je had toch gelijk.

OZ-Gump, devraux, bedankt voor de antwoorden, ik ga ermee aan de slag.

Verwijderd

Ik heb het nog eens gewoon in acces zelf getest (query aanmaken etc.) Ook met de Between, en als ik dd-mm-yyyy gebruik krijg ik inderdaad geen records, maar als ik het op mijn manier doe, yyyy-mm-dd, dan werkt het prima.

Ik zou dus aanraden: probeer het gewoon

edit:

ik was te laat met dit bericht :)

[ Voor 10% gewijzigd door Verwijderd op 01-04-2003 13:20 ]

Pagina: 1