使用MS Access使用SQL语句创建表?

时间:2015-09-03 21:40:38

标签: sql ms-access ms-access-2013

我转到Create选项卡并点击Query Design然后点击SQL视图并输入以下内容。但它并没有运行。我试过谷歌搜索,我遵循这些规则,我仍然得到错误。我以我所知道的方式改变了陈述,但它仍然无法运行。我究竟做错了什么? 注意:姓氏必须是VARCHAR,佣金和费率都必须是NUMBER。

我用一些建议重新编写它并将其更改为此。

CREATE TABLE SALES_REP
(REP_NUM CHAR(2) PRIMARY KEY,
LAST_NAME VARCHAR(15),
FIRST_NAME CHAR(15),
STREET CHAR(15),
CITY CHAR(15),
STATE CHAR(2),
POSTAL_CODE CHAR(5),
COMMISSION NUMBER(7,2),
RATE NUMBER(3,2) );
  

CREATE TABLE STATEMENT中的语法错误

2 个答案:

答案 0 :(得分:1)

在MS Access中,如果您希望DDL为数字字段指定 Scale Precision ,请使用DECIMAL作为字段类型。

CREATE TABLE SALES_REP
(REP_NUM CHAR(2) PRIMARY KEY,
LAST_NAME VARCHAR(15),
FIRST_NAME CHAR(15),
STREET CHAR(15),
CITY CHAR(15),
STATE CHAR(2),
POSTAL_CODE CHAR(5),
COMMISSION DECIMAL(7,2),
[RATE] DECIMAL(3,2));

注意我将字段名称[RATE]括起来,这样db引擎就不会将它与VBA Rate()函数混淆。

小心为了支持DECIMAL,您必须执行ADO / OleDb中的语句。我用CurrentProject.Connection.Execute执行它,这是一个ADO方法,就像这样......

Dim strDdl As String
strDdl = "CREATE TABLE SALES_REP" & vbCrLf & _
    "(REP_NUM CHAR(2) PRIMARY KEY," & vbCrLf & _
    "LAST_NAME VARCHAR(15)," & vbCrLf & _
    "FIRST_NAME CHAR(15)," & vbCrLf & _
    "STREET CHAR(15)," & vbCrLf & _
    "CITY CHAR(15)," & vbCrLf & _
    "STATE CHAR(2)," & vbCrLf & _
    "POSTAL_CODE CHAR(5)," & vbCrLf & _
    "COMMISSION DECIMAL(7,2)," & vbCrLf & _
    "[RATE] DECIMAL(3,2));"
Debug.Print strDdl
CurrentProject.Connection.Execute strDdl

从DAO(CurrentDb.Execute strDdl或查询设计器)执行相同的语句将触发语法错误。

答案 1 :(得分:0)

使用double代替数字:

CREATE TABLE SALES_REP
(REP_NUM CHAR(2) PRIMARY KEY,
LAST_NAME VARCHAR(15),
FIRST_NAME CHAR(15),
STREET CHAR(15),
CITY CHAR(15),
STATE CHAR(2),
POSTAL_CODE VARCHAR(5),
COMMISSION DOUBLE,
RATE DOUBLE );