我正在通过 Access 2000 将一个 20 年前的系统从 DBase IV 转换为 Access 2010,以便更适合 Windows 10。但是,我在数据库中有大约 350 个字段,因为它是一个参数表,MS-Access 2000 和 MS-Access 2010 对此表示不满。我已经修复了数据库以消除内部计数问题,但对Windows 10软件的限制如此之低感到非常惊讶。有谁知道如何绕过这个?显然我可以把它分成 2 张表,但这似乎很过时。
当您开始遇到这样的限制时,它会散发出糟糕的数据库设计的味道。
鉴于您声明所讨论的表是具有如此多参数的"参数"表,您是否考虑过构建表以使每个参数都占用自己的记录?
例如,请考虑以下方法,其中ParamName
是表的主键:
+----------------+------------+
| ParamName (PK) | ParamValue |
+----------------+------------+
| Param1 | Value1 |
| Param2 | Value2 |
| ... | |
| ParamN | ValueN |
+----------------+------------+
或者,如果每个参数可能有多个值,您可以简单地添加一个附加字段来区分同一参数的多个值,例如:
+----------------+--------------+------------+
| ParamName (PK) | ParamID (PK) | ParamValue |
+----------------+--------------+------------+
| Param1 | 1 | Value1 |
| Param1 | 2 | Value2 |
| Param1 | 3 | Value3 |
| Param2 | 1 | Value2 |
| ... | ... | ... |
| ParamN | 1 | Value1 |
| ParamN | N | ValueN |
+----------------+--------------+------------+
我也有类似的问题 - 我们在链接到 Access 的 SQL 服务器上的一个联系人表中有 300 多个字段。您可能不需要在一个表单上显示 255 个字段 - 这对用户不友好。您可以将其拆分为多个子窗体,每个窗体具有不同的下划线查询,且小于限制。所有子窗体都将通过 ID 链接。
有时,由于性能原因,如上所述拆分表并不是最佳主意。
正如Lee Mac所描述的那样,"参数"表结构的样本更改确实是您更好的选择。 然后,您可以为每个常量定义一些常量,以便在代码中使用,以防止以后在代码中意外拼写错误,以防在许多地方使用。
然后,您可以创建一个(或多个函数(,该函数采用您要查找的参数设置的参数,它将查询表中的该参数作为键并返回值。 不是 VB/Access 开发人员,但会认为不能重载函数以具有单个函数,但返回不同的数据类型,例如字符串、int、日期等。 所以你可能想要类似
在 C# 中的示例下方,但原理是相同的。
public int GetAppParmInt( string whatField )
public DateTime GetAppParmDate( string whatField )
public string GetAppParmString( string whatField )
etc...
然后,您可以通过调用函数来获取值,该函数的唯一目的是在参数表中查询该键并返回存储的值。
希望这里提供的解决方案的组合可以帮助您升级,即使您的参数表(在 Lee Mac 的答案上扩展了一点(具有您存储的每种数据类型以对应于"GetAppParm[type]">
ParmsTable
PkID ParmDescription ParmInt ParmDate ParmString
1 CompanyName Your Company
2 StartFiscalYear 2019-06-22
3 CurrentQuarter 4
4... etc.
然后,您不必担心到处更改/数据转换。 它们存储在您期望的正确数据类型中,并返回该类型。