2013-02-19 73 views
1

我不斷收到CREATE TABLE語法錯誤,但我沒有看到錯誤!什麼導致了錯誤?創建表語法錯誤 - MS Access,SQL視圖

我的SQL:

CREATE TABLE my_employee 
(
employee_id INTEGER PRIMARY KEY NOT NULL, 
first_name VARCHAR(25) NOT NULL, 
last_name VARCHAR(30) NOT NULL, 
address VARCHAR(10) NOT NULL, 
birthdate DATE, 
salary NUMERIC(8,2) DEFAULT 15000, 
marital_status CHAR(1) 
); 
+0

錯誤消息是否提供更多信息? – criticalfix 2013-02-19 18:25:48

+0

不,只是簡單'CREATE TABLE語法錯誤' – ummlayth 2013-02-19 21:41:39

回答

5

由於您的DDL語句包括DEFAULT,你必須用ADO執行。我裝你的語句轉換成一個字符串變量,並從2007年訪問這樣執行它:

CurrentProject.Connection.Execute strSql 

工資場是小數精度8,規模2,默認15000

DEFAULT是一個隨Jet 4.0添加的Access SQL功能。這些功能不適用於從DAO執行的語句。如果您正在使用Access的查詢設計器創建並執行該語句,那麼您正在使用DAO。如果您使用CurrentDb.Execute,則相同。但是CurrentProject.Connection是一個ADO對象,因此它可以使用.Execute Jet 4.0功能。

注意NOT NULL沒有必要後PRIMARY KEY因爲PRIMARY KEY意味着NOT NULL。但是PRIMARY KEY NOT NULL不會觸發錯誤。只要您從ADO執行它,該聲明就像您最初編寫它一樣。

+0

大聲笑我是一名學生,老師向我們展示了Access的基礎知識,他告訴我使用默認。但不幸的是,由於項目的邊界,我只能從DAO執行。儘管如此,你找到了一個答案,所以我正在upvoting!謝謝! – ummlayth 2013-02-19 21:40:49

0

你的問題是在你的主鍵聲明

CREATE TABLE my_employee 
(
employee_id INTEGER NOT NULL, 
first_name VARCHAR(25) NOT NULL, 
last_name VARCHAR(30) NOT NULL, 
address VARCHAR(10) NOT NULL, 
birthdate DATE, 
salary NUMERIC(8,2) DEFAULT 15000, 
marital_status CHAR(1), 
PRIMARY KEY (employee_id) 
); 
+0

我早些時候嘗試過 - 不幸的是我仍然得到語法錯誤 – ummlayth 2013-02-19 21:37:41

1

嗯,我有與MS Access 2007中同樣的問題,但我解決了這個問題以後。
這是因爲實際上由於安全原因,默認情況下會禁用某些功能。
當它顯示您syntax error時,您可以在菜單欄的某處或底部看到消息:Some Features Are Disabled For Security Reasons...
單擊該消息,然後繼續啓用其他功能。

1

正如HansUp所說:DDL中的「default」在這裏不起作用。作爲替代方案,您可以創建沒有默認的表格,然後通過TableDef添加默認值:

CurrentDb().Execute "create table my_employee ..." 
CurrentDb().TableDefs("my_employee").Fields("salary").DefaultValue = 15000