2

我目前链接到六个 Excel 电子表格,主要是因为用户在 Excel 中编辑数据更容易/更好(他们从未使用过 Access),并且任何更改都会立即反映,包括是否添加了新列然后可以立即供查询使用。

但是链接而不是导入这些数据是否会降低性能?我的一些查询很慢,1-2 分钟,有时只需要 2-3 分钟就可以保存一个查询。每次打开数据库时,我将如何设置 Access 以导入这些工作表的新版本,是否值得?

4

3 回答 3

2

关于链接电子表格的性能,您会立即想到 4 个因素:

  1. 网络性能
  2. 电子表格链接的数量(你说大约 6 个)
  3. 查询的复杂性
  4. 数据集的大小(猜测如果人们经常编辑它,可能远低于 10,000 行)

鉴于保存查询通常很慢,我猜#1 是您的主要瓶颈。是的,使用链接而不是导入对性能的影响很小,但是您的用例(小数据集,没有太多链接)会使这种损失非常小。另一方面,慢速网络会减慢每个操作,包括将更改保存到 Access 数据库本身。

于 2012-11-27T21:37:16.187 回答
1

我将提出我最终得到的解决方案,因为它几乎解决了我上面遇到的问题,包括自动更新数据:

具有用于查询的适当访问表,例如 tblStoreDetails、tblPromotions

仍然使用电子表格来维护数据,因为这是更新/查看这些内容的最灵活方式,无需在 Access 中构建表单/前端,这真的不值得花时间,因为没有其他人会使用数据库直接地。

链接到 Access 中的这些表,例如 excelStoreDetails、excelPromotions

设置一个在启动时运行的 Autoexec 宏(假设单击了启用宏按钮),使用 Delete 查询清空 Access 表,并使用 Append 查询将链接的 Excel 表中的行添加到 Access 表中。

这解决了由删除/重新导入表引起的问题,主要是它们最终都在 Unassigned Objects 组中;或尝试使用导入规范并最终导致类型不匹配。

于 2013-01-09T09:28:41.037 回答
0

您可以通过 ADODB 连接连接到 excel 文件并在 ADODB.recordset 中打开它。它非常非常快。事实上,它可以像连接到“真实”数据库一样快。

实施这种解决方案的可能性取决于您将查询“翻译”成记录集的能力。您需要对 VBA 和 ADODB 对象有一定的了解,因为您必须编写代码来生成记录集,然后在屏幕上(或在报告中)显示它们的内容。

于 2012-11-27T12:47:35.157 回答