Need Help! --> ADODB

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • bmallett
    New Member
    • Nov 2007
    • 2

    Need Help! --> ADODB

    I am getting the following error:

    Error Type:
    ADODB.Command (0x800A0BB9)
    Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
    /dcme/newframe/verify.asp, line 48


    Line 48 is:

    cmd.Parameters. Append cmd.CreateParam eter("UN", adVarChar, adParamInput, 10)

    My table is set to text and 10 char

    My code is here:
    [code=asp]
    <%
    'Connection String
    Dim Conn
    'Query to be executed
    Dim SQLQuery
    'Recordset
    Dim rs
    'UN Of Logged in user
    Dim UserName
    'PW of User
    Dim Password

    'Getting information from submitted form
    UserName = UCase(request.f orm("username") )
    Password = UCase(request.f orm("password") )
    RememberMe = request.form("r ememberme")
    NewPassword = request.form("n ewpassword")
    NewUser = request.form("n ewuser")
    SessionID=Sessi on.SessionID

    'Creating connection Object
    set Conn=server.cre ateobject("ADOD B.Connection")
    Conn.Mode = 3
    'Creating Recordset Object
    'set rs = Server.CreateOb ject("ADODB.Rec ordset")
    'Initialising Provider String
    connStr = "Provider=Micro soft.Jet.OLEDB. 4.0;Persist Security Info=False;Data Source="
    connStr = connStr + server.MapPath( "db/frame.mdb")

    'Opening Connection to Database
    Conn.open connStr

    'If not blank Username password submitted
    if UserName <> "" or Password <> "" then

    'Recordset and Query to be executed
    rs = "select * from [user] where UN = '"&UserName& "' AND PW = '"&Password& "'"

    'Retrieving recordset by executing SQL
    'set rs=Conn.execute (SQLQuery)

    'If New User selected
    if NewUser = "ON" then
    'Create Entry
    Set cmd = Server.CreateOb ject("ADODB.Com mand")
    Set cmd.ActiveConne ction = Conn
    cmd.CommandText = "insert into [user] (UN, PW, ssid) values (?, ?, ?)"
    cmd.Parameters. Append cmd.CreateParam eter("UN", adVarChar, adParamInput, 10)
    cmd.Parameters. Append cmd.CreateParam eter("PW", adVarChar, adParamInput, 10)
    cmd.Parameters. Append cmd.CreateParam eter("ssid", adVarChar, adParamInput, 50)
    cmd.Parameters( "UN") = UserName
    cmd.Parameters( "PW") = Password
    cmd.Parameters( "ssid") = SessionID
    cmd.Execute
    else
    end if

    'If New Password selected
    if NewPassword = "ON" then
    'Update Password
    Set cmd = Server.CreateOb ject("ADODB.Com mand")
    Set cmd.ActiveConne ction = Conn
    cmd.CommandText = "UPDATE user SET PW="& Password &" WHERE UN="+ UserName +""
    cmd.Execute
    else
    end if

    'If remember me selected
    if RememberMe = "ON" then
    'Writing cookies permanently
    Response.Cookie s("UserName")=U serName
    Response.Cookie s("Password")=P assword
    Response.Cookie s("UserName").E xpires = Now() + 365
    Response.Cookie s("Password").E xpires = Now() + 365
    Response.Redire ct "basicinfo. asp"
    else
    'writing cookies temporarily
    Response.Cookie s("UserName")=U serName
    Response.Cookie s("Password")=P assword
    Response.Redire ct "basicinfo. asp"
    end if

    'If no records retrieved
    if rs.BOF and rs.EOF then
    Response.Redire ct "Signon.asp?use rname=" & UserName
    else
    'Closing all database connections
    Conn.Close
    rs.close
    set rs = nothing
    set Conn = nothing
    end if
    else
    'Invalid User
    Response.Redire ct "Signon.asp?Use rName=blank"
    end if
    %>[/code]
    Last edited by jhardman; Jan 29 '08, 12:33 AM. Reason: put code in code tags. Please note button marked - #
  • jhardman
    Recognized Expert Specialist
    • Jan 2007
    • 3405

    #2
    Check out the method in the "How-to" section, I think it runs a bit smoother.

    Jared

    Comment

    • CroCrew
      Recognized Expert Contributor
      • Jan 2008
      • 564

      #3
      Hello bmallett,

      You might want to take another look at how your code is set to run and also your database. Table names should not use reserved names within your database. Here is a stab at cleaning/thinning out your code. Please be advised I tried to keep inline with what your were trying to do so even my code is not truly optimized. PM me if you want to talk more in person.

      Hope this helps~

      [CODE=asp]
      <%
      xUserName = replace(request .form("UserName "),"'","''" ) '<-- User's Name.
      xPassword = replace(request .form("Password "),"'","''" ) '<-- User's current password.
      xNewPassword = replace(request .form("NewPassw ord"),"'","''" ) '<-- New password to be saved if ChangePassword value is true.
      xNewUser = request.form("N ewUser") '<-- Make this a boolean (true or false) value.
      xChangePassword = request.form("C hangePassword") '<-- Make this a boolean (true or false) value.
      xRememberMe = request.form("R ememberMe") '<-- Make this a boolean (true or false) value.
      xSessionID = Session.Session ID

      Set adoCon = Server.CreateOb ject("ADODB.Con nection")
      adoCon.Open "DRIVER={Micros oft Access Driver (*.mdb)}; DBQ=" & Server.MapPath( "db/frame.mdb")
      Set rsUpdate = Server.CreateOb ject("ADODB.Rec ordset")

      If (xNewUser) Then
      strSQL = "SELECT TOP 1 * FROM [user]"
      rsUpdate.Cursor Type = 2
      rsUpdate.LockTy pe = 3
      rsUpdate.Open strSQL, adoCon
      rsUpdate.AddNew
      rsUpdate.Fields ("UN").Value = xUserName
      rsUpdate.Fields ("PW").Value = xPassword
      rsUpdate.Fields ("ssid").Val ue = xSessionID
      rsUpdate.Update
      Response.Write( "New user has been added.<br>")
      Else
      strSQL = "SELECT * FROM [user] WHERE UN = '" & xUserName & "' AND PW = '" & xPassword & "'"
      rsUpdate.Cursor Type = 2
      rsUpdate.LockTy pe = 3
      rsUpdate.Open strSQL, adoCon
      If ((rsUpdate.EOF) OR (((StrComp(xPas sword, rsUpdate("PW"). value) = 0)) Then
      Response.Write( "The combination of UserName and Current Password is bad!")
      Response.end
      End If
      If (NewPassword) Then
      rsUpdate.Fields ("PW") = xNewPassword
      rsUpdate.Update
      Response.Write( "Password has been changed.<br>")
      End If
      End If

      Response.Write( "You are currently login in.")

      If (xRememberMe) Then
      Response.Cookie s("LocalUser")( "CookieTest ") = "true"
      If Request.Cookies ("LocalUser")(" CookieTest") Then
      Response.Cookie s("LocalUser")( "UserName") = xUserName
      Response.Cookie s("LocalUser")( "Password") = xPassword
      Response.Cookie s("LocalUser"). Expires = (Now() + 365)
      Else
      Response.Write( "But, you will not be remembered because your cookies are disabled.")
      End If
      End If
      %>
      [/CODE]

      Comment

      Working...