1

我正在通过 Access 2000 将一个使用了 20 年的系统从 DBase IV 转换为 Access 2010,以便更适合 Windows 10。但是,我在数据库中有大约 350 个字段,因为它是一个参数表和 MS-Access 2000 和 MS-Access 2010 都在抱怨它。我已经修复了数据库以消除内部计数问题,但我对 Windows 10 软件的限制如此之低感到相当惊讶。有谁知道如何绕过这个?显然我可以把它分成 2 张桌子,但这似乎很陈旧。

4

3 回答 3

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     |
+----------------+--------------+------------+
于 2020-01-31T22:53:11.020 回答
0

我有类似的问题 - 我们在 SQL 服务器上的一个联系人表中有 300 多个字段链接到 Access。您可能不需要在一个表单上显示 255 个字段 - 这对用户不友好。您可以将其拆分为多个子表单,每个表单具有不同的下划线查询,但小于限制。所有子表单都将通过 ID 链接。

有时,由于性能原因,如上所述拆分表并不是最好的主意。

于 2020-02-28T22:42:19.660 回答
0

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

然后您不必担心到处更改/数据转换。它们以您期望的正确数据类型存储并返回该类型。

于 2020-05-19T00:11:15.937 回答