Solved

SQL syntax error in VBA

Posted on 2016-10-21
11
31 Views
Last Modified: 2016-10-21
I'm having trouble with a SQL update statement, getting a syntax error.  When I go thru other code in my application, I see similar statements that get no error.  WS-ID is defined as SHORT TEXT in the sysUsers table.

sHostName  is DESK_FOUR


DoCmd.RunSQL ("UPDATE sysUsers SET WS-ID = '" & sHostName & "'")

what am I doing wrong?

Judith
0
Comment
Question by:JudithARyan
11 Comments
 
LVL 25

Expert Comment

by:Shaun Kline
Comment Utility
What error are you getting?
0
 
LVL 19

Expert Comment

by:Eric Sherman
Comment Utility
Your SQL looks OK ... Something else is wrong.  Tell us exactly what error are you getting.

ET
0
 
LVL 33

Expert Comment

by:Norie
Comment Utility
Judith

Where is sHostName declared and where is it given a value?
0
 
LVL 19

Accepted Solution

by:
Eric Sherman earned 500 total points
Comment Utility
Try this ...

DoCmd.RunSQL ("UPDATE sysUsers SET WS_ID = '" & sHostName & "'")

You may have the field name mispelled.  I changed WS-ID to WS_ID.


ET
0
 
LVL 34

Expert Comment

by:PatHartman
Comment Utility
The dash is an invalid character in a column name.  If you use it, you must enclose the column name in square brackets.
0
Free Trending Threat Insights Every Day

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

 
LVL 19

Expert Comment

by:Eric Sherman
Comment Utility
Yep, kind of what I was leading up to ... You should never use a dash in field names as Pat mentioned.

ET
0
 
LVL 119

Expert Comment

by:Rey Obrero
Comment Utility
you can use a dash but you need to wrap your field name in brackets

DoCmd.RunSQL ("UPDATE sysUsers SET [WS-ID] = '" & sHostName & "'")
0
 
LVL 34

Expert Comment

by:PatHartman
Comment Utility
Didn't I just say that?
0
 

Author Closing Comment

by:JudithARyan
Comment Utility
You're a mind reader.  I changed the table field to WSID and the SQL statement to match.  It worked fine.  Apparently the syntax didn't like the dash/hyphen in a field name.  Is this something new?  I'm converting my application from Access 2003 to Access 2013.

Thanks for your help.

Judith
0
 
LVL 68

Expert Comment

by:Qlemo
Comment Utility
A dash should never have been allowed in a name. Access is just more strict about this now.

If you have   a-b    in a SQL, it means    a minus b    for sure ;-)
0
 
LVL 34

Expert Comment

by:PatHartman
Comment Utility
Access allows you to use certain punctuation characters and the space in column names even though technically no programming language would allow the characters due to reasons such as what Qlemo quoted.  However, Access has ALWAYS forced the square brackets syntax for these offending names so converting from 2003 to 2013 isn't what caused the problem.  Newer versions of Access warn you against using certain property and function names as column names but still allow them.  I don't think you get warnings for bad characters except the ones that are simply not allowed such as ! and . and `[ and ]

It is always best to avoid ALL punctuation characters including the space and to also avoid using property names and function names as those will either cause runtime errors or perhaps result in referencing the built in object rather than your user-defined object.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

If you have heard of RFC822 date formats, they can be quite a challenge in SQL Server. RFC822 is an Internet standard format for email message headers, including all dates within those headers. The RFC822 protocols are available in detail at:   ht…
A simple tool to export all objects of two Access files as text and compare it with Meld, a free diff tool.
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 “cascade” or have the displayed data of one combo control depend upon what’s entered in another. Base the dependent combo on a query for its row source: Add a reference to the first combo on the form as criteria i…

763 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

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now