2

我在 VBA 中创建了一个循环,它应该更改代码的 strSql 部分中的变量 (j)。我在 excel 表上的输出列都是相同的。这意味着在 strsql 字符串中不考虑变化的变量 j。有谁知道在这种情况下如何使用适当的变化变量?提前致谢

设置 rs = 新 ADODB.Recordset

     For j = 1 To 6


    strSql = "SELECT COUNT(*) FROM( " & _
     "SELECT COUNT(*) as nbp FROM `order`   " & _
     "JOIN user ON user.id = order.destination_id   " & _
     "AND DATEDIFF(date_added , register_date) <= j" & _
     "GROUP BY destination_id)  c  " & _
     "GROUP BY nbp " & _
     "ORDER BY c.nbp ASC ; "



    rs.Open strSql, oConn, adOpenDynamic, adLockPessimistic

    res = rs.GetRows

    rs.Close

    For i = 1 To 2
    Cells(i, j) = res(0, i - 1)
    Next i
    Next j
4

2 回答 2

4

您需要将 j 从字符串中移出

注册日期) <= j" &

注册日期) <= " & j &

于 2012-10-30T19:06:52.170 回答
2

相当讨厌,但在 ado 的 vba 中,我想这是最快的 hack ......你不需要将 j 转换为字符串,但我宁愿明确......

strSql = "SELECT COUNT(*) FROM( " & _
     "SELECT COUNT(*) as nbp FROM `order`   " & _
     "JOIN user ON user.id = order.destination_id   " & _
     "AND DATEDIFF(date_added , register_date) <= " & _ 
     CStr(j) & " " & _
     "GROUP BY destination_id)  c  " & _
     "GROUP BY nbp " & _
     "ORDER BY c.nbp ASC ; "
于 2012-10-30T19:07:22.740 回答