目的:Excel2016でVBAを利用し、Oracle12cからデータを取得し、Excelで加工する。
環境:Windows10(64bit) Excel2016(32bit) Oracle12c
oo4oで問題なく取得できていたので、ADOに書き直して実行すると
ORDER BY が効いていない。
SELECT 管轄, 団地コード, ・・・ FROM 団地.SEGS ORDER BY 管轄, 団地コード
管轄:2桁 CHAR 団地コード:4桁 CHAR ・・・内容は数値(桁違いなし)
・・・?
ORDER BY CAST(管轄 AS SIGNED), CAST(団地コード AS SIGNED) かな?
ORDER BY LPAD(管轄, 2,0), LPAD(団地コード,4,0) かな?
ただ、現象が変
現象:200レコード目から100レコード目を繰り返している。このため100~200の
レコードが重複している。
Dim cn As New ADODB.Connection 'Connectionオブジェクト
Dim rs As New ADODB.Recordset 'Recordsetオブジェクト
Dim selCmd As String
・・・
cn.Open ConnectionString:="Provider=OraOLEDB.Oracle;" _
& "Data Source=OracleDB;" _
& "User ID=scott;" _
& "Password=tiger;"
rs.Open selCmd, cn, CursorType:=adOpenKeyset, LockType:=adLockReadOnly
Worksheets("貼付データ").Activate
Range("A2:V100000").ClearContents 'A1行は見出しが入力されている
Range("A:W").NumberFormat = "General"
Range("A:K").NumberFormat = "@" '文字列扱い
Columns("T").NumberFormat = "#9"
Range("A2").CopyFromRecordset Data:=rs '貼り付け
rs.Close: set rs = Nothing
cn.Close: set rs = Nothing
※oo4oならCopytoClipboardで一気に貼り付けてたが、
ADOだと1行ごとの書き込みが目で追えたりする(=遅い)