webForumDet fria alternativet

typblandningsfel i villkorsuttryck

ASP

2 svar · 258 visningar · startad av syrolis

Medlem sedan feb. 2003107 inlägg
Frågan#1

Har problem att få kontakt med databasen plötsligt då jag gjorde om databasens primärnyckel code_no (som innehöll unika bokstavs och sifferkombinationer) till
primärnyckel code_no (räknare) i stället

Denna kod nedan hade jag innan då allt fungerade bra:

<%code_no=Request.Querystring("code_no")

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(databas_db_name)
sql = "SELECT * FROM products where code_no = '" & code_no & "' ORDER BY ems"
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3%>

Felmeddelandet jag får är

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.

Det är sista kodraden ovan den reagerar på

Jag hoppas naturligtvis på hjälp

Medlem sedan feb. 200112 078 inlägg
#2

Du hanterar kolumnen som en sträng, då blir det typblandningsfel. Jag satte även en Clng()-konvertering på ditt värde, så skyddar det mot sk. SQL-injections (farlig kod) också.

<%code_no=clng(Request.Querystring("code_no"))

Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath(databas_db_name)
sql = "SELECT * FROM products where code_no = " & code_no & " ORDER BY ems"
set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3%>

/red. Det kan även vara värt att byta din connectionstring mot detta; en snabbare drivrutin.

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(databas_db_name)
Medlem sedan feb. 2003107 inlägg
#3

Tack så hjärtligt, det gjorde susen!

Sylvia

266 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)