Avatar billede elohite Nybegynder
28. januar 2005 - 10:12 Der 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

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_connecton_STRING
Recordset1.Source = "SELECT * FROM User"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 4
Recordset1.Open()

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
%>
Avatar billede lorentsnv Nybegynder
28. januar 2005 - 10:35 #1
Skal du ikke have paranteser efter NOW - således: now()?
Avatar billede elohite Nybegynder
28. januar 2005 - 11:23 #2
Det hjalp ikke....
Avatar billede softspot Forsker
29. januar 2005 - 03:18 #3
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.
Avatar billede elohite Nybegynder
31. januar 2005 - 09:28 #4
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
Avatar billede lorentsnv Nybegynder
31. januar 2005 - 09:32 #5
Det tyder på at den  bruger som IIS kører scriptet med, ikke har skriverettigheder til den mappe hvor din Access-database ligger.
Avatar billede lorentsnv Nybegynder
31. januar 2005 - 09:34 #6
Du skal ha sat windows permissions på DB, det vil sige du skal ha give IUSER_PCnavne læse og skrive rettigheder på databasen.
Avatar billede elohite Nybegynder
31. januar 2005 - 10:03 #7
Tusind tak lorentsnv... hvordan giver jeg dig point?
Avatar billede lorentsnv Nybegynder
31. januar 2005 - 10:06 #8
Hyggelig at kunne hjælpe :-)

Her er et svar fra mig, så kan du give point. Du markerer mit navn i venstre side, og accepterer svar.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester