コンボボックスの値を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"



コメント