2

我有一个客户想要定制一个旧的 Visual Basic 5 应用程序,该应用程序使用 Access 97 数据库和 Jet 3.5 作为数据库引擎。

所需的自定义需要将一列添加到现有表中。以下工作正常:

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)”

在研究这个问题时,我看到了一些信息,这些信息在我过时的 Access 97 和 Jet 3.5 配置中不支持 DEFAULT 子句。

任何人都可以确认这一点或指出我正确的方向以使其发挥作用吗?

谢谢你的帮助。

4

2 回答 2

4

您可以通过使用 DAO 对象来做到这一点。

微软这样说关于修改 Access 表:

此外,某些类型的 Microsoft Access 特定属性,例如字段的 ValidationRule 和 DefaultValue 属性,只能通过 Microsoft Access 用户界面或通过代码中的 DAO 进行设置。

您可以在下面的链接中阅读有关它的更多信息。有一些示例,尽管我没有看到它们使用 DefaultValue 属性具体显示的位置。 http://technet.microsoft.com/en-us/library/cc966376.aspx

于 2012-05-04T02:58:36.217 回答
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。

于 2012-05-04T00:11:44.257 回答