我目前链接到六个Excel电子表格,主要是因为用户在Excel中编辑数据更容易/更好(他们从未使用过Access),并且任何更改都会立即反映出来,包括是否有新列添加后即可立即使用查询。
但是链接而不是导入这些数据是否存在性能损失?我的一些查询很慢,1-2分钟,有时只需要2-3分钟来保存查询。每次打开数据库时,如何设置Access以导入这些工作表的新版本,是否值得?
答案 0 :(得分:2)
关于电子表格的效果,有4个因素立即浮现在脑海中:
鉴于保存查询通常很慢,我的猜测#1是您的主要瓶颈。是的,使用链接而不是导入会有很小的性能损失,但是您的用例(小数据集,没有太多链接)会使这种惩罚非常小。另一方面,慢速网络将减慢每个操作的速度,包括保存对Access数据库本身的更改。
答案 1 :(得分:1)
我会提出我最终解决的解决方案,因为它几乎解决了我上面遇到的问题,包括自动更新数据:
有适当的Access表用于查询,例如tblStoreDetails,tblPromotions
仍然使用电子表格来维护数据,因为这是更灵活的更新/查看这些内容的方式,而无需在Access中构建表单/前端,这真的不值得花时间,因为没有其他人会直接使用数据库。
在Access中链接到这些表格,例如excelStoreDetails,excelPromotions
设置启动时运行的Autoexec宏(假设单击启用宏按钮),使用Delete查询清空Access表,并使用Append查询将链接Excel表中的行添加到Access表。 / p>
这解决了删除/重新导入表所导致的问题,主要是它们都在“未分配的对象”组中;或尝试使用导入规范并最终导致类型不匹配。
答案 2 :(得分:0)
您可以通过ADODB连接连接到Excel文件,并在ADODB.recordset中打开它。它非常快。实际上,它可以与连接到“真实”数据库一样快。
实施此类解决方案的可能性取决于您将查询“转换”为记录集的能力。你需要对VBA和ADODB对象有一些很好的了解,因为myou必须编写代码来生成记录集,然后在屏幕上(或在报告中)显示它们的内容。