【发布时间】:2017-12-16 09:59:16
【问题描述】:
我继承了一个设计非常糟糕的 MS Access 数据库。我正在重新设计,但同时我需要为当前版本提供增强功能。由于不同的数据类型问题,我不得不创建许多更改表查询来强制字段转换为正确的数据类型。长话短说,我在运行 alter table/alter column 查询时不时遇到“定义的字段过多”错误消息。我已经阅读了它,发现每当您运行更改列查询时,内部 MS Access 列计数都会增加。我可以通过点击压缩和修复按钮来解决这个问题。但是,当我的最终用户运行该程序时,我不希望他们必须这样做。有没有办法使用 VBA 以编程方式压缩和修复(检查关闭时压缩选项似乎不起作用)?或者我可以用 VBA 以某种方式重置内部表列数吗?
【问题讨论】:
-
“检查关闭时压缩选项似乎不起作用。”这很奇怪。用户有表格还是只有前端?
-
您应该继续重新设计,直到应用程序在运行时不必更改字段。
-
请为我们提供必要的代码来复制问题,关闭时压缩应该可以工作。请参阅this DBA question 以编程方式压缩,只有在数据库关闭时才能压缩。
-
很明显,您正在重新设计数据库,但与此同时,我敢打赌,可能有另一种解决方案来不断更改列类型。听起来那是你事后添加的东西,所以你能不能只更改查询或代码以将数据按摩(即重新格式化、重构、转换)为适当的类型而不更改基础表列?
-
@C Perkins 我确实在事后添加了这个,但我不确定你所说的按摩数据是什么意思。我添加这么多 alter column 语句的原因是因为数据是从许多不同的客户端文件上传的。导入文件时,它们并不总是具有一致的数据类型,因此在用户导入客户端文件后,我有一个子过程运行 alter column 语句来按您所说的处理数据