我正在通过 Access 2000 将一个使用了 20 年的系统从 DBase IV 转换为 Access 2010,以便更适合 Windows 10。但是,我在数据库中有大约 350 个字段,因为它是一个参数表和 MS-Access 2000 和 MS-Access 2010 都在抱怨它。我已经修复了数据库以消除内部计数问题,但我对 Windows 10 软件的限制如此之低感到相当惊讶。有谁知道如何绕过这个?显然我可以把它分成 2 张桌子,但这似乎很陈旧。
3 回答
当您开始遇到诸如此类的限制时,它就会散发出糟糕的数据库设计的味道。
鉴于您声明所讨论的表是一个“参数”表,具有如此多的参数,您是否考虑过构建表以使每个参数占据自己的记录?
例如,考虑以下方法,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 |
+----------------+--------------+------------+
我有类似的问题 - 我们在 SQL 服务器上的一个联系人表中有 300 多个字段链接到 Access。您可能不需要在一个表单上显示 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.
然后您不必担心到处更改/数据转换。它们以您期望的正确数据类型存储并返回该类型。