Solved

How to resolve the error "Run-time error '-2147217900(80040e14): Synax error in UPDATE statement using Access 2003?

Posted on 2013-07-01
6
4,416 Views
Last Modified: 2013-07-01
I am developing an Access application in Access 2003 using an MDB type file.

In the following VBA code, I am getting the error:

Run time error '-2147217900(80040e14);
Syntax error UPDATE statement.
Do you know how I can resolve this error?

And I performed the following display while debugging my code:
?ssql
update tblUserSecurity1 set password= 'Martin29' WHERE recordnum='1'

recordnum is an AutoNumber Data Type field.

Private Sub Command34_Click()
    Dim strSQL As String
    Dim strSQLFull As String
    Dim ssql As String
    Dim rst As ADODB.Recordset
    Dim con As ADODB.Connection
    If Me.TxtPwd.Value = DLookup("password", "tblUserSecurity1", "[recordnum]=" & Me.Combo25.Value) Then
    Else
       MsgBox "Incorrect password!"
       Exit Sub
    End If
    If Nz(Me!Text28, "") <> Nz(Me!Text30, "") Then
       MsgBox "Passwords don't match!"
       Exit Sub
    End If
    If Nz(Me!Text28, "") = "" Then
       MsgBox "Please type in a new password!"
       Exit Sub
    End If
 
    Set con = CurrentProject.Connection
    Set rst = New ADODB.Recordset
    ssql = "update tblUserSecurity1 set password= '" & Me!Text28 & "' WHERE recordnum='" & Me!Combo25.Value & "'"
    rst.Open ssql, con
End Sub
0
Comment
Question by:zimmer9
6 Comments
 

Author Comment

by:zimmer9
ID: 39291916
Guess the answer is the autonumber should not be in quotes
0
 

Author Comment

by:zimmer9
ID: 39291925
ssql = "update tblUserSecurity1 set password= '" & Me!Text28 & "' WHERE recordnum= " & Me!Combo25.Value & ""
rst.Open ssql, con

generates:

?ssql
update tblUserSecurity1 set password= 'Martin29' WHERE recordnum= 1

yet I still get the same error:
Run time error '-2147217900(80040e14);
Syntax error UPDATE statement.
0
 

Author Comment

by:zimmer9
ID: 39291933
However, if I place the following:

update tblUserSecurity1 set password= 'Martin29' WHERE recordnum= 1

manually in a query object, the code works. The system states:
You are about to update 1 row(s)
Once you click YES, you can't use the UNDO command to reverse the changes.
Are you sure you want to update these records.
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 
LVL 9

Expert Comment

by:edtechdba
ID: 39291937
Are you all set? If not, you may want to check out this update statement, it should work.

    ssql = "UPDATE tblUserSecurity1 SET password = '" & Me!Text28.Value & "' " & _
            "WHERE recordnum = '" & Me!Combo25.Value & "'"
0
 
LVL 29

Expert Comment

by:IrogSinta
ID: 39291967
You're right about the recordnum not being in quotes; so you don't need the ending quotes either:
ssql = "update tblUserSecurity1 set password= '" & Me!Text28 & "' WHERE recordnum= " & Me!Combo25.Value
This section
    If Me.TxtPwd.Value = DLookup("password", "tblUserSecurity1", "[recordnum]=" & Me.Combo25.Value) Then
    Else
       MsgBox "Incorrect password!"
       Exit Sub
    End If

Open in new window

can be shortened this way:
    If Me.TxtPwd.Value <> DLookup("password", "tblUserSecurity1", "[recordnum]=" & Me.Combo25.Value) Then
       MsgBox "Incorrect password!"
       Exit Sub
    End If

Open in new window

I don't see the need for a recordset since you are not doing anything with it.  To run an Update SQL statement you need to use the Execute method.
So your whole code can be shortened to this:
    If Me.TxtPwd.Value <> DLookup("password", "tblUserSecurity1", "[recordnum]=" & Me.Combo25.Value) Then
       MsgBox "Incorrect password!"
    Else If Nz(Me!Text28, "") <> Nz(Me!Text30, "") Then
       MsgBox "Passwords don't match!"
    Else If Nz(Me!Text28, "") = "" Then
       MsgBox "Please type in a new password!"
    Else 
        Set con = CurrentProject.Connection
        ssql = "update tblUserSecurity1 set password= '" & Me!Text28 & "' WHERE recordnum= " & Me!Combo25.Value
        con.Execute ssql
    End If

Open in new window

0
 
LVL 120

Accepted Solution

by:
Rey Obrero (Capricorn1) earned 500 total points
ID: 39292028
try placing the word "password" in brackets


ssql = "update tblUserSecurity1 set [password]= '" & Me!Text28 & "' WHERE recordnum= " & Me!Combo25.Value
0

Featured Post

Master Your Team's Linux and Cloud Stack

Come see why top tech companies like Mailchimp and Media Temple use Linux Academy to build their employee training programs.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Access 2016 7 33
Whats wrong in this query - Select * from tableA,tableA 11 29
SQL Query assistance 16 22
Part 2 to aggregate query solved qtn 5 17
In a multiple monitor setup, if you don't want to use AutoCenter to position your popup forms, you have a problem: where will they appear?  Sometimes you may have an additional problem: where the devil did they go?  If you last had a popup form open…
Describes a method of obtaining an object variable to an already running instance of Microsoft Access so that it can be controlled via automation.
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
In Microsoft Access, learn how to use Dlookup and other domain aggregate functions and one method of specifying a string value within a string. Specify the first argument, which is the expression to be returned: Specify the second argument, which …

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question