webForumDet fria alternativet

type mismatch

23 svar · 736 visningar · startad av WebbisNet

WebbisNetMedlem sedan feb. 20032 027 inlägg
#1

Microsoft VBScript runtime error '800a000d'

Type mismatch

/registration/saveMember.asp, line 7

hittar inte felet med denna kod, det har fungerat tidigare när communityt hade ett annat namn, rad 7 är fetmarkerad

<%varUsername=Request.Querystring("an")
set rs=objConn.execute("SELECT count(username) as cUsername FROM tblUsers WHERE username = '"& varUsername &"'")

[B]If rs("cUsername") => 1 Then[/B]
   response.redirect "/Registration/reg-form.asp?err=double"
else
		varUsername = FriendlySQL(Request.Querystring ("an"))
		varPassword = Request.Querystring ("lo")
		varFornamn= FriendlySQL(Request.Querystring ("fn"))
		varEfternamn= FriendlySQL(Request.Querystring ("en"))
		varCommunity = FriendlySQL(request.form("txtCommunity"))
		varCity = FriendlySQL(Request.Form ("underKommun"))
		varSex = FriendlySQL(Request.Querystring ("sex"))
		varRegDate = now()
		varWebsite = FriendlySQL(Request.Form ("h"))
		varEmail = FriendlySQL(Request.Form ("ep"))
		varPersonnr = FriendlySQL(Request.Querystring ("pn"))
		varRID = FriendlySQL(Request.Querystring ("rID"))
		'varPres= FriendlySQL(Request.Form("txtPres"))
		'varTips= FriendlySQL(Request.Form("txtTipsadAv"))
LedelMedlem sedan dec. 2004736 inlägg
#2

If CLng(rs("cUsername")) >= 1 Then

Om jag inte minns ASP fel är väl alltid data från ett recordset av datatypen string? Därmed kan den inte jämföras som integer. Lägg sedan märke till >=, då det heter större eller lika med och därmed bör skrivas i den ordningen.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#3

det hjälpte inte och det lustiga är att den koden funkade perfekt förra gången, har inte gjort några ändringar heller

WebbisNetMedlem sedan feb. 20032 027 inlägg
#4

får mismatch även på en annan sida, finns det nån gemensam nämnare mellan dessa två koddelar????

strHost = Request.ServerVariables("REMOTE_HOST")
strAddress = Request.ServerVariables("REMOTE_ADDR")
nowDate = Now()
strReferer = Request.ServerVariables("HTTP_REFERER")

set objConn = connect()

strSQL = "select count(*) from tblStats where Address = '" & strAddress & "'"
set rsResults = objConn.Execute( strSQL )

[B]If rsResults( 0 ) = 0 Then[/B]
	count = "INSERT INTO tblStats"
	count = count & "(Host, Address, countDate,Visits,Referer) "
	count = count & "VALUES('"& strHost &"','"& strAddress &"','" & nowDate & "',1,'" & strReferer & "')"
	objConn.Execute count
else
update="UPDATE tblStats SET Visits=Visits + 1 WHERE Address='"&strAddress&"'"
objConn.Execute update

End If
<%varUsername=Request.Querystring("an")
set rs=objConn.execute("SELECT count(username) as cUsername FROM tblUsers WHERE username = '"& varUsername &"'")

[B]If rs("cUsername") => 1 Then[/B]
   response.redirect "/Registration/reg-form.asp?err=double"
else
		varUsername = FriendlySQL(Request.Querystring ("an"))
		varPassword = Request.Querystring ("lo")
		varFornamn= FriendlySQL(Request.Querystring ("fn"))
		varEfternamn= FriendlySQL(Request.Querystring ("en"))
		varCommunity = FriendlySQL(request.form("txtCommunity"))
		varCity = FriendlySQL(Request.Form ("underKommun"))
		varSex = FriendlySQL(Request.Querystring ("sex"))
		varRegDate = now()
		varWebsite = FriendlySQL(Request.Form ("h"))
		varEmail = FriendlySQL(Request.Form ("ep"))
		varPersonnr = FriendlySQL(Request.Querystring ("pn"))
		varRID = FriendlySQL(Request.Querystring ("rID"))
		'varPres= FriendlySQL(Request.Form("txtPres"))
		'varTips= FriendlySQL(Request.Form("txtTipsadAv"))
@ndersMedlem sedan juni 200032 969 inlägg
#5

Men alltså.

  1. Typkonvertera innan du jämför med tal!
  2. Som Ledel skriver, det ska vara >=, inte =>!!!

Fungerar det verkligen inte när du gör bägge dessa förändringar? Oerhört konstigt.

@ndersMedlem sedan juni 200032 969 inlägg
#6

Ledel skrev:

Om jag inte minns ASP fel är väl alltid data från ett recordset av datatypen string?

Njä, inte riktigt sant. Om man har tur fungerar det utan att typkonvertera, det kan bero lite på vilken dbms / drivrutin man använder hur datat returneras.

Men att skriva kod som måste ha tur för att fungera - det suger. Alltid typkonvertera om det finns risk att typer inte stämmer.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#7

@nders skrev:

Men alltså.

  1. Typkonvertera innan du jämför med tal!
  2. Som Ledel skriver, det ska vara >=, inte =>!!!

Fungerar det verkligen inte när du gör bägge dessa förändringar? Oerhört konstigt.

jag fick det inte att fungera iaf
jag skriver
If rs("cUsername") >= 1 Then
lägger upp den på servern, sparar och uppdaterar sidan och det blir ingen förändring

@ndersMedlem sedan juni 200032 969 inlägg
#8

Typkonvertera, typkonvertera, typkonvertera.
Jag har en känsla av att du inte läser vad vi skriver.

drewMedlem sedan mars 2007845 inlägg
#9

@nders skrev:

Typkonvertera, typkonvertera, typkonvertera.
Jag har en känsla av att du inte läser vad vi skriver.

Jag har en känsla av att någon borde skriva ett exempel på hur han ska typkonvertera. Som

$int_var = intval($str);

fast det är inte ASP.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#10

drew skrev:

Jag har en känsla av att någon borde skriva ett exempel på hur han ska typkonvertera. Som

$int_var = intval($str);

fast det är inte ASP.

jag är inte bra på att typkonvertera direkt så jag vore tacksam om nån visade hur jag skriver det i asp så kan jag lära mig ngt nytt

LedelMedlem sedan dec. 2004736 inlägg
#11

Ledel skrev:

CLng(rs("cUsername"))

CLng(s) konverterar s till ett tal (long för att vara exakt) och ska därmed bli jämförbart med ett tal.

Edit: Vad jag menade med mitt första inlägg är att du skall byta ut din if-sats mot den jag skrev och testa med den.

dAEkMedlem sedan feb. 20041 816 inlägg
#12

Hoppas att detta tas på rätt sätt...

Är det inte jävligt frustrerande att få sådana här eller liknande (nybörjar)fel och inte se vad som är fel? Går man tillbaks i tiden via sökfunktionen kan man se att du har haft problem med type mismatch så långt bak som runt år 2004/2005. Idag är det 2009. Tålamod har du inte brist på iaf. Om jag var du hade jag blivit tokig för länge, länge sedan! ;)

Ta dig tid och labba lite eller använd befintlig kod. Försök förstå vad som blir fel och varför. Ha alltid dokumentation och API till hands när du utvecklar.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#13

jag misstänkte att det var det, har använt det tidigare men det var länge sen och kom inte på exakt vad det hette, tack så enormt mycket för din hjälp

WebbisNetMedlem sedan feb. 20032 027 inlägg
#14

på det andra stället ändrades raden för felmeddelandet efter typkonverteringen och där är det fortfarande type mismatch, har försökt att hitta felet men jag har inte lyckats

If CLng(rsResults( 0 )) = 0 Then
	count = "INSERT INTO tblStats"
	count = count & "(Host, Address, countDate,Visits,Referer) "
	[B]count = count & "VALUES('"& strHost &"','"& strAddress &"','" & nowDate & "',1,'" & strReferer & "')"[/B]
	objConn.Execute count
else
update="UPDATE tblStats SET Visits=Visits + 1 WHERE Address='"&strAddress&"'"
rille77Medlem sedan feb. 200476 inlägg
#15

Du måste kolla så att rsResults(0) verkligen innehåller nåt som kan konverteras till ett tal.
Null kan t.ex. inte konverteras till ett tal.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#16

testade även om jag får EOF på den men det gjorde ingen skillnad, får jag EOF ska en ny post in, är det samma så dator så ska posten bara uppdateras med ett nytt besök

@ndersMedlem sedan juni 200032 969 inlägg
#17

WebbisNet skrev:

jag är inte bra på att typkonvertera direkt så jag vore tacksam om nån visade hur jag skriver det i asp så kan jag lära mig ngt nytt

Du kanske inte är bra på det, men i det här fallet räcker det ju med att läsa vad vi skriver. Ledel har ju skrivit exakt vad som ska göras - det räcker för dig att läsa vad han skrivit och testa precis vad han skrivit. Det hade besparat mig en del frustration i alla fall. Det är jobbigt att hjälpa när man inte möts...

Over and out. Igen.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#18

ska försöka lösa det själv utan att be om mer hjälp

verkar inte som om man kan radera sitt konto här så jag får låta det bli inaktivt

@ndersMedlem sedan juni 200032 969 inlägg
#19

Missförstå icke - klart man ska be om hjälp! :)

Och läsa svaren ordentligt - annars är det helt enkelt inte givande att hjälpa. Hoppas du förstår vad jag menar. :)

WebbisNetMedlem sedan feb. 20032 027 inlägg
#20

jag ska klara det utan hjälp , är inte lönt att fråga längre

521 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
121 ms — hämta statistik (db)
136 ms — hämta tråd, inlägg och bilagor (db)