excel 使用SELECT从Access数据库中检索数据

2j4z5cfb  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(198)

我在Excel中使用VBA进行“SELECT”查询。

CommodityInfo = ObjAccess.CurrentProject.Connection.Execute( _
"SELECT TOP 1 Commodity FROM [" & CustomerName & "]")

它工作了。我正在努力使用CommodityInfo变量中的信息。我可以在Locals窗口中看到信息在那里。我如何使用它来输出值?

第1项显示得很清楚,所以它被访问了。我如何从第1项中提取值并像使用字符串一样使用它?

Count可以通过声明CommodityInfo.Count来使用。
我尝试了ComVal = CommodityInfo(1).Value,但出现错误
在与请求的名称或序号对应的集合中找不到项。

2izufjch

2izufjch1#

正如注解中所指出的,您的代码正在打开一个记录集对象,而不是提取单个值。
由于字段索引从零开始,因此第一个字段使用0而不是1:ComVal = CommodityInfo(0)将单个字段值从记录集拉到简单变量。
或者在Execute命令后附加字段索引引用,将单个字段值直接提取到简单变量中。

CommodityInfo = ObjAccess.CurrentProject.Connection.Execute( _
               "SELECT TOP 1 Commodity FROM [" & CustomerName & "]")(0)

下面是拉取单个值而不是打开记录集的替代方法:
CommodityInfo = ObjAccess.DLookup("Commodity", "[" & CustomerName & "]")
在我的测试中,它跑得更快。
不需要示例化Access应用程序对象变量就可以从Access中提取数据。我发现这段代码运行得最快。

Dim cn As New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source='your access database filepath'"
CommodityInfo = cn.Execute("SELECT TOP 1 Commodity FROM [" & CustomerName & "]")(0)

或者

Dim cn As New ADODB.Connection
cn.Open "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & ThisWorkbook.FullName & ";HDR=Yes';"
CommodityInfo = cn.Execute("SELECT TOP 1 Commodity FROM [" & CustomerName & "]" IN 'your database filepath'")(0)

相关问题