Avatar billede thomas_r Nybegynder
24. februar 2000 - 11:16 Der er 2 kommentarer og
2 løsninger

SQL og ASP

Jeg skal finde alle posterne der har en pris mellem en minimum og en maksimum pris.
Lad os sige jeg har en post hvor prisen er 1000000
Indtaster man PrisMin=2 og PrisMax=2000000 finder den ingen resultater, hvis man indtaster PrisMin=0000002 og PrisMax=2000000 finder den posten.

I databasen er Prisfelttypen ”tekst” laver jeg den om til tal får jeg følgende :

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e07'
[Microsoft][ODBC Microsoft Access-driver] Datatyperne stemmer ikke overens i kriterieudtrykket.

Her er lidt af koden :

strKeyword = Trim(Request.Form("Ejendomstype"))
strPris = Trim(Request.Form("PrisMin"))
strPrisMax = Trim(Request.Form("PrisMax"))

If Len(strKeyword) = 0 Then
    Response.Clear
    Response.Redirect("search.htm")
Else
    strKeyword = Replace(strKeyword,"'","'")
    strPris = Replace(strPris,"'","'")
    strPrisMax = Replace(strPrisMax,"'","'")
End If

strSQL = "SELECT ID, Ejendomstype, Ejendomstypetext, Pris, Stor, Amt, Amttext, Kommune, Kommunetext, By, Bytext, Beskrivelse FROM Ejendomme WHERE"
strSQL = strSQL & " (Ejendomstype ='" & strKeyword & "')"
strSQL = strSQL & " AND (Pris Between '" & strPris & "' And '" & strPrisMax & "')"

strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("search_2000.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

Set rs = myConn.Execute(strSQL)

Osv...
Avatar billede sjensen Nybegynder
24. februar 2000 - 11:39 #1
Du kan ikke søge med sql efter et tekstfelt i tabellen med et talfelt !

Du kan enten ændre tabellen således at pris og prismax bliver talfelter (med efterfølgende konvertering af alle data) eller lave en lille rutine der laver tallene om til en tekst og sætter 0'er foran det indtastede indtil en bestemt længde, f.eks. 10, således at uanset hvad du indtaster bliver tallene altid 10 tegn lange med foranstillede nuller.

Eks.

indtastet 125 bliver til 0000000125 og
indtastet 20000 bliver til 0000020000

så vil din søgning virke hver gang.

Avatar billede thomas_r Nybegynder
24. februar 2000 - 11:52 #2
Jeg vil gerne lave Pris i databasen om til et tal felt, men så skrever den :

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e07'

[Microsoft][ODBC Microsoft Access-driver] Datatyperne stemmer ikke overens i kriterieudtrykket.
Avatar billede carpediem Nybegynder
24. februar 2000 - 12:19 #3
Hvis du laver feltet om til tal, skal der også ændres lidt i koden.

strSQL = strSQL & " AND (Pris Between '" & strPris & "' And '" & strPrisMax & "')"

Skal se således ud

strSQL = strSQL & " AND (Pris Between " & strPris & " And " & strPrisMax & ")"
Avatar billede carpediem Nybegynder
24. februar 2000 - 12:20 #4
Hovsa...Det vil sige, at du skal fjerne ' rundt om strPris og strPrisMax
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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