[[20210202170445]] 『レコードセットにnullを追加する方法』(モゲラ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『レコードセットにnullを追加する方法』(モゲラ)

Oracleから取得したレコードセットを再加工して取り扱おうと思いレコードセットをコピーする関数を作成しました
しかしこれではnull値が発生した場合AddNewする際にエラーが発生してしまいます
nullをAddNewする方法はないでしょうか?

Public Function CopyRecordset(ByVal orgrs As Object) As Object

    Dim rtn As Object: Set rtn = CreateObject("ADODB.Recordset")
    Dim i As Long, n As Long: n = orgrs.Fields.Count - 1
    Dim clm As Variant: ReDim clm(n)
    For i = 0 To n
        With orgrs.Fields(i)
            clm(i) = .Name
            rtn.Fields.Append clm(i), .Type, .DefinedSize
        End With
    Next i
    rtn.Open

    Dim rcd As Variant: ReDim rcd(UBound(clm))
    orgrs.MoveFirst
    Do Until orgrs.EOF
        For i = 0 To n
            rcd(i) = orgrs.Fields(i).Value
        Next i
        rtn.AddNew clm, rcd
        orgrs.MoveNext
    Loop

    Set CopyRecordset = rtn
End Function

< 使用 Excel:Office365、使用 OS:Windows10 >


 自分のコード見たら↓こんなげな事やってました。

 rcd(i) = orgrs.Fields(i).Value
 If rcd(i) = Null              Then rcd(i) = Empty
 If rcd(i) = vbNullChar        Then rcd(i) = Empty
 If IsNull(rcd(i))             Then rcd(i) = Empty
 If Application.IsText(rcd(i)) Then rcd(i) = Application.Clean(rcd(i)) '←ついでに

 どれが効いてるのかよく分かんないので、とりあえず全部入れてた・・・って感じですね^^;

(白茶) 2021/02/02(火) 20:05


NULL値を別の値に書き換えるんですねやっぱ・・・
数値型や日付型にもできるか不安ですがしばらく書き換える方法で行きますか・・・
(モゲラ) 2021/02/02(火) 20:10

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.