oo4o - 表からデータを取得するAdvertisement手順
次の手順で select 文を使用して表からデータを取得することができます。
OraDynaset オブジェクトの取得
Oradatabase オブジェクトの CreateDynaset メソッドに SQL文を渡して結果を受け取ります。
書式
OraDatabase.CreateDynaset("SQL文", [オプション], スナップショットID)
実際の使い方は次のようになります
Dim OraDynaset As Object
OraDynaset = OraDatabase.CreateDynaset("select * from emp", 0)
これで、 select * from emp の結果を格納している OraDynaset オブジェクトが生成されました。
OraDynaset より結果を取得
SQL文を発行して取得した結果を参照するには OraDynaset のメソッドを使用します。
OraDynaset はカーソルになっていて、OraDynaset オブジェクトを取得した時点では一番先頭のレコードを指し示しています。レコードの各フィールドを参照するには次の方法があります。 レコードを配列として参照 OraDynasetオブジェクト.Fields(インデックス) 列名を指定して参照
OraDynasetオブジェクト("列名");
上記のどちらの方法でも値を取得することが可能です。ループさせて取得する場合には配列として扱うとよいでしょう。逆に列名指定をすると、表の変更に対しての影響が少なくなる場合があります。カーソルを次に薦める場合、OraDynaset オブジェクトの MoveNext メソッドを使用します。このメソッドを実行すると、カーソルは現在のレコードの次のレコードを指し示します。 OraDynasetオブジェクト.MoveNext() サンプルコード
emp 表より、全データを取得。ワークシートの各セルに値を表示する。
Private Sub CommandButton1_Click()
Dim OraSession As Object
Dim OraDatabase As Object
On Error Resume Next
Set OraSession = CreateObject("OracleInProcServer.XOraSession")
Set OraDatabase = OraSession.OpenDatabase("sampleDB", "scott/tiger", 0)
If Err.Description <> "" Then
MsgBox Err.Description, vbOKOnly + vbCritical, "接続エラー"
Exit Sub
End If
Dim result As Object
Set result = OraDatabase.CreateDynaset("select * from emp", 0)
Dim i As Integer
Dim k As Integer
For k = 1 To rs.RecordCount
For i = 0 To result.Fields.Count
ThisWorkbook.ActiveSheet.Cells(k, i + 1) = result.Fields(i)
Next
result.MoveNext
Next
' 解放
Set result = Nothing
Set OraSession = Nothing
Set OraDatabase = Nothing
End Sub
実行イメージ
Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ サイト検索Y!ログール |