AccessのコンボボックスのデータセットADO接続RecordSetで行う

コンボボックスの値をAccess側に持ちたくなかったのでOracleDBにADO接続しRecordSetをコンボボックスの値とする方法。

参照設定:Microsoft ActiveX Data Objects 6.1 Library

OracleのSQL文はテーブルtEiajEdiSqlとしてコンボボックスの抽出KBNとしてはSII

 

 

 

 

Public Sub procCombSirSet()

    Set accCon = CurrentPrject.Connection
    Set oraCon = New ADODB.Connection
    Set oraRs = New ADODB.Recordset
    Set mForm = Forms(fmMain)
    
    'ローカルのテーブルからOracleに渡すSQL文を取得
    strSql = ""
    strSql = "SELECT SQLMOJI FROM tEiajEdiSql WHERE KBN = 'SII'"
    
    Set accRs = accCon.Execute(strSql)
    
    strOraSql = ""
    strOraSql = accRs.Fields("SQLMOJI").Value
    
    'Oracleに接続
    strDsn = "DSN=" & gstrDsn & ";UID=" & gstrUserID & ";PWD=" & gstrPassword
    oraCon.ConnectionString = strDsn
    oraCon.Open
    
    oraRs.Open strOraSql, oraCon
    
    'コンボ値をRecordsetより行う
    mForm.cmbSircd.RowSource = oraRs.GetString(adClipString, , ";", ";")
    
    'プロシージャ終了処理
    accRs.Close: accCon.Close
    Set accRs = Nothing: Set accCon = Nothing
    oraRs.Close: oraCon.Close
    Set oraRs = Nothing: Set oraCon = Nothing
    Set mForm = Nothing

End Sub

 

値集合タイプ=値リストに設定しないと当然ながらエラー(ここではまりました)

赤枠内がテーブル/クエリになっており上記コードのみではエラー(>o<)

プロパティシートで値リストに指定するも有りだしコードに書いてしまうのも有り

Me.cmbSircd.RowSourceType = "Value List"

 

 

 

コメント