hur ser det ut om du skriver
Response.Write SQL
Raden efter SQL-satsen?
------------------
kolung.....det tål att tänkas på!
7 svar · 189 visningar · startad av LearningASP
Jag har en inloggningssida, som man fyller i ett användarid och detta är det unika indexet i databasen som består av en räknare. så när man fyller i med bokstäver i användarid fältet och ska logga in så får man fäljande fel och det är ju inte så snyggt man vill ju ha att det kommer ett mer användarvänligt felmeddelande ;)
Microsoft OLE DB Provider for ODBC Drivers fel '80040e10'
[Microsoft][Drivrutin för ODBC Microsoft Access] För få parametrar angavs. 1 förväntades.
/porsche/login/login_ok.asp, line 30
min SQL
SQL = "SELECT Rs_Forsalj_ID, Rs_Losen FROM forsaljare WHERE Rs_Forsalj_ID = " & strAnvID & " AND Rs_Losen = '" & strLosen & "' "
Tack på förhand
hur löser man det???
------------------
Varje dag är en ny lektion ;)
hur ser det ut om du skriver
Response.Write SQL
Raden efter SQL-satsen?
------------------
kolung.....det tål att tänkas på!
så här ser hela koden ut
<%
If Request.Form("FormAnvID") = "" AND Request.Form("FormLosen") = "" Then
Response.Redirect "login.asp?fel=both"
ElseIF Request.Form("FormAnvID") = "" Then
Response.Redirect "login.asp?fel=AnvID"
ElseIF Request.Form("FormLosen") = "" Then
Response.Redirect "login.asp?fel=Losen"
End If
Dim strAnvID, strLosen, ObjConn, SQL, rs
strAnvID = Request.Form("FormAnvID")
strLosen = Request.Form("FormLosen")
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=c:\crystal\databas\annonser.mdb"
SQL = "SELECT Rs_Forsalj_ID, Rs_Losen FROM forsaljare WHERE Rs_Forsalj_ID = " & strAnvID & " AND Rs_Losen = '" & strLosen & "' "
Response.Write " " & SQL & ""
set rs = objConn.Execute(SQL)
If RS.EOF Then
'felaktigt inloggning
Response.Redirect "login.asp?fel=inlogning"
Else
'allt är i sin ordning
Response.Write "Välkommen, Du är nu inloggad"
id = strAnvID
dim forsalj_id, id
session("forsalj_id") = id
End If
%>
<% if session("forsalj_id") then %>
<script language = "JavaScript">
parent.navframe.location.href="../nav/minsid.asp";
parent.logoframe.location.href="../topp.asp";
</script>
<% End If %>
och detta felmeddelande får jag
SELECT Rs_Forsalj_ID, Rs_Losen FROM forsaljare WHERE Rs_Forsalj_ID = 123jhkjhk AND Rs_Losen = 'klhjgf'
Microsoft OLE DB Provider for ODBC Drivers fel '80040e14'
[Microsoft][Drivrutin för ODBC Microsoft Access] Syntaxfel (operator saknas) i frågeuttrycket 'Rs_Forsalj_ID = 123jhkjhk AND Rs_Losen = 'klhjgf''.
/porsche/login/login_ok.asp, line 34
------------------
Varje dag är en ny lektion ;)
Är inte användarnamn ett textfält om det är det ska det vara
SQL = "SELECT Rs_Forsalj_ID, Rs_Losen FROM forsaljare WHERE Rs_Forsalj_ID = '" & strAnvID & "' AND Rs_Losen = '" & strLosen & "' "
Om inte så vad är det för fälttyper??
------------------
kolung.....det tål att tänkas på!
Hmm :r strAnvID är inte riktigt rätt med str det ska vara intAnvID men datatypen är räknare så problemet är ju att den inte vill ta bokstäver
------------------
Varje dag är en ny lektion ;)
Nu förstår inte jag.
Räknare är av typen tal och kan således inte ta text.
Du måste ta användar id'et och validera mot rätt fält, således kan inte intAnvID innehålla text om du ska validera mot räknar fältet.
cya,
PatrikB
------------------
-=* IF there is a wrong way to do something, then someone will do it *=-
jo jag vet att man inte kan ha text när man validerar men jag vill att det ska bli ett "snyggare" felmeddelande när man "råkar" skriva in text i användarid då förstår Ni nu?
------------------
Varje dag är en ny lektion ;)
Bara att checka strängen som kommer innan man öppnar connection/skapar recordsetet och exekverar sql-frågan:
If IsNumeric(Trim(strFirstName)) Then
'## -- är ju ett nummer och du kan köra valideringen --
Else
'## -- felmess --
Response.Write "HALLÅ!!! ingen text här tack!"
End If
cya,
PatrikB
------------------
-=* IF there is a wrong way to do something, then someone will do it *=-