create table语句中的语法错误 - Access 2010

时间:2015-01-06 22:03:55

标签: sql ms-access ms-access-2010 ddl

Create table Customers 
(
customerid              number(10) PRIMARY KEY; 
First_name              varchar2(100); 
last_name               varchar2(100); 
house_number            number(10); 
street                  number(10);  
postcode                number(5); 
home_phone_number       number(10);  
mobile_phone_number     number(10);  
email_address           varchar2(100); 
DOB                     date
);

2 个答案:

答案 0 :(得分:2)

您的DDL语句(带有@Mureinik建议的字段类型替换)在Access 2010中有效,但仅当您从ADO执行时:

Create table Customers (
    customerid              numeric(10) PRIMARY KEY,
    First_name              varchar(100),
    last_name               varchar(100), 
    house_number            numeric(10),
    street                  numeric(10),  
    postcode                numeric(5),
    home_phone_number       numeric(10),
    mobile_phone_number     numeric(10),  
    email_address           varchar(100),
    DOB                     datetime
    ); 

我将语句加载到字符串变量 strCreate 中,并像这样执行...

CurrentProject.Connection.Execute strCreate

CurrentProject.Connection是一个ADO对象。

该语句在通过DAO执行时会抛出语法错误...

CurrentDb.Execute strCreate  ' <-- "Syntax error"

如果您正在从Access查询设计器执​​行该语句,那么它也会使用DAO并且该语句将失败。

尽管语句是从ADO成功执行的,但我不确定那些Numeric()字段的结果数据类型是您真正想要的。我不习惯看到用于主键的Decimal字段类型。更常见的是,人们选择基于AutoNumber的{​​{1}}。 (但我并不是说Long Integer如果那是你真正想要的,那就不错了。)

Customers table in Table Design view

答案 1 :(得分:1)

在每个列定义之后,您应该使用逗号(,),而不是分号(;)。 此外,这个脚本看起来好像是从Oracle借来的。在访问权限中,varchar2numberdate的相应类型分别为varcharnumericdatetime

Create table Customers 
(
customerid              numeric(10) PRIMARY KEY,
First_name              varchar(100),
last_name               varchar(100), 
house_number            numeric(10),
street                  numeric(10),  
postcode                numeric(5),
home_phone_number       numeric(10),
mobile_phone_number     numeric(10),  
email_address           varchar(100),
DOB                     datetime
);