0

DB2データベースのテーブルからXML列を取得しようとしています。以下のコードを使用して、データ型としてxmlを持たない列を取得できます。

query = "some query"  
strConn = "my connection string"  
set dbConn = CreateObject("ADODB.Connection")  
set rs = CreateObject("ADODB.RecordSet")  
dbConn.Open strConn  
rs.Open query, dbConn  

rs.MoveFirst  
While Not rs.EOF  
 data = rs.Fields(0)  
 rs.MoveNext  
Wend  
dbConn.Close  

データがxmlデータ型の場合、「data = rs.Fields(0)」という行は「不特定のエラー」をスローします。レコードセットはXMLオブジェクトを返すので、次のようにDOMオブジェクトに割り当てる必要があると思いました。

Set xDOM = CreateObject("Microsoft.XMLDOM")  
rs.Save xDOM, adPersistXML  

しかし、これはまだ機能しません。QTPは、保存行の実行時に「不特定のエラー」をスローします。

私は答えをグーグルで検索しましたが、役立つものは何も見つかりませんでした。これを成功させた人はいますか?

私の質問を読んでくれてありがとう。

4

1 に答える 1

0

DB2 - .NET データ型に従って、DB2Xml は Byte()/Blob にマップされます。おそらく、ゲイツ氏が写真を扱うように、XML フィールドを扱うことができます

Set cn = New ADODB.Connection   ---> CreateObject("ADODB.Connection")
cn.Open "DB2 Connection String"

Set rs = New ADODB.Recordset    ---> CreateObject("ADODB.Recordset")
rs.Open "Your SQL", cn, adOpenKeyset, adLockOptimistic ---> Const defines needed

Set mstream = New ADODB.Stream ---> CreateObject("ADODB.Stream")
mstream.Type = adTypeBinary ---> Const define needed
mstream.Open
mstream.Write rs.Fields("Your XML field").Value
mstream.SaveToFile "fullfilespec.xml", adSaveCreateOverWrite ---> Const define needed

rs.Close
cn.Close

(明らかにテストされていないaircode)

PSあなたrs.Save xDOM, adPersistXMLは完全に間違っています。.Save は、レコードセット全体を最初のパラメーターとして指定されたファイルに保存します。

于 2013-01-11T15:47:22.947 に答える