' #### BEGIN ## Login okay, now update account status #### Svaret är tyärr felaktigt och otydligt från servern. Om du kan köra select-satser med din connection så är accessdatabasen skrivskyddad och därför får du detta fel. Genom att tillldela skrivegenskaper till databasen på filnivå kommer du slippa dessa fel. Fattade inte riktigt det där. Vad är det du menar att jag skall göra, är det i Access jag ändrar det där eller? Det har med filrätigheter på databasfilen på din webserver. Om din sida ligger på ett webbhotell brukar dessa ha en speciel katalog för databaser.call Connect.execute(strSQL) ger HTTP 500.100 - Internt serverfel
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.open strDSN
strSQL = "UPDATE Users SET Last_Visit=#" & Now() & "#, Last_IP='"&Request.ServerVariables("REMOTE_ADDR")&"' WHERE Users.User_ID="&Session("Mail_User_ID")
call Connect.execute(strSQL)
Connect.close
set Connect = Nothing
' #### END ## Login okay, now update account status ####
Koden ovan som är en del av en större mängd kod i ett aspdokument ger följande fel:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][Drivrutin för ODBC Microsoft Access] Operationen måste använda en fråga som kan uppdateras.
/ny/Mail_Check_Login.asp, line 61
Det som står på rad 61 är:
call Connect.execute(strSQL)
Så hur fixar man nu detta?
-------------------------------------------------------
Så här ser hela dokumentet ut:
<%
Login_Username=Request.Form("Mail_Username")&""
Login_Password=Request.Form("Mail_Password")&""
Session("Mail_User_Username")=Login_Username
If Login_Username="" OR Login_Password="" Then
Response.Redirect "Index.asp?Err_Login=1"
end if
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("MailSystem.mdb")
' #### BEGIN ## Check if the user exist and if so, check the password match ####
Str_Temp=Replace(Login_Username,"'","''")
Str_Temp=Replace(Str_Temp,"""","""""")
Set rs = Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT Users.User_ID, Users.Username, Users.Password, Users.Mail_Sort, Users.Mail_Color_Scheme, Users.Mail_Signatur_OnOff, Users.Account_Accepted FROM Users WHERE Users.Username Like '" & Str_Temp & "'"
rs.Open strSQL, strDSN, 1, 1
If Not rs.EOF Then
If rs("Account_Accepted")=false Then
Response.Redirect "Index.asp?Err_Login=4"
end if
If Not Ucase(Login_Password&"")=Ucase(rs("Password")&"") Then
Session("Mail_User_ID")=0
Session("Mail_Login_Check")=""
rs.close
Set rs=nothing
Response.Redirect "Index.asp?Err_Login=2"
end if
Session("Mail_User_ID")=rs("User_ID")
Session("Mail_User_Username")=rs("Username")
Session("Mail_Login_Check")="tswe354ds"
Session("Mail_SortBy")=rs("Mail_Sort")
Session("Mail_Scheme")=rs("Mail_Color_Scheme")
If rs("Mail_Signatur_OnOff")=true then
Session("Mail_Signatur_OnOff")="On"
else
Session("Mail_Signatur_OnOff")="Off"
end if
Session("Mail_Current_Folder")="1"
rs.close
Set rs=nothing
else
rs.close
Set rs=nothing
Session("Mail_User_Username")=Login_Username
Session("Mail_User_ID")=0
Session("Mail_Login_Check")=""
Response.Redirect "Index.asp?Err_Login=3"
end if
' #### END ## Check if the user exist and if so, check the password match ####
' #### BEGIN ## Login okay, now update account status ####
Set Connect = Server.CreateObject("ADODB.Connection")
Connect.open strDSN
strSQL = "UPDATE Users SET Last_Visit=#" & Now() & "#, Last_IP='"&Request.ServerVariables("REMOTE_ADDR")&"' WHERE Users.User_ID="&Session("Mail_User_ID")
call Connect.execute(strSQL)
Connect.close
set Connect = Nothing
' #### END ## Login okay, now update account status ####
Response.Redirect "Index.asp"
%>Sv: call Connect.execute(strSQL) ger HTTP 500.100 - Internt serverfel
Sv: call Connect.execute(strSQL) ger HTTP 500.100 - Internt serverfel
Sv: call Connect.execute(strSQL) ger HTTP 500.100 - Internt serverfel
Om det är din egen server ändrar du rättigheterna i utforskaren. Detta felet är mycket vanligt bland ny asp programmerare. Söker du på "Operationen måste använda en fråga som kan uppdateras" kommer du hitta många trådar här på pellesoft.