【发布时间】:2014-01-24 10:31:50
【问题描述】:
下面的 VBA 代码可以完成这项工作,但我在转置部分损失了大约 3 秒。
有没有一种方法可以在不丢失 3 秒的情况下在 SQL 查询或 getrows 过程中获得相同的结果?
Sub LoadData()
Dim strCon, srtQry As String, tmpArray, tmpArray2, R As Variant, i, j As Long
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
strCon = "DRIVER={MySQL ODBC 5.2 ANSI Driver};" & _
"SERVER=localhost;" & _
"DATABASE=tbname;" & _
"USER=root;" & _
"PASSWORD=pass;" & _
"Port=3306;" & _
"Option=3"
cn.Open strCon
srtQry = "SELECT * FROM `tbname` WHERE `FileDay` = 20131220"
Set rs = cn.Execute(srtQry)
tmpArray = rs.GetRows
cn.Close
tmpArray2 = TransposeArray(tmpArray)
End Sub
转置数组:
Public Function TransposeArray(InputArr As Variant) As Variant
Dim RowNdx, ColNdx, LB1, LB2, UB1, UB2 As Long, tmpArray As Variant
LB1 = LBound(InputArr, 1)
LB2 = LBound(InputArr, 2)
UB1 = UBound(InputArr, 1)
UB2 = UBound(InputArr, 2)
ReDim tmpArray(LB2 To LB2 + UB2 - LB2, LB1 To LB1 + UB1 - LB1)
For RowNdx = LB2 To UB2
For ColNdx = LB1 To UB1
tmpArray(RowNdx, ColNdx) = InputArr(ColNdx, RowNdx)
Next ColNdx
Next RowNdx
TransposeArray = tmpArray
End Function
【问题讨论】:
-
原谅我的无知,
TransposeArray是什么? -
@Doug Glancy。我的常用 excel-vba 数组转置代码版本。将编辑和包含。
标签: mysql excel vba transpose adodb