oo4o - 表からデータを取得する

Advertisement

手順

次の手順で select 文を使用して表からデータを取得することができます。
  1. OraDatabase オブジェクトの CreateDynaset メソッドを利用して OraDynaset オブジェクトを作成します。この時点で OraDynaset オブジェクトには検索結果が格納されています。
  2. OraDynaset オブジェクトから検索結果を取得する
※接続〜切断は省略

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ラボ

サイト検索

Google

Web サイト内

Y!ログール