28. januar 2005 - 10:12Der er
7 kommentarer og 1 løsning
ASP VBScript UPDATE
Jeg prøver og logge ind på side hvor følgende valideringsside undersøge om bruger findes. Det funger fint. (Stor juble og sejrs dans).
Det der er problemet er at jeg prøver at opdater en felt(LastTimeOnline) i min lille database. Jeg får ingen fejl meldinger fra serven når scriptet kør men feltet bliver ikke opdateret. Hvorfor????
<%@LANGUAGE="VBSCRIPT"%> <% Response.Expires = 0 %> <!--#include file="Connections/connecton.asp" --> <% Dim Recordset1 Dim Recordset1_numRows
Recordset1_numRows = 0 %> <% Dim user Dim password Dim language
if Request.ServerVariables("QUERY_STRING") <> false Then user = Request.Form("user") password = Request.Form("password") language = Request.Form("language")
if user = "" or password = "" or language = "" Then Response.Redirect("login.asp") end if
do while not Recordset1.eof if (Recordset1.Fields.Item("Username").Value)= user and (Recordset1.Fields.Item("Password").Value) = password then Session("authCheck")= "7914098602183045" Session("language")= language Session("lastTimeOnline") = (Recordset1.Fields.Item("LastTimeOnline").Value) Session("Name") = (Recordset1.Fields.Item("Name").Value) Recordset1("LastTimeOnline") = NOW Recordset1.Update Response.Redirect("default.asp") end if
Recordset1.MoveNext Loop
Response.Redirect("login.asp") Else
Response.Redirect("error.asp")
End if
Recordset1.Close() : connection.close () Set Recordset1 = Nothing : Set connection = Nothing %>
Generelt set er det en skidt idé at udføre redirect inden du har fået ryddet op i connections osv. Derfor vil jeg anbefale at du opsamler en status for hvor du skal udføre redirect til (når du ved det) og så afslutter det du har gang i, f.eks. databaseforbindelser, og til sidst udfører dit redirect.
Grunden til dette er at når du udfører redirect, så afslutter udførslen af siden og den resterende kode vil derfor ikke blive udført, hvilket i dette tilfælde resulterer i hængende forbindelser og i yderste konsekvens en database der ikke kan tilgås pga. for få forbindelser.
Jeg har ryted lidt op i koden og nu ser den såden ud:
<%@LANGUAGE="VBSCRIPT"%> <% Response.Expires = 0 %> <!--#include file="Connections/connecton.asp" --> <% Dim Recordset1 Dim Recordset1_numRows Dim Recordset1SQL
Set Recordset1 = Server.CreateObject("ADODB.Recordset") Recordset1SQL = "SELECT * FROM User" Recordset1.Open Recordset1SQL, oCon,1,3
Recordset1_numRows = 0 %> <% Dim user Dim password Dim language
if Request.ServerVariables("QUERY_STRING") <> false Then user = Request.Form("user") password = Request.Form("password") language = Request.Form("language")
if user = "" or password = "" or language = "" Then Response.Redirect("login.asp") end if
do while not Recordset1.eof if (Recordset1.Fields.Item("Username").Value)= user and (Recordset1.Fields.Item("Password").Value) = password then Session("authCheck")= "7914098602183045" Session("language")= language Session("lastTimeOnline") = (Recordset1.Fields.Item("LastTimeOnline").Value) Session("Name") = (Recordset1.Fields.Item("Name").Value) Recordset1("LastTimeOnline") = now() Recordset1.Update 'Line 37 Recordset1.Close Set Recordset1 = Nothing ocon.close Set ocon = Nothing Response.Redirect("default.asp") end if
Recordset1.MoveNext Loop
Response.Redirect("login.asp") Else
Response.Redirect("error.asp")
End if
Recordset1.Close Set Recordset1 = Nothing ocon.close Set ocon = Nothing %>
Jeg får følgende fejl nu: Microsoft OLE DB Provider for ODBC Drivers (0x80004005) [Microsoft][ODBC Microsoft Access-driver] Databasen eller objektet er skrivebeskyttet og kan ikke opdateres. /authCheck.asp, line 37
Her er et svar fra mig, så kan du give point. Du markerer mit navn i venstre side, og accepterer svar.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.