webForumDet fria alternativet

Type Mismatch....hittar inte felet

ASPur ASP

8 svar · 516 visningar · startad av WebbisNet

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

var är det type mismatch här i den fetmarkerade raden

<%varUsername=request.form("txtUsername")
set rs=Conn.execute("SELECT count(alias) as cUsername FROM eaglemountains WHERE alias = '"& varUsername &"'")

[B]If rs("cUsername") => 1 Then
   response.redirect "/Reg/reg-form.asp?err=double"
end if[/B]

Dim objConn, SQL
Dim varUsername,varPassword,varFornamn,varEfternamn,varCommunity,varCity,varSex,varWebsite,varRegDate,varEmail

Dim txtPersonnr
if varUsername = "" then
response.redirect "reg-form.asp?error=noUserName"
end if
		varUsername = FriendlySQL(Request.Form ("txtUsername"))
		varPassword = Request.Form ("txtPassword")
		varFornamn= FriendlySQL(Request.Form ("txtFornamn"))
		varEfternamn= FriendlySQL(Request.Form ("txtEfternamn"))
		varCommunity = FriendlySQL(request.form("txtCommunity"))
		varCity = FriendlySQL(Request.Form ("underKommun"))
		varSex = FriendlySQL(Request.Form ("chkSex"))
		varRegDate = now()
		'varWebsite = FriendlySQL(Request.Form ("txtWebsite"))
		varEmail = FriendlySQL(Request.Form ("txtEmail"))
		txtPersonnr = getDate("txtPersonnr")
		'varPres= FriendlySQL(Request.Form("txtPres"))
		'varTips= FriendlySQL(Request.Form("txtTipsadAv"))
Medlem sedan sep. 2006867 inlägg
#2

Jo det beror på precis vad felmeddelandet säger.

Du försöker kolla om strängen rs("") är större eller lika med siffran 1

Om cUsername alltid är en siffra kan du typkonvertera med hjälp av funktionen CInt, till exempel:

If CInt(rs("cUsername")) => 1 Then
   response.redirect "/Reg/reg-form.asp?err=double"
end if

/HB

Medlem sedan jan. 20011 154 inlägg
#3

Antar att du är ute efter att kolla om du får tillbaka något resultat från queryn:

If NOT rs.EOF Then
   response.redirect "/Reg/reg-form.asp?err=double"
End If
Medlem sedan juni 200032 969 inlägg
#4

Man ska alltid kontrollera vad man får ut. Min gissning är att det finns risk att du får null.

Medlem sedan sep. 2006867 inlägg
#5

Eller kanske att om han får tillbaka fler än exakt en post så finns det dubletter?

Då kan man använda rs.RecordCount

If rs.RecordCount > 1 Then
   response.redirect "/Reg/reg-form.asp?err=double"
end if
Medlem sedan feb. 20032 027 inlägg
#6

tack, nu är det att jag inte får ut personnumret, får bara '' vid utskrift, ändrade även datatyp från date till varchar utan framgång. formulärnamnet stämmer så värdet borde skickas med

	varUsername = FriendlySQL(Request.Form ("txtUsername"))
		varPassword = Request.Form ("txtPassword")
		varFornamn= FriendlySQL(Request.Form ("txtFornamn"))
		varEfternamn= FriendlySQL(Request.Form ("txtEfternamn"))
		varCommunity = FriendlySQL(request.form("txtCommunity"))
		varCity = FriendlySQL(Request.Form ("underKommun"))
		varSex = FriendlySQL(Request.Form ("chkSex"))
		varRegDate = now()
		'varWebsite = FriendlySQL(Request.Form ("txtWebsite"))
		varEmail = FriendlySQL(Request.Form ("txtEmail"))
		[B]varPersonnr = FriendlySQL(CDate(Request.Form ("txtPersonnr_year") & "-" & Request.Form ("txtPersonnr_month") &"-" & Request.Form ("txtPersonnr_day")))[/B]
		'varPres= FriendlySQL(Request.Form("txtPres"))
		'varTips= FriendlySQL(Request.Form("txtTipsadAv"))

SET objConn = Connect()

	SQL = "INSERT INTO eaglemountains"
	SQL = SQL & "(alias,pass,Fornamn,Efternamn,lan, ort,kon,registrerad, epost,pnr) "
	SQL = SQL & "VALUES('"& varUsername &"','"& varPassword &"','"& varFornamn &"','"& varEfternamn &"','"&varCommunity &"','"& varCity &"','"& varSex &"','"&varRegDate&"','"& varEmail &"',[B]'"&txtPersonnr &"'[/B])"
	varID=session("userID")
	response.write SQL
	response.end
	objConn.Execute(SQL)
Medlem sedan sep. 2006867 inlägg
#7

Jag vill minnas att CDate är jättebråkig med avseende på rätt kultur-info, den är kräsen på format, om det skall vara backslashar och i vilken ordning siffrorna ska stå...

Om du byter ut Request.Form-historian till "1970-10-02" eller så, blir det rätt då?
Annars testa "02/10/70" osv.

Förresten, vilken lösning var det som fick det att fungera med ditt förra problem?

Medlem sedan juni 200032 969 inlägg
#8

Om man är läskunnig så är det inte svårt att se att du kallar variabeln varPersonnr, och lägger in txtPersonnr i SQL-frågan.

Skriv alltid ut alla variabler så ser du var saker och ting försvinner. Om nu det finns ett värde i variabeln före sql-frågan, men det inte står något i SQL-frågan så finns det inte så många alternativ.

Medlem sedan feb. 20032 027 inlägg
#9

headbug skrev:

Jag vill minnas att CDate är jättebråkig med avseende på rätt kultur-info, den är kräsen på format, om det skall vara backslashar och i vilken ordning siffrorna ska stå...

Om du byter ut Request.Form-historian till "1970-10-02" eller så, blir det rätt då?
Annars testa "02/10/70" osv.

Förresten, vilken lösning var det som fick det att fungera med ditt förra problem?

Det var CInt från jonne i förra

135 ms totalt · 3 externa anrop · v20260731065814-full.55e59744
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)