11. august 2003 - 11:11Der er
22 kommentarer og 1 løsning
Danske tegn
Hej.
Jeg har problemer med at lave sql-udtræk af min access database, når jeg søger et interval af tekst.
Sql'en virker fint i access, og returnerer de poster den skal. Når jeg søger i asp giver den næsten ingen resultater. Når jeg ændrer min sortering i access fra norsk/dansk til generel, får jeg samme resultat i access som i asp. Derfra har jeg konkluderet (måske fejlagtigt) at jeg skal have sat en egenskab på min asp-side, for at sætte den rigtige søgning. Jeg har prøvet med session.lcid og sesion codepage, samt noget meta name, men altsammen uden held.
Er der nogle forslag, evt. ændring af en egenskab på serveren?
Det mest underlige er, at når jeg skifter sortering inde i min db i access, compact and repair, og skifter tilbage til norsk/dansk og laver en compact og repair, kommer de ønskede resultater ud i første søgning, men når jeg bare refresher siden, kommer der ikke de ønskede resultater ud, før jeg igen skifter sortering frem og tilbage i access ?!?!?!?
SQL: SELECT * FROM ICD WHERE ICD.Firmanavn <> 'Pointyhair' AND ICD.Firmanavn >= 'a' AND (ICD.Firmanavn <= 'å' OR ICD.Firmanavn LIKE 'å%') AND ICD.UdtraakSpaerret = false ORDER BY Firmanavn
Det bliver lidt svært at hjælpe dig, når jeg ikke kan se databasen. Men det du kan gøre, er at lave en ny database med den ene tabel, ICD og udfylde nogle test-data i tabellen. Derefter kan du fra et ASP-script, sende forskellige forespørgsler til databasen. Eksempler:
strSQL = "SELECT * FROM ICD" strSQL = "SELECT * FROM ICD WHERE ICD.Firmanavn <> 'Pointyhair'" strSQL = "SELECT * FROM ICD WHERE ICD.Firmanavn = 'a'" osv.
På den måde kan du lokalisere, hvor fejlen opstår.
din sql sætning er måske ikke helt rigtig, hvad er det som du vil trække ud? SELECT * FROM ICD WHERE ICD.Firmanavn <> 'Pointyhair' AND ICD.Firmanavn >= 'a' AND (ICD.Firmanavn <= 'å' OR ICD.Firmanavn LIKE 'å%') AND ICD.UdtraakSpaerret = false ORDER BY Firmanavn
denne del har jeg tvivl om: ICD.Firmanavn <= 'å' OR ICD.Firmanavn LIKE 'å%'
Prøv evt. at tilføje dine kriterier en efter en også kan du se hvor det går galt.
Det er en dynamisk opbygget sql, som (i dette tilfælde) skal returnere alle firmanavne som ligger i intervallet a - å (forbogstav a-å), samt selvf. opfylder de andre parametre.
set objrs=server.createobject("adodb.recordset") objrs.open "SELECT * FROM ICD WHERE ICD.Firmanavn between 'a' and 'å' ORDER BY Firmanavn", database, 3, 2
set objrs=server.createobject("adodb.recordset") objrs.open "SELECT * FROM ICD WHERE ICD.Firmanavn between 'a' and 'z' ORDER BY Firmanavn", database, 3, 2
while not objrs.EOF response.write(objrs(0) & "<br>") objrs.MoveNext wend
Hvis jeg bruger en alm. access2000 db virker det korrekt, men kører jeg guiden 'Sikkerhed på brugernivesu', og tilgår min db (gennem samme driver) med brugernavn og password, bliver første søgning rigtig, med efterfølgende søgninger er forkerte. Genstarter jeg IIS'en virker første søgning igen rigtigt, og efterfølgende forkert. Der bruges eksakt samme kode, blot ændring i mit db-connect
Prøver at flytte spørgsmålet til access kategorien...
Synes godt om
Ny brugerNybegynder
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.