ALTER TABLE语法错误

时间:2012-05-06 23:05:40

标签: ms-access

我在Access中遇到更新查询时遇到了问题。

我正在尝试做两件事,向表中添加一个字段,并将另一个字段中的所有值更改为相同的值。

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

当我独立运行这两行时,它们工作正常,但是当我将它们放在同一个查询中时,我得到“ALTER TABLE中的语法错误”语句。有谁知道为什么我不能这样做?

如果我可以添加一列并将该字段中的所有值更新为默认值,那也很棒。我在ALTER TABLE命令中尝试过DEFAULT,但它也没有工作。

提前感谢您的建议!

2 个答案:

答案 0 :(得分:3)

AS ron tornambe说,在Access Query中不能只有一个命令。他们不支持批处理。

在对表进行更改时,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 :(得分:1)

某些表设计功能仅在使用DAO对象模型修改TableDef时可用。其他只有在从ADO连接执行DDL语句时才可用。

您的表格设计更改涉及两种方法都可用的功能。使用您想要的任何一个,但我个人会选择这种方式:

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