1

VBA初心者です。VBA で mySQL クエリを実行できましたが、すべての Excel 列の結果で同じ数値が得られます。明確な結果を表示するには、コードの何を変更すればよいかわかりません。誰でも私を助けることができますか?

    strSql = "SELECT COUNT(*), destination_id FROM `order`   " & _
     "JOIN user ON user.id = order.destination_id   " & _
     "WHERE payment_status = 'pay'  " & _
     "AND email NOT LIKE '%@thelts.com' " & _
     "AND email NOT LIKE '%trend.com' " & _
     "AND `is_dinstinct` IS NULL; "



    rs.Open strSql, oConn, adOpenDynamic, adLockPessimistic

    res = rs.GetRows

    rs.Close

    Range("A1", "B6") = res(0, 0)
4

2 に答える 2

0

2つのこと、SQLにGROUP BY destination_idがないようです(ただし、mysqlでは合法かもしれませんが、SQLサーバーの男です)が、実際の問題は行にあると思います...

Range("A1", "B6") = res(0, 0)

ここで言っているのは、結果を範囲の各セルの位置 0, 0 に置くことです。

あなたは試すことができます

範囲 ("a1") = res(0, 0)

Range("b6") = res(0, 1)

于 2012-10-29T18:11:39.787 に答える
0

CopyFromRecordset私(&@TimWilliams)が結果を範囲に書き込むために使用する方法です-最初に配列にロードするよりも少し役立つかもしれません

Excel ヘルプの例:

For iCols = 0 to rs.Fields.Count - 1
    ws.Cells(1, iCols + 1).Value = rs.Fields(iCols).Name
Next
ws.Range(ws.Cells(1, 1), ws.Cells(1, rs.Fields.Count)).Font.Bold = True
ws.Range("A2").CopyFromRecordset rs 

このメソッドをコードに配置し、

strSql = "SELECT COUNT(*), destination_id FROM `order`   " & _
"JOIN user ON user.id = order.destination_id   " & _
"WHERE payment_status = 'pay'  " & _
"AND email NOT LIKE '%@thelts.com' " & _
"AND email NOT LIKE '%trend.com' " & _
"AND `is_dinstinct` IS NULL; "

rs.Open strSql, oConn, adOpenDynamic, adLockPessimistic

Range("A1").CopyFromRecordset rs 
于 2012-10-29T19:49:04.140 に答える