Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[ASP/SQL] Sortering datum na 1-1-2008 gaat fout

Pagina: 1
Acties:

  • IceOnFire
  • Registratie: Oktober 2000
  • Niet online
Op een tweetal Windows 2000 SP4 servers heb ik al een jaar of drie een aantal ASP-webapplicaties draaien die als database een lokale access-database gebruiken. Op allerhande pagina's output ik recordsets uit simpele SQL-queries die ik via ADO richting access stuur. Werkt allemaal al tijden geweldig, ik loop alleen sinds 1 januari van dit jaar tegen een wat wonderlijk probleem aan; als ik sorteer op datum (gewoon SQL order by $datumveld) wordt alles keurig gesorteerd, behalve de data na 1-1-2008, die komen er in schijnbaar willekeurige volgorde tussendoor.

Een willekeurige "order by $datum asc" op een kleine recordset levert bijvoorbeeld dit op;

16-01-2008
30-01-2008
14-02-2008
11-01-2008
27-11-2007
10-12-2007
21-12-2007

Bij grotere recordsets komen de data uit 2008 niet alleen in de eerste records voor, maar ook regelmatig willekeurig tussendoor. Alleen kijkend naar de data in 2008 staan die data in willekeurige volgorde lijkt het.

De systeemdata zijn overigens op alle servers in Nederlands formaat, de data worden ook in NL formaat opgeslagen. Als ik de databases los in access open zie ik in het datumveld geen verschil in notatie oid tov de data die voor 2008 liggen. De velden in kwestie zijn uiteraard in het access datum/tijd formaat, als ik binnen access zelf sorteer werkt dat prima.

Op de betreffende twee servers zijn de laatste tijd geen nieuwe software of patches oid geinstalleerd.

Nu wil het geval dat ik ook een tweetal windows server 2003 servers heb, als ik het eea naar die servers verplaats is het probleem als sneeuw voor de zon verdwenen.... Ook op deze servers is de systeemdatum nederlands.

Uiteraard heb ik me inmiddels redelijk scheel gezocht, maar ik kan geen meldingen vinden van anderen met dezelfde problemen. Ik heb t probleem nog even in de MDAC (MS Data Access Components) gezocht; er stond inderdaad een wat verouderde versie op de servers (2.5) maar installatie van de nieuwste 2.8 SP1 leverde niets op. Installatie an sich is wel succesvol verlopen gezien de versienr's van de betreffende DLL's.

Iemand enig idee in welke richting ik een oplossing zou kunnen zoeken?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 17:22

gorgi_19

Kruimeltjes zijn weer op :9

Wat is je exacte query die uitgevoerd wordt? En wat is het datatype van de datum in je database?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • sig69
  • Registratie: Mei 2002
  • Nu online
gorgi_19 schreef op donderdag 21 februari 2008 @ 07:25:
En wat is het datatype van de datum in je database?
IceOnFire schreef op donderdag 21 februari 2008 @ 00:16:
...
De velden in kwestie zijn uiteraard in het access datum/tijd formaat, als ik binnen access zelf sorteer werkt dat prima.
Post inderdaad even je query en andere relevante code.

Roomba E5 te koop


  • IceOnFire
  • Registratie: Oktober 2000
  • Niet online
Voorbeeldje code (simpeler in opzet kan toch bijna niet dacht ik :))

code:
1
2
3
4
5
6
7
8
  SQL = "select * from tabel order by datum"
  set DB = Server.CreateObject("ADODB.Connection")
  DB.Open "databasenaam"
  set rs = DB.Execute(SQL)
  while not rs.eof
    response.write rs("datum")
    rs.MoveNext
  wend


Zoals in de sp al vermeld is het betreffende veld in access datum/tijd formaat

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
is die data die je in je startpost post ook daadwerkelijke data, of wat verzonnen data? in geval van het laatste, post even wat daadwerkelijke data, kan zijn dat je je verzonnen data beetje ongelukkig kiest om het probleem te zien.

  • lier
  • Registratie: Januari 2004
  • Laatst online: 22:36

lier

MikroTik nerd

Van welk datatype is het datum veld ?Sorry...beter lezen

En hoe ziet je resultaat eruit als je deze query in Access uitvoert ?
Is het (in het algemeen) een optie om over te stappen op SQL ?

[ Voor 68% gewijzigd door lier op 21-02-2008 12:18 ]

Eerst het probleem, dan de oplossing


  • sig69
  • Registratie: Mei 2002
  • Nu online
Edwardvb schreef op donderdag 21 februari 2008 @ 12:13:
is die data die je in je startpost post ook daadwerkelijke data, of wat verzonnen data? in geval van het laatste, post even wat daadwerkelijke data, kan zijn dat je je verzonnen data beetje ongelukkig kiest om het probleem te zien.
Zat ik ook net aan te denken.
lier schreef op donderdag 21 februari 2008 @ 12:17:
En hoe ziet je resultaat eruit als je deze query in Access uitvoert ?
IceOnFire schreef op donderdag 21 februari 2008 @ 00:16:
...
De velden in kwestie zijn uiteraard in het access datum/tijd formaat, als ik binnen access zelf sorteer werkt dat prima.
Staat in dezelfde zin ;)

Roomba E5 te koop


  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Session.LCID = 1043 (of 1033) al eens geprobeerd ?
En welke connectie string gebruik je ?

PS: Het lijkt alsof je een DSN gebruikt, maar welke driver; "Jet.OleDB.4.0" of "Microsoft Access" ?

[ Voor 36% gewijzigd door SKiLLa op 21-02-2008 12:50 ]

'Political Correctness is fascism pretending to be good manners.' - George Carlin


  • IceOnFire
  • Registratie: Oktober 2000
  • Niet online
Session.LCID staat inderdaad op 1043, ook als ik die op de pagina terugvraag krijg ik die keurig te zien. Ik gebruik inderdaad een DSN, met de Microsoft Access driver. Het lijstje in de startpost is "echt", ik heb voor de overzichtelijkheid een kleine rs genomen. Ik kan ook evt wel een paar langere lijsten posten mocht dat wellicht helpen.

Overstappen op een andere database overweeg ik op t moment niet, als t compleet onoplosbaar zou blijken zet ik het eea over naar de Windows Server 2003 machines, daar werkt dezelfde code zonder aanpassingen wel feilloos.

[ Voor 24% gewijzigd door IceOnFire op 21-02-2008 13:11 ]


  • SKiLLa
  • Registratie: Februari 2002
  • Niet online

SKiLLa

Byte or nibble a bit ?

Ik zou niet de Microsoft Access driver gebruiken maar altijd de :

DB.Open "Provider=Microsoft.Jet.OleDB.4.0; Data Source=<filepath_van_db>".

De Access ODBC driver is gewoon erg brak & traag in vergelijking met de OleDB variant.
En op Win2K3 ga je bijna zeker issues (onder load) krijgen met de Access driver.

Welke versie .mdb is je database ? Access 97 of 2000 of 2003 formaat ?
Open en save (as) de database dan eens met Access 2003 en test die ...

'Political Correctness is fascism pretending to be good manners.' - George Carlin


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Waarom sla je je data niet gewoon op in engels dataformaat :? Die conversie kan je altijd in je GUI weer doen lijkt me, en het neemt je hele probleem weg.

Stop uploading passwords to Github!


  • j_du_pee
  • Registratie: Maart 2000
  • Laatst online: 23-09-2024

j_du_pee

du pain, du vin, du pee

edit: crap, ik heb een sorteerfout gemaakt in excel, onderstaande gaat niet op :o |:(


Een opmerking die niet echt een oplossing is, maar misschien helpt:

- Als je het onderstaande rijtje neemt:
16-01-2008
30-01-2008
14-02-2008
11-01-2008
27-11-2007
10-12-2007
21-12-2007

- en vervolgens de - vervangt door /
- dit interpreteert als een deling
- zijn dit de getallen:
3,75
2
1,375
0,875
0,350649351
0,25
0,119047619

Wat op zich keurig is gesorteerd. In dat geval zou dus ergens je datum als deling worden herkend ipv als datumveld.

[ Voor 10% gewijzigd door j_du_pee op 21-02-2008 13:43 ]

kaart != map && bottel != fles
Wacht op antwoord


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
SchizoDuckie schreef op donderdag 21 februari 2008 @ 13:26:
Waarom sla je je data niet gewoon op in engels dataformaat :? Die conversie kan je altijd in je GUI weer doen lijkt me, en het neemt je hele probleem weg.
Je slaat niet op in een engels/nederlands/whatever formaat; achter de schermen is het allemaal hetzelfde. Het is puur de representatie die engels/nederlands/whatever is. Dus of je nou 18/2/2008 ziet of 2-28-2008, achter de schermen is het exact hetzelfde opgeslagen en doet je GUI dat dus al.

Bij het inserten/updaten is het wel verstandig om yyyymmdd formaat aan te houden, zodat de driver altijd zonder problemen weet wat je nou bedoelt; mm/dd/yyyy, mm-dd-yyyy, dd/mm/yyyy en mm/dd/yyyy en ga zo maar door zijn namelijk voor meerdere interpretaties vatbaar, en zolang je die niet expliciet kenbaar maakt is het gewoon het veiligst om yyyymmdd te gebruiken. Again; ook deze datum zal gewoon worden opgeslagen als elke andere datum; of je die nu mm/dd of dd/mm weergeeft.

Wat betreft de TS; ik had er nog hout van kunnen snijden als je iets als:
1-1-2008
20-1-2008
3-1-2008
had gekregen, maar de volgorde die je post in de TS maakt voor mij weinig sense; ben je héél zeker dat je écht een datetime gebruikt en dat die data écht zo eruit komt?

[ Voor 11% gewijzigd door RobIII op 21-02-2008 14:13 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • IceOnFire
  • Registratie: Oktober 2000
  • Niet online
Yup, heel zeker helaas..
Dat t onder server 2003 wel prima werkt is daar ook redelijk bewijs van lijkt me, net als t sorteren wat binnen access zelf prima loopt. Ik heb de database inmiddels ook nog even geconverteerd naar access 2003 formaat, maar ook dat helpt geen biet..
Uiterst wazig allemaal..

Verwijderd

Mag ik iets vragen/leren? (misschien off-topic).
Wat betekent die $ in de veld-naam? Je gebruikt hem 2x in je start-post, dus ik neem aan dat het geen typo is... Ik heb hem echter nog nooit gezien.

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
doet hij het wel goed als je doet:

order by year(datum), month(datum), day(datum)

?

  • IceOnFire
  • Registratie: Oktober 2000
  • Niet online
Verwijderd schreef op vrijdag 22 februari 2008 @ 11:39:
Mag ik iets vragen/leren? (misschien off-topic).
Wat betekent die $ in de veld-naam? Je gebruikt hem 2x in je start-post, dus ik neem aan dat het geen typo is... Ik heb hem echter nog nooit gezien.
:) is bedoeld als soort pseudocode om aan te geven dat datum niet letterlijk "datum" is maar het datumveld
Edwardvb schreef op vrijdag 22 februari 2008 @ 11:43:
doet hij het wel goed als je doet:

order by year(datum), month(datum), day(datum)

?
"Error in criteria expression", dat lijkt ie uberhaupt niet te snappen.

[ Voor 8% gewijzigd door IceOnFire op 22-02-2008 16:59 ]

Pagina: 1