MDBへODBC接続テーブルをインポートし、主キーを作成する

これも今回の仕事で必要になった件。
ローカルにあるMDBに別PCにあるOracleデータベースのテーブルをインポートするという仕様。

意外にもSQL文でインポートできてしまい楽な処理だった。
ただインポートしたテーブルにはキー情報が無いのでDAOでキー作成が必要。

これも参考になればと思いサンプルコードを下記に掲載。
※実際に組み込んだのはこのままじゃないですが(^^;;

  1. '――――――――――――――――
  2. 'MDBへODBC接続テーブルをインポートし、主キーを作成するサンプル
  3. '――――――――――――――――
  4. Dim daoWS As DAO.WorkSpace
  5. Dim daoDB As DAO.DataBase
  6. Dim tblDef As DAO.TableDef
  7. Dim tblIdx As DAO.Index ‘主キー追加用
  8.  
  9. Set daoWS = DBEngine.Workspaces(0)
  10. Set daoDB = daoWS.OpenDatabase("C:\DB\Hoge.mdb") ‘リンクを作成するMDBを開く
  11.  
  12. 'ODBC接続先のテーブルからローカルにデータをインポートする
  13. strSQL = “SELECT * INTO hogeTbl " ‘インポート後テーブル名を指定
  14. strSQL = strSQL & " FROM ODBC_hogeTbl " ‘インポートするODBCのテーブル名を指定
  15. 'インポートするデータベースへの接続設定(ODBCでDSNを使い接続)
  16. strSQL = strSQL & " IN " [ODBC;DSN=HogeDSN;UID=hoge;PWD=hoge;]; "
  17.  
  18. daoDB.Execute strSQL ‘SQL文を実行
  19.  
  20. 'インポートしたテーブル名を指定
  21. Set tblDef = daoDB.TableDefs("hogeTbl")
  22.  
  23. '主キーの設定を行う
  24. Set tblIdx = tblDef.CreateIndex("PrimaryKey")
  25. tblIdx.Primary = True ‘主キーフラグをオン
  26. tblIdx.Fields.Append tblIdx.CreateField("Code") ‘主キーにするフィールド名
  27. 'テーブルにキーを追加
  28. tblDef.Indexes.Append tblIdx
  29.  
  30. Set tblIdx = Nothing
  31. Set tblDef = Nothing
  32.  
  33. daoDB.Close
  34. daoWS.Close
  35.  
  36. Set daoDB = Nothing
  37. Set daoWS = Nothing

MDBへODBC接続テーブルのリンク作成

今回の仕事でローカルにあるMDBに別PCにあるOracleデータベースのテーブルにリンクを張り、
参照するという仕様があった。

ODBC接続でリンクを張ること自体は簡単だったものの、リンク処理時にパスワードを保存して
次回そのリンクテーブルを利用する場合にパスワード確認をされないようにする必要があった。

パスワードを保存する方法を模索して見つけたので参考になればと思い
サンプルコードを下記に掲載。
※実際に組み込んだのはこのままじゃないですが(^^;;

肝はこの一行でした ↓
tblDef.Attributes = dbAttachSavePWD

  1. '――――――――――――――――
  2. 'MDBへODBC接続テーブルのリンクを作成するサンプル
  3. '――――――――――――――――
  4. Dim daoWS as DAO.WorkSpace
  5. Dim daoDB as DAO.DataBase
  6. Dim tblDef as DAO.TableDef
  7.  
  8. Set daoWS = DBEngine.Workspaces(0)
  9. ‘リンクを作成するMDBを開く
  10. Set daoDB = daoWS.OpenDatabase("C:\DB\Hoge.mdb")
  11.  
  12. Set tblDef = daoDB.CreateTableDef("Sales") ‘リンク後のMDBでのテーブル名
  13. ‘リンクするデータベースへの接続設定
  14. tblDef.Connect = “ODBC;DSN=HogeDSN;UID=hoge;PWD=hoge;"
  15. tblDef.Attributes = dbAttachSavePWD ‘リンクパスワードを保存する
  16. tblDef.SourceTableName = “Sales" ‘リンク元のテーブル名
  17. daoDB.TableDefs.Append tblDef ‘リンクテーブルを追加
  18.  
  19. Set tblDef = Nothing
  20.  
  21. daoDB.Close
  22. daoWS.Close
  23.  
  24. Set daoDB = Nothing
  25. Set daoWS = Nothing

Oracle接続と奮闘

すっかりブログの更新がご無沙汰状態になっていますが
GW明けから大きな案件が入っていて日々開発に追われてました。

その案件と次の案件は、あまり経験のないOracleに接続が含まれていて
開発する準備段階が実は結構手間取ってしまって。丸一日設定に奮闘してました(^^;;

OraHome92というミドルウェアでの接続でしたがネーミングメソッド、
ローカル・ネットサービス名の設定がうまく行かず何度もやり直し・・・
結局コツをつかんでしまえば楽なもんでしたが遠回りしましたねぇ~

でも遠回りした分二回目はスムーズに設定できたし、今後Oracle案件も少しは
こなせる自信がつきましたね。

また.NETにご無沙汰してしまったので取り戻しながら開発コードSHMも含めやっていこうと思います。