导入与链接到Excel电子表格

我目前链接到六个Excel电子表格,主要是因为用户更容易/更好地编辑Excel中的数据(他们从来没有使用Access),并且任何更改都会立即反映出来,包括如果添加了新列然后准备好立即使用查询。

但是,链接而不是导入这些数据会有性能损失吗? 我的一些查询很慢,1-2分钟,有时可能需要2-3分钟才能保存查询。 我如何设置Access以在每次打开数据库时导入这些表单的新版本,是否值得呢?

关于链接电子表格的performance,立即想到了四个因素:

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

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

我将把解决scheme放在最后,因为它解决了我上面遇到的问题,包括自动更新数据:

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

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

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

使用Delete查询设置启动时运行的Autoexecmacros(假设单击enable macrosbutton)以清空Access表,并执行Append查询以将链接的Excel表中的行添加到Access表中。

这样可以避免由于删除/重新导入表而导致的问题,主要是它们都以未分配的对象组结束; 或试图使用导入规格,并最终与types不匹配。

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

实现这种解决scheme的可能性取决于您将查询翻译成logging集的能力。 你需要对VBA和ADODB对象有一定的了解,因为你必须编写用于生成logging集的代码,然后在屏幕上(或在报表中)显示它们的内容。