2012-05-04 145 views
2

我有一個客戶想要定製到使用Access 97數據庫和Jet 3.5作爲數據庫引擎的舊的Visual Basic 5應用程序。ALTER TABLE語句中的DEFAULT子句導致語法錯誤

所需的自定義需要將列添加到現有表中。以下工作正常:

strSQL = "ALTER TABLE Users ADD COLUMN Status BYTE" 
pdbDatabase.Execute strSQL 

但是,我想爲新列設置默認值(即0或1)。我曾嘗試以下和數量的變化:

strSQL = "ALTER TABLE Users ADD COLUMN Status BYTE DEFAULT 1" 

但他們都將導致錯誤陳述,

在研究這個問題,我是「在ALTER TABLE語句的語法錯誤(3293)」。我已經看到了一些在DEFAULT子句中隱藏的信息,在我過時的Access 97和Jet 3.5配置中不受支持。

任何人都可以證實這一點或指出我在正確的方向得到這個工作?

感謝您的幫助。

+1

子句在Jet 3.5/Access 97中不存在 – RThomas

回答

1

Per Access 97/Jet 3.5 SQL文檔在描述ALTER TABLE或CREATE Table語句時,沒有提到DEFAULT子句。它被描述爲Jet 4.0的一個新功能:http://support.microsoft.com/kb/275561

我知道確定的唯一方法是設置默認值是在gui中打開表格設計,然後在字段屬性下輸入默認值。您是否有權訪問Access 97的安裝?

雖然,我也猜測用VB/VBA你可以訪問該字段的默認值屬性,並設置或修改 - 只是不使用SQL。

+0

我需要通過代碼來完成,以便每個用戶計算機上的數據庫都得到更新。雖然,當我想到這個時,我不確定那會做我真正需要的東西,即使它確實有效。我真正需要做的是使用新列的所需默認值更新所有現有記錄。所以我可能只需編寫一些代碼來遍歷所有記錄並寫入該值。 – user1373826

+0

是的,即使在jet 4.0中的默認設置也不會更新已經存在的記錄。對不起,我沒有更好的答案:)。 – RThomas

+1

@ user1373826只需通過SQL更新記錄'UPDATE Users SET Status = 1' – MarkJ

4

你可以通過使用DAO對象來做到這一點。

微軟表示此有關修改Access表:

此外,某些類型的Microsoft Access特定性質,諸如字段的有效性規則和默認值的屬性,只能通過Microsoft Access用戶界面或設置通過代碼中的DAO。

您可以在下面的鏈接中閱讀更多關於它的信息。有些例子,雖然我沒有看到他們使用DefaultValue屬性專門顯示的地方。 http://technet.microsoft.com/en-us/library/cc966376.aspx