首页 > 解决方案 > 如何根据数据库查询结果的大小缩小或扩展表

问题描述

我有一个 oracle 数据库,我可以使用 vba 读取/写入数据。我想为我的数据库构建一种 excel 用户界面。目前,我的程序看起来像这样:我有一个包含几列和 1 行的表,如下所示:

 --------------------------------------------------------
 | Name | Postal-Code | Favorit Color | Body-Mass-Index | 
 --------------------------------------------------------
 |      |             |               |                 |
 --------------------------------------------------------

根据我从 excel 触发的查询,我想用我的数据库中的数据填充这个表。

我的问题:如何使表大小(当前为 1 行)适应我的数据库返回的行数?此外,我还希望能够从表中读取数据(例如在编辑后)并将其发送到数据库。如何使我从表中选择所有包含数据的行?

我应该补充一点,我对 excel 和 vba 了解不多,所以使用表格来完成所有这些只是我的一个想法,如果您认为 excel 中还有其他东西更适合我想要的功能,请告诉我。

标签: excelvba

解决方案


虽然从技术上讲,这不是您想要的答案,但我建议Oracle 使用 ODBC 接口将您的电子表格连接到数据。您可以在 Oracle 中编写自己的过滤器/视图/查询并仅提取该数据。

为此,在 Excel 中,切换到Developer功能区并单击Record New Macro。将宏称为“ OraDbConnect ”(如果需要,请设置其他选项)。

录制宏对话框

现在切换到Data功能区,从From Other Sources下拉列表中选择From Data Connection Wizard

使用数据连接向导进行连接

从列表中选择ODBC DSN 。

ODBC DSN 对话框

...并从那里选择您的数据表。

选择数据库和表对话框

现在命名将用于连接到数据库的连接文件(明智的做法是将此文件放在只读共享上,以便所有需要它的用户都可以使用它)。

保存数据连接并完成对话框

从这里您可以选择要放置数据的位置...

导入数据对话框

使用底部的“属性...”按钮,您可以决定是否以及多久刷新电子表格中的数据,从而无需使用复杂的 VBA 代码来更新它。

从那里,我会说,您最好的选择是隐藏您的原始数据表并使用您实际想要显示的数据创建数据透视表或其他过滤列表。

哦!不要忘记停止录制你的宏!;o)


推荐阅读