私はMSアクセスのデータベースをExcelに変換するためにデータを取得しようとしています。しかし、レコードセットのrecordcountプロパティは常に-1を返しますが、他の目的のためにコードは正常に動作しています。ADODBレコードセットrecordcountは常に-1を返します
次のように私が使用しているコードは: `サブdatarecordset()
Dim cn As adodb.Connection
Dim oRs As adodb.Recordset
Set cn = CreateObject("ADODB.Connection")
DBPath = "C:\[databse path]" & "\[database name].accdb"
dbWs = "[excel sheet name]"
scn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBPath
dsh = "[" & "[excel sheet name]" & "$]"
cn.Open scn
Dim sSQL As String
Dim F As Integer
sSQL = "Select 'W',a.[Subledger],NULL,sum(a.[Amount]) from GL_Table a where a.[Opex_Group] = 10003 and year(a.[G/L Date]) = " & Year(Sheets("Repairs").Cells(1, 4)) & " and month(a.[G/L Date]) = " & Month(Sheets("Repairs").Cells(1, 4))
sSQL = sSQL & " group by " & "a.[Subledger],(year(a.[G/L Date])),(month(a.[G/L Date]))"
Set oRs = cn.Execute(sSQL)
Debug.Print oRs.RecordCount
oRs.Close
....... further code to print to excel here
cn.Close
End Sub`
コードは、レコードセットのデータを取得し、Excelで記述します。しかし、レコードセットプロパティはレコードカウントを返さないため、レコードセット内のさまざまなフィールドの値をExcelワークシートの異なるセルに出力することはできません。
私はGoogleで検索し、レコードセットの型を宣言する必要があり、そのためにconnection.executeの代わりにconnection.openを使用する必要があることを理解しました。しかし、コードを変更しようとしていますが、エラーオブジェクト変数または変数が定義されていません。
クイックヘルプは歓迎されます。ありがとう。
[recordcounterror](http://www.adopenstatic.com/faq/)を参照してください。 (recordcountror.asp)と[recordcountalternatives](http://www.adopenstatic.com/faq/recordcountalternatives.asp)を参照してください。 – BitAccesser