database - Excel 中的内存数据库

标签 database excel vba

我正在寻找一种方法,将数据表从 Access 导入 Excel 变量,然后通过该变量运行查询以加快该过程。我正在尝试从 C# .NET 迁移,在 C# .NET 中,我将数据表从 Access 数据库读取到内存中,然后使用 LINQ 查询该数据集。它比我目前在 VBA 中编码的方式要快得多,在 VBA 中我必须对实际数据库进行大量调用,这很慢。我已经看到提到的 QueryTable,但这似乎需要将数据粘贴到 Excel 工作表中。我希望将所有内容保留在内存中,并尽可能减少 Excel 工作表和 VBA 代码之间的交互。

我希望我们不需要使用 Excel+VBA 来完成此操作,但目前我们有点坚持这样做。感谢您的帮助!

最佳答案

我不知道像 LINQ for VBA 这样的东西。

如果通过将 ADO 连接选项设置为公共(public)来将其保留在范围内,则可以针对它执行命令。它不如 LINQ 快,但绝对比为每次调用创建和销毁 Connection 对象要快。

如果表不是太大,我倾向于将表读入 VBA 中的自定义类,并设置适当的父/子关系。这样做的一个非常明显的缺点是您无法使用 SQL 从类中获取数据记录集。当我需要多个特定记录时,我必须使用大量循环。这意味着如果你有 1m 条记录,调用数据库会更快。

如果您对最后一个感兴趣,您可以在这里阅读我写的一些内容 http://www.dailydoseofexcel.com/archives/2008/12/07/vba-framework/

http://www.dailydoseofexcel.com/archives/2008/11/15/creating-classes-from-access-tables/

http://www.dailydoseofexcel.com/archives/2007/12/28/terminating-dependent-classes/ (阅读罗布·布鲁斯的评论)

关于database - Excel 中的内存数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2739676/

相关文章:

excel - 独立于本地化的自定义编号(价格)格式

excel - 如何检查列表框的一行是否为空

java - 从 UNKNOWN 到 UNKNOWN 的转换是不支持的异常(在用于迁移的 Java 程序中)

mysql - 请任何人帮助我的 mysql 查询案例

php - 使用我预定义的数据库字段 php 映射 Excel 工作表字段

VBA计算表中的特定选择(excel)

vba - 子未定义错误: Calling a Macro in Another Sheet

vba - 如何在 VBA 中打开并定义两个 Excel 文件?

c# - 在 C# 中使用 SQL 表而不是字典引用

java - 将属性文件值与数据库中的数据耦合是一种反模式吗?