【问题标题】:ALTER TABLE Syntax ErrorALTER TABLE 语法错误
【发布时间】:2012-05-07 12:51:21
【问题描述】:

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

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

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

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

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

提前感谢您的建议!

【问题讨论】:

  • 我认为 MS-Access 不支持多个命令批处理。是否有某些原因您不能使用 VBA 做到这一点?
  • 可能不是,我是 Access 新手,我不知道查询不能做到这一点。我会试试 VBA 谢谢!

标签: ms-access


【解决方案1】:

正如 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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-24
      相关资源
      最近更新 更多