2012-05-06 89 views
2

我在Access中更新查詢時遇到問題。ALTER TABLE語法錯誤

我想做兩件事,添加一個字段到一個表,並將另一個字段中的所有值更改爲相同的值。

ALTER TABLE 103 ADD COLUMN test TEXT; 
UPDATE 103 SET [103].Workcenter = "103"; 

當我獨立運行,這兩條線,他們的工作很好,但是當我把它們放在同一個查詢我得到的聲明「中ALTER TABLE語法錯誤」。有誰知道我爲什麼不能這樣做?

如果我可以添加一列並將該字段中的所有值更新爲默認值,這也會很棒。我已經嘗試了ALTER TABLE命令中的DEFAULT,但它也不起作用。

在此先感謝您的建議!

+2

我不認爲MS-Access支持多個命令批次。有沒有理由不能使用VBA來做到這一點? –

+0

可能不是,我是Access新手,但我不知道查詢無法做到這一點。我會嘗試VBA謝謝! – canyon289

回答

3

AS ron tornambe表示,在Access查詢中不能有多個命令。他們不支持批處理。

在對錶格進行修改時,VBA代碼是您的朋友:Access中使用的數據定義語言比直接操作數據庫對象時從VBA中獲得的數據定義語言更有限。

例如,做的正是你所追求的:

Public Sub AddFieldAndUpdate() 
    ' Initialise ' 
    Dim db As DAO.Database 
    Dim tb As DAO.TableDef 
    Dim fd As DAO.Field 
    Set db = CurrentDb() 

    ' Get the 103 table ' 
    Set tb = db.TableDefs("103") 
    ' Create a new 'test' field, 128 char long ' 
    Set fd = tb.CreateField("test", dbText, 128) 
    ' Set the Default value for the new field ' 
    fd.DefaultValue = "000" 
    ' Add the new field to the 103 table 
    tb.Fields.Append fd 

    ' Now do the update 
    db.Execute "UPDATE 103 SET [103].Workcenter = '103';", dbFailOnError 
    Debug.Print "Number of Updated records: " & db.RecordsAffected 

    ' Cleanup 
    Set fd = Nothing 
    Set tb = Nothing 
    Set db = Nothing 
End Sub 

這是它的笑話,雖然你可能想要做的還不止這些,例如,根據需要設置索引,默認格式等。

1

某些表格設計功能僅在使用DAO對象模型修改TableDef時可用。其他人只有在從ADO連接執行DDL語句時纔可用。

您的餐桌設計更改涉及任何方法都可用的功能。使用任何你想要的,但我會親自選擇這種方式:

Dim strDdl As String 
strDdl = "ALTER TABLE 103 ADD COLUMN test TEXT(128) DEFAULT ""000"";" 
CurrentProject.Connection.Execute strDdl