Avatar billede jobless Nybegynder
11. august 2003 - 11:11 Der 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?

MVH

JoBless
Avatar billede somaliomar Praktikant
12. august 2003 - 10:18 #1
Må vi se noget kode?
Avatar billede jobless Nybegynder
12. august 2003 - 10:36 #2
Ja, sql eller??

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 ?!?!?!?
Avatar billede somaliomar Praktikant
12. august 2003 - 10:42 #3
Det lyder underligt. Past hele koden herinde, både SQL'en og ASP'en, og evt. din database.
Avatar billede jobless Nybegynder
12. august 2003 - 10:58 #4
Jeg kan ikke indsætte hele koden, da det ikke er min (laver noget for en kunde).

Jeg indsætter dog mit connect, og sql streng, og er der andet relevant, indsætter jeg gerne det.

Connect:
Set database = Server.CreateObject("ADODB.Connection")
database.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=C:\db\mydb.mdb" & ";" & _
            "Jet OLEDB:System Database=c:\db\Secured.mdw", _
            "user", "mypassword"

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
Avatar billede somaliomar Praktikant
12. august 2003 - 13:05 #5
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.
Avatar billede jobless Nybegynder
12. august 2003 - 13:12 #6
Dvs. at du mener at det er en fejl i sql'en, eller??

Det undrer mig at jeg kan skifte sortering fram og tilbage, og derefter kan jeg en gang få de ønskede resultater, men derefter er det de forkerte.

Kan der være noget som min connection ændrer ved databasen?
Avatar billede somaliomar Praktikant
12. august 2003 - 14:38 #7
Jeg kan desværre ikke fortælle dig, hvad dit problem skyldes. Du må derfor selv prøve dig frem og fejlfinde på din database og dit script.
Avatar billede hossein Nybegynder
12. august 2003 - 15:01 #8
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.
Avatar billede jobless Nybegynder
12. august 2003 - 15:32 #9
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.
Avatar billede jobless Nybegynder
12. august 2003 - 15:33 #10
SQL-en giver det rigtige resultat i access ?!?
Avatar billede jobless Nybegynder
13. august 2003 - 16:26 #11
For nu at gøre det hele lidt mere enkelt har jeg kogt min sql-linie ned til:

SELECT * FROM ICD WHERE ICD.Firmanavn between 'a' and 'å' ORDER BY Firmanavn

Denne har jeg skrevet ind i min asp-kode, for at eleminenere fejlmulighederne.
Her får jeg 0 resultater i asp, og 850 resultater i access ?!?
Avatar billede somaliomar Praktikant
13. august 2003 - 16:27 #12
Hmm... Har du prøvet med?

SELECT * FROM ICD WHERE ICD.Firmanavn between 'a' and 'z' ORDER BY Firmanavn
Avatar billede jobless Nybegynder
13. august 2003 - 16:36 #13
Hele min testside ser således ud:

<html>
<head>
    <title>test-side</title>
</head>

<body>
<%
place="D:\db"

Set database = Server.CreateObject("ADODB.Connection")
   
database.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & place & "\db.mdb" & ";" & _
    "Jet OLEDB:System Database=" & place & "\Secured.mdw", _
    "user", "pass"
   
   
set objrs=server.createobject("adodb.recordset")
objrs.open "SELECT * FROM ICD WHERE ICD.Firmanavn between 'a' and 'å' ORDER BY Firmanavn", database, 3, 2
   
response.write objrs.recordcount

%>
</body>
</html>
Avatar billede somaliomar Praktikant
13. august 2003 - 16:39 #14
Prøv med det her:

<html>
<head>
    <title>test-side</title>
</head>

<body>
<%
place="D:\db"

Set database = Server.CreateObject("ADODB.Connection")
   
database.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & place & "\db.mdb" & ";" & _
    "Jet OLEDB:System Database=" & place & "\Secured.mdw", _
    "user", "pass"
   
   
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

%>
</body>
</html>
Avatar billede jobless Nybegynder
13. august 2003 - 16:42 #15
a-z giver 850 poster i asp, men kun 846 poster i access ?!?
Avatar billede jobless Nybegynder
13. august 2003 - 16:46 #16
Nu bliver det sjovt..... din kode skriver også poster ud som starter med ø og å
(har vist ingen med æ)
Avatar billede somaliomar Praktikant
13. august 2003 - 16:51 #17
Hmm... Det er meget mærkeligt! Jeg kan stadig ikke se fejlen. Prøv at lege videre med det. Har du f.eks. prøvet:

SELECT * FROM ICD
SELECT * FROM ICD ORDER BY Firmanavn
SELECT * FROM ICD WHERE ICD.Firmanavn = 'a'
Avatar billede jobless Nybegynder
14. august 2003 - 11:27 #18
SQL'en
SELECT * FROM ICD WHERE ICD.Firmanavn like 'å%'

giver mig posterne som starter med å.

Problemet er, at jeg vil søge et interval ud, feks. poster som starter med a eller b eller c eller d.....eller å
Avatar billede jobless Nybegynder
14. august 2003 - 15:54 #19
Jeg har lokaliseret problemet til følgende:

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

?!?!?
Avatar billede somaliomar Praktikant
14. august 2003 - 16:45 #20
Måske er det en bug i Access 2000.
Avatar billede jobless Nybegynder
14. august 2003 - 20:47 #21
Hvordan kommer man videre med dette?
Avatar billede somaliomar Praktikant
14. august 2003 - 20:55 #22
Aner det ikke...
Avatar billede jobless Nybegynder
17. august 2003 - 19:37 #23
Prøver at flytte spørgsmålet til access kategorien...
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