SQL在Excel VBA中不起作用

时间:2014-04-04 06:19:16

标签: sql excel-vba adodb vba excel

以下代码是大项目的一部分。

以下代码统计特定列中的记录。

   Sub qareportds()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim con As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sname As String
    Dim i As Integer
    Dim lrow As Integer

    sname = ActiveSheet.Name
    Set con = New ADODB.Connection
    Set rs = New ADODB.Recordset
    value1 = weeknum

    con.ConnectionString = "Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=" & ActiveWorkbook.FullName

    If con.State = adStateClosed Then con.Open

    Dim query1 As String

    query1 = "SELECT COUNT(RETAIL_SKU) FROM [RETOUCH$]"

    rs.Open query1, con, adOpenKeyset, adLockOptimistic

    Sheets("SHEET3").Range("a1").CopyFromRecordset rs

    rs.Close

    Set rs = Nothing
    Set con = Nothing
    End Sub

现在我需要计算列中的不同值。我使用了以下查询

query1 = "SELECT COUNT(distinct RETAIL_SKU) FROM [RETOUCH$]"

但它会低于错误..

odbc driver does not support the requested properties

更新部分:

是否可以插入此查询 -

SELECT COUNT(A.RETAIL_SKU) AS TotalCount FROM (SELECT DISTINCT RETAIL_SKU FROM [RETOUCH$]) AS A)

进入这个

SELECT  REGION + '-' + STUDIO_SHORT_NAME,
    AVG(WorkedHours),
    AVG(OVERALL_CYCLE_TIME_HRS),
    'Studio Retouch - By Studio Locations - Non IA' as value1,
    13 as date1 
FROM    [RETOUCH$] 
WHERE   RETOUCH_LEVEL IN (1,2,3,4,5,6) 
    AND MERCHANT='Amazon' 
    AND SOURCE_TYPE='Studio' 
GROUP   BY REGION + '-' + STUDIO_SHORT_NAME

1 个答案:

答案 0 :(得分:5)

因为COUNT(DISTINCT ...)尚不支持。尝试,

SELECT COUNT(A.RETAIL_SKU) AS TotalCount
FROM
(
    SELECT DISTINCT RETAIL_SKU 
    FROM [RETOUCH$]
) AS A