ん?何が原因だ?なんか制約があるのか?

目的: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行ごとの書き込みが目で追えたりする(=遅い)