Du skall alltid ange decimaltal med punkt som decimaltecken i SQL-frågor. Kommatecken används för att separera fält / värden.
Mvh
7 svar · 349 visningar · startad av devotion
Hej!
Har följande kodsnutt som läger till data i en db. Datat kommer från ett formulär med dynamsikt antal poster.
For each item in Request.Form("cnt")
strSQL = "INSERT INTO tblTravel(user, travelDate, miles, TaskNr, travelType) " &_
"VALUES('" & Request.form("user") & "', #" & Request.Form("Datum" & item) & "#, " & Request.Form("miles" & item) & ", " &_
" '" & Request.Form("taskNr" & item) & "', '" & Request.Form("travelType" & item) & "')"
objConn.execute(strSQL)
Next
Det finns mer att göra med tanke på säkerheten...
Men, det fungear fint när jag skriver in ett heltal i "Miles" skriver jag däremot tex 2,5 så kommer följande felmeddelande:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Drivrutin för ODBC Microsoft Access] Antalet värden i frågan och antalet målfält är olika.
/time/registerTravels2.asp, line 22
Hur ska jag ändra koden för att det ska fungera... och hur ska jag skriva för att inte behöva ha request.form i sql-satsen där jag hellre vill ha variabler som är "säkra"
Mvh
Henrik
Du skall alltid ange decimaltal med punkt som decimaltecken i SQL-frågor. Kommatecken används för att separera fält / värden.
Mvh
:)
Okej!
Men hur ska jag lösa det så att användaren "skriver rätt"
och hur byter jag ut request.form till en varibel i stället?
Mvh
Hehe... kanske! Eller så har jag missförstått allt... (vilket iofs är mest troligt)..
Jo det ser så krångligt ut:
Request.Form("Datum" & item)
Hur får jag med det där & item om jag gjort om det till en variabel.. Det är mest där jag inte får ihop det...
Mvh
Provade göra så här:
Dim strSQL, objConn, objRS, sUser, dTravelDate, iMiles, sTaskNr, sTravelType
sUser = SQLSafe(Request.form("user"))
dTravelDate = Request.Form("Datum")
iMiles = Replace(Request.Form("miles"), ",", ".")
sTaskNr = SQLSafe(Request.Form("taskNr"))
sTravelType = SQLSafe(Request.Form("travelType"))
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.ConnectionString = "DSN=uppdragNu"
objConn.Open
For each item in Request.Form("cnt")
strSQL = "INSERT INTO tblTravel(user, travelDate, miles, TaskNr, travelType) " &_
"VALUES('" & sUser & "', #" & dTravelDate & item & "#, " & iMiles & item & ", " &_
" '" & sTaskNr & item & "', '" & sTravelType & item & "')"
objConn.execute(strSQL)
Next
objConn.Close
Set objConn = Nothing
public function SQLSafe(sText)
SQLSafe = replace(sText, "'", "''")
end function
%>
Men det funkade ju (givetvis) inte... :(
Mvh
Nej, det funkar ju inte. :)
Gör variabeltilldelningen inne i loopen.
For each item in Request.Form("cnt")
iMiles = Replace(Request.Form("miles" & item), ",", ".")
....
mvh