sql - VBA SQL查询到一个范围
问题描述
我想要结果查询到我的命运范围而不在我的函数中定义它,我的意思是......我可以调用命运范围吗?
你好,我想查询sql,不需要在函数的参数内定义一个范围,即:
Range ("A1") = sqlQuery ("DSN = myODBC;", "SELECT * FROM Table1", TodaLaConsulta)
执行这一行时,我只加载该范围内的一条记录,并且我想要整个表,代码是:
Private Enum TipoConsulta
SoloUnRegistro = 1
TodaLaConsulta = 2
EjecutarQuery = 3
GuardarArray = 4
End Enum
Private Function sqlQuery(ByVal CadenaCnx As String, ByVal Consulta As String, ByVal Tipo As TipoConsulta) As Variant
Dim Cnx As New ADODB.Connection 'Connection
Dim RecSet As New ADODB.Recordset 'Recordset
Cnx.Open CadenaCnx
Select Case Tipo
Case TipoConsulta.SoloUnRegistro
RecSet.Open Consulta, Cnx
sqlQuery = RecSet(0) 'JUST ONE RECORD
Case TipoConsulta.TodaLaConsulta
RecSet.Open Consulta, Cnx
'HERE I WANT THE RESULTING QUERY TO MY DESTINY RANGE WITHOUT DEFINE IT IN MY FUNCTION, I MEAN... CAN I CALL THE DESTINY RANGE??
Range.CopyFromRecordset RecSet
Case TipoConsulta.EjecutarQuery
Cnx.Execute Consulta 'EXECUTE
Case TipoConsulta.GuardarArray
RecSet.Open Consulta, Cnx 'TO ARRAY
sqlQuery = RecSet.GetRows
End Select
RecSet.Close
Cnx.Close
Set RecSet = Nothing
Set Cnx = Nothing
End Function
解决方案
您可以更新函数参数列表以包含可选的Range
-type 参数:
Private Function sqlQuery(ByVal CadenaCnx As String, ByVal Consulta As String, _
ByVal Tipo As TipoConsulta, _
Optional rng As Range = Nothing) As Variant
'dump result to rng if needed
End With
然后像这样调用:
sqlQuery "DSN = myODBC;", "SELECT * FROM Table1", TodaLaConsulta, Range("A1")
************原始答案(我在看GetRows)***
GetRows
返回一个二维数组,所以你应该能够做类似的事情
Dim res
res = sqlQuery ("DSN = myODBC;", "SELECT * FROM Table1", TodaLaConsulta)
Range("A1").Resize(ubound(res,1) + 1, ubound(res,2) + 1).Value = res
但我认为您不能在一行中完成,因为您需要调整目标范围的大小,并且要做到这一点,您需要结果数组的大小。
请注意,GetRows 返回一个数组,即 [column, row],因此您可能需要先转置它,然后再将其放在工作表上。
推荐阅读
- c# - C# 和 CsvHelper - 如何打开文件、修改值和重写文件
- excel - 使用表术语的 COUNTIF
- node.js - 在反应轮询中从 API 获取数据
- django - 带有列表视图的 Django 模型related_list
- javascript - 仅使用 React 钩子的功能齐全的倒数计时器
- jquery - 解码 base64 JSON 文件 - 用 ajax 方法
- java - 正则表达式过滤掉字符串
- reactjs - 测试 HOC 包装的 React 组件
- javascript - 通过 d3js 绘制圆并转换坐标
- r - 如何将数据框中的 n 列旋转为 R 中的两列?