我转到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中的语法错误
答案 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 );