webForumDet fria alternativet

Varför är inte EOF tom??

ASP

9 svar · 365 visningar · startad av Bettan

Medlem sedan dec. 199938 inlägg
Frågan#1

Jag blir tokig. Har skrivit en kod som lägger till nya användare så här:
sSQL = "SELECT * FROM Users where UserName = '"&UserName&"'"
set rs1 = oConn.Execute(sSQL)

if rs1.EOF = true then
sSQL="INSERT INTO Users VALUES('"&UserName&"','"&Password&"')"
set rs1 = oConn.Execute(sSQL)
Response.Write "The new user is successfully added. <b><a href='viewAdministration.asp'>Continue</a></b>"
Response.End
else
Response.Write "Can not add duplicate users. Please change the username. <b><a href='javascript:history.back()'>Back</a></b>"
Response.End
end if

Trots att användaren inte finns så får jag upp meddelandet "Can not add....osv, och det konstigaste av allt är att användaren läggs till ändå. Vad kan detta bero på?

Snälla hjälp!!!

Medlem sedan nov. 20018 492 inlägg
#2

Prova detta

sSQL = "SELECT * FROM Users where UserName = '"&UserName&"'" 
set rs1 = oConn.Execute(sSQL) 

If NOT rs1.EOF then 
Response.Write "Can not add duplicate users. Please change the username. <b><a href='javascript:history.back()'>Back</a></b>" 
Else
sSQL="INSERT INTO Users VALUES('"&UserName&"','"&Password&"')" 
set rs1 = oConn.Execute(sSQL) 
Response.Write "The new user is successfully added. <b><a href='viewAdministration.asp'>Continue</a></b>" 
End If

/Mikael

Medlem sedan dec. 199938 inlägg
#3

Tack men det hjälpte inte. Det är fortfarande så att den säger: Can not add duplicate...osv och så lägger den in posten i databasen iallafall.

Kan det ligga i nån buffert någonstans? Jag är väldigt dålig på sånt här men vad gör Response.clear och Response.buffer = false. Är det dumt?

/Bettan

Medlem sedan juni 200032 967 inlägg
#4

Hur får variabeln UserName sitt värde? Hur ser den färdiga SQL-frågan ut?

Mvh,

Medlem sedan dec. 199938 inlägg
#5

Här är nästan hela sidan, det är bara lite oväsentlig html-gojs som jag inte skickar med.

Tackar för att ni vill hjälpa mej!
/Bettan

******************************************
Dim rs1, oConn, sSQL
dim UserName, Password
dim FullUserName
dim SecurityLevel

set rs1 = server.CreateObject ("adodb.recordset")
set oConn = Session("oConn")

if oConn.State <> 1 then
Response.Write "Error. Bad connection status."
Response.End
end if

'Kontrollera att alla variabler blir rätt

if Request.Form("txtUserName") <> "" then UserName = UCase(Request.Form("txtUserName"))
if Request.Form("txtPassword") <> "" then Password = UCase(Request.Form("txtPassword"))
if Request.Form("txtFullUserName") <> "" then FullUserName = UCase(Request.Form("txtFullUserName"))
if Request.Form("txtSecurityLevel") <> "" then SecurityLevel = ucase(Request.Form("txtSecurityLevel"))

sSQL = "SELECT * FROM Users where UserName = '"&UserName&"'"
set rs1 = oConn.Execute(sSQL)

If NOT rs1.EOF then
Response.Write "Can not add duplicate users. Please change the username. <b><a href='javascript:history.back()'>Back</a></b>"
Else
sSQL="INSERT INTO Users VALUES('"&UserName&"','"&Password&"','"&FullUserName&"','"&SecurityLevel&"')"
set rs1 = oConn.Execute(sSQL)
Response.Write "The new user is successfully added. <b><a href='viewAdministration.asp'>Continue</a></b>"
End If

%>

Medlem sedan mars 20015 287 inlägg
#6

Är du säker på att du "stänger" alla dina IF-satser på rätt ställe?
Alltså att du har en End If på rätt plats för varje If?

Medlem sedan dec. 199938 inlägg
#7

Jo, jag är till 110% säker att jag stänger alla if-satser. Om jag skulle glömma borde jag väl få felmeddelande?

Jag har inte löst problemet men felet dyker inte upp om man ändrar i Internet Services Manager, väljer properties på den aktuella web siten, in på fliken Directory. Där ändrar man Application Protection från Low till Medium.

Är det någon som begriper mer än jag för jag fattar inte varför?? Varför, varför, varför???

Erkänner mej snart besegrad av asp och återgår till statiska html sidor. :r

/Bettan

Medlem sedan juni 200032 967 inlägg
#8

Det kan ha med ditt problem att göra att du använder ett connectionobjekt som ligger i en session. Lagra aldrig, aldrig, aldrig connectionobjekt i sessions.

Det är livsfarligt.

Mvh,

Medlem sedan dec. 199938 inlägg
#9

Jag vet att det är farligt farligt, men härligt, här.... ja. Jag var lat helt enkelt och siten har inte många användare, och därför blir det inte många sessioner.

Det är ju bara på denna sidan som problemet uppstår och bara ibland. Kan det verkligen vara sessionerna som spökar då?

Jag provar gärna alla förslag men eftersom det bara drabbat denna sida så känns det lite långsökt. Tack ändå.

/Bettan

Medlem sedan mars 20002 836 inlägg
#10

Om du tar bort = true i denna if-sats:

if rs1.EOF = true then

så att den ser ut så här istället:

if rs1.EOF then

cya,
PatrikB

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