2

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

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

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

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

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

提前感谢您的建议!

4

2 回答 2

3

正如 ron tornambe 所说,访问查询中不能有多个命令。它们不支持批处理。

在对表进行更改时,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

这是一个笑话,尽管您可能想做更多的事情,例如,根据需要设置索引、默认格式等。

于 2012-05-07T03:39:45.600 回答
1

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

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

Dim strDdl As String
strDdl = "ALTER TABLE 103 ADD COLUMN test TEXT(128) DEFAULT ""000"";"
CurrentProject.Connection.Execute strDdl
于 2012-05-07T04:51:21.203 回答