Avatar billede sho Nybegynder
03. april 2005 - 09:09 Der er 4 kommentarer og
1 løsning

Case Sensivity i Access

Hej Eksperter,

jeg sidder og bøvler med et irriterende problem med et SQL-statement. Normalt er Access ikke case sensitiv, men nu er jeg ved at lave en hjemmeside, hvor det lader til, at den alligevel er det - og jeg kan ikke finde ud af at omgå det.

Det er en Access 2000-database, der er åbnet i Access 2003, men i Access 2000-format (hvis det overhovedet skulle have nogen betydning!)

Eksempel:
Hvis jeg søger med

SELECT ID, cOverskrift, cText FROM tblPages WHERE cText LIKE '%havelåge%'

finder den ikke de samme records, som hvis jeg søger med

SELECT ID, cOverskrift, cText FROM tblPages WHERE cText LIKE '%Havelåge%'

Jeg har forsøgt mig med UCase, men Access er temmelig indifferent! Hvis jeg f.eks. bruger

SELECT ID, cOverskrift, cText FROM tblPages WHERE Ucase(cText) LIKE Ucase('%Havelåge%')

så finder den det, der svarer til 'Havelåge' - altså den samme case sensitive søgning, og

SELECT ID, cOverskrift, cText FROM tblPages WHERE Ucase(cText) LIKE '%HAVELÅGE%')

finder slet ingenting.

Jeg har for god ordens skyld prøvet at hente cText ud som uppercase, hvilket virkede fint, så jeg må antage, at Access reagerer korrekt på Ucase:

SELECT ID, cOverskrift, cText, UCase([cText]) as UpperCase FROM tblPages

Er det mig, der skulle have sovet en time længere i dag, eller er det Access/SQL, der er besværlig?

-Søren
Avatar billede sho Nybegynder
03. april 2005 - 11:09 #1
Og som et led i min fejlfinding bør måske nævnes, at ASP og Access ikke får det samme ud af det samme SQL-statement...

Hvis jeg i min kode laver et SQL-statement og printer det sammen med resultatet af søgningen, så får jeg via ASP ét resultat, men hvis jeg kopierer det over i Access og prøver den samme forespørgsel, er resultatet 0 forekomster.

Og det er såmænd et meget simpelt statement:
SELECT ID, cTitel, cTekst, cPeriode FROM tblPages WHERE (cTitel LIKE '%tunge%')

Er det mig eller Access, der er fuldstændig galt på den?!? - hvis jeg søger manuelt med Find-funktionen i Access, finder den det fint...
Avatar billede sjap Praktikant
03. april 2005 - 11:25 #2
Beskrivelsen her svarer ikke præcist til din, men måske kan det alligevel hjælpe dig

http://support.microsoft.com/default.aspx?scid=kb;en-us;223202
Avatar billede sho Nybegynder
03. april 2005 - 11:56 #3
Et godt bud, men desværre ikke det rigtige...
Avatar billede Jørgen Kirkegaard Professor
05. april 2005 - 22:30 #4
Jeg er sikker på, at du finder svaret mellem Access 2000 og 2003! Prøv at lave dit statement i samme database som du har lagret tabellen i. Hvis dette er 2000, og det går godt, så prøv i "ren" 2003. Hvis det også går godt, så opgradér alt til 2003 og gå tidligt i seng i morgen.
Avatar billede sho Nybegynder
06. april 2005 - 08:19 #5
Jeg havde selv fundet frem til den samme løsning, men havde ikke lukket spørgsmålet efter mig, så du skal have tak for hjælpen - og får pointene for ulejligheden! :-)
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