2

コードの strSql 部分で変数 (j) を変更するループを VBA で作成しました。Excel シートの出力列はすべて同じです。つまり、変化する変数 j は strsql 文字列では考慮されません。この場合、適切な変更変数の使用方法を知っている人はいますか? 前もって感謝します

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 を文字列から移動する必要があります

register_date) <= j" &

register_date) <= " & j &

于 2012-10-30T19:06:52.170 に答える
2

かなり厄介ですが、adoを使用したvbaでは、これが最も速いハックだと思います...必ずしも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 に答える