MS Access语法错误信息
MS Access语法错误信息
This short article deals with the following common MS Access-related error messages:
Syntax error (missing operator) in query expression 'field='some_partial_string'
Syntax error in INSERT INTO statement
Syntax error in UPDATE statement
Syntax error in from clause
Syntax error in WHERE clause
There are 4 main causes for these errors: using a Reserved Word for a field name; embedded spaces in field or table names; attempting to insert unescaped single quotes; and incorrectly delimited datatypes. There is a fifth cause, and that is a genuine syntax error resulting from a typo, or otherwise misconstructed SQL statement. Assuming that you are sure this fifth cause is not applicable in your case, here's how to deal with the other four.
Reserved Words and Embedded Spaces
The most common culprits among reserved words are NAME and PASSWORD, which at first glance appear to be perfectly reasonable choices for field names in, say, a User table. What can be more confounding is that PASSWORD doesn't appear on this list of reserved words in Access. However, the fact is that in an ASP.NET application, you aren't dealing with an Access database. It's actually a Jet 4.0 database, and there is a separate list of reserved words for Jet 4.0 that does indeed include PASSWORD (but not NAME). Best advice is to familiarise yourself with both lists (and the one for Sql Server Reserved Words too) and avoid using any of them as a habit. However, if you can't change your field names, you will have to srround them with [ ] brackets:
Select [name], [password], emailaddress from Users
The same resolution applies to embedded spaces in field names: change them or surround them in [ ] brackets:
Select [user name], userpassword, [email address] from Users
When using the Query Builder within Visual Studio or Visual Web Developer, you will find that all field names are surrounded by brackets by default.
Unescaped Single Quotes and Incorrect Datatype Delimiters
相关文档:
在SQL Server 内查询Access 数据, 并将数据保存到SQL Server
'Jet OLEDB:Database Password=; /*Access 密码*/
Data Source=C:\temp\Test.mdb; /*Access 数据库路径*/
Password=;/*Access工作组密码*/
1. 查询Access 表内所有数据
SELECT *
from OPENDATASOURCE
('Microsoft.Jet.OLEDB.4.0',
'Jet OLEDB:Database ......
在SQL Server 内查询Access 数据, 并将数据保存到SQL Server
-- OPENROWSET ACCESS 不能有密码, 有密码用OPENDATASOURCE
SELECT *
from OPENROWSET ('Microsoft.Jet.OLEDB.4.0',
'C:\temp\Test.mdb'; /*Access 数据库路径*/
'admin'; /*Access工作组密码*/
'',/*Access工作组密码*/
[AccessTableName])
1. 查询Acce ......
'excel导入access ,引用ADO
Private Sub Command1_Click()
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
On Error Resume Next
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source ......
access中case替代方法
2009-12-26 14:01
SELECT
UserPassportID as PassportID,
UserID,
GrantorID,
Case ObjectTypeID
When 1 then ObjectID
End
as TerminalID,
Type, Flag, GrantDate, Validate, Invalidate
from UserPassport
在SQL里能执行,但在Access里总提示语法错误(操作符丢失).在查询表达式'Case O ......
Access保留字&变量名列表,建表时应避免使用这些词汇和符号。
-A
ADD
ALL
Alphanumeric
ALTER
AND
ANY
Application
AS
ASC
Assistant
AUTOINCREMENT
Avg
-B
BETWEEN
BINARY
BIT
BOOLEAN
BY
BYTE
-C
CHAR, CHARACTER
COLUMN
CompactDatabase
CONSTRAINT
Container
Count
COUNTER
CREATE
C ......