将汇总数据从Excel加载到ADODB.RecordSet中

问题描述

我正在尝试使用SQL SELECT命令通过VBA宏将特定工作表中的Excel文件中的数据加载到ADODB.RecordSet中。 Excel工作表上有几列,而我并不需要全部。

例如: col.A =姓,col.B =名称,col.C = IDPerson,[....不需要的列],N。Col =老板

目的是获取以下各项的汇总数据记录集: col.C = IDPerson,col.N = Boss。 下图中突出显示的字段。

我想创建一个RecordSet,并用黄色突出显示列的聚合(非重复)数据。

enter image description here

显然,也可以通过加载矩阵来解决此问题,但是,在这种情况下,我将必须构建一种加载算法来“清除”数据中的所有重复,然后,我将不得不提供带有以下内容的搜索功能:一些循环。 因此,我认为如果可以通过读取WorkSheet来加载所需的所有数据,就好像它是数据表一样,然后对其进行查询以提取所需的数据并将所有内容加载到ADODB中.RecordSet将会更多搜索数据(例如过滤数据)也很有效。

下面,我报告我的代码,该代码将加载工作表中的所有数据:

Public Sub LoadRecordSet(ByVal LastRow As Long,ByVal LastCol As Integer)
    Dim cnt As ADODB.Connection
    Dim rsData As ADODB.Recordset
    Dim strSQL As String
    Dim strTMP As String

    strTMP = Cells(LastRow,LastCol).Address
    strTMP = Replace(strTMP,"$","")

    Set cnt = New ADODB.Connection
    cnt.Mode = adModeRead
    cnt.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
                            "Data Source=" & ActiveWorkbook.FullName & ";" & _
                            "Extended Properties=""Excel 12.0 Macro;HDR=Yes;"";"
    cnt.Open
    
    strSQL = "SELECT * FROM [Sheet1$C2:" & strTMP & "]"
    Set rsData = New ADODB.Recordset
    With rsData
        Set .ActiveConnection = cnt
        .Source = strSQL
        .CursorLocation = adUseClient
        .CursorType = adOpenKeyset
        .LockType = adLockOptimistic
        .Open
    End With
    
    'TODO - Something with rsData for filtering or to research
    
    'GC
    If Not rsData Is Nothing Then
        If rsData.State <> adStateClosed Then rsData.Close
        Set rsData = Nothing
    End If
    If Not cnt Is Nothing Then
        If cnt.State <> adStateClosed Then cnt.Close
        Set cnt = Nothing
    End If
End Sub

我的问题是:“如果我只想如上所述加载一些列并进行汇总,以使它们在数据中没有重复呢?”

例如,如果我想加载类似 SELECT [cod.fiscale],来自[MySheet $ A3:N480] GROUP BY [cod.fiscale],负责

有可能吗? 非常感谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)