目指せ、Accessマスター!
7月 23rd, 2010
★やりたい事 Accessで、他のDBを参照してリンクテーブルを作成する。 ★環境 ・WindowsXP SP3 ・Access2003 ★リンクテーブルを作成するための関数 ※以下のオレンジの太文字を環境に応じて変更して下さい。 ◆備考 ・リンクテーブルが存在しない場合はリンクテーブルを作成 ・同名のリンクテーブルが存在する場合は上書き(処理は削除して新規作成) ━━━━━━━━━━━━━━━━━━━━━━━━━ Public Function mk_tbl_link() '★参照ライブラリ ・・・ 以下を参照しないと動作しません。 '・Microsoft ADO Ext 2.8 DLL And Security '--------------------------------------------- '★変数宣言 Dim cat As New ADOX.Catalog Dim tbl() As New ADOX.Table Dim linkMDB As String Dim linkMDB_path As String Dim linkMDB_file As String Dim linkTblNames() As String Dim i As Integer Dim tblNames As Variant Dim itemNum As Integer 'リンクするテーブル数を入力。ただし、配列だから0からスタートに注意! itemNum = 6 ReDim tbl(itemNum) As New ADOX.Table ReDim linkTblNames(itemNum) As String '--------------------------------------------- '★値のセット linkMDB_path = "D:リンク先のパス" linkMDB_file = "リンク先のMDB.mdb" linkMDB = linkMDB_path & linkMDB_file i = 0 cat.ActiveConnection = CurrentProject.Connection 'リンクするテーブル名をセット linkTblNames(0) = "リンクするテーブル名1" linkTblNames(1) = "リンクするテーブル名2" linkTblNames(2) = "リンクするテーブル名3" linkTblNames(3) = "リンクするテーブル名4" linkTblNames(4) = "リンクするテーブル名5" linkTblNames(5) = "リンクするテーブル名6" linkTblNames(6) = "リンクするテーブル名7" '--------------------------------------------- '★メイン処理 For Each tblNames In linkTblNames '■各種設定 Set tbl(i).ParentCatalog = cat tbl(i).Properties("Jet OLEDB:Create Link") = True tbl(i).Properties("Jet OLEDB:Link Datasource") = linkMDB 'パスワード ・・・ 参照先DBにパスワードがある場合はここを記入 'tbl(i).Properties("Jet OLEDB:Link Provider String") = ";pwd=リンク先のMDBのパスワード" 'リンクしたテーブル名 tbl(i).Name = tblNames 'ソーステーブル名 tbl(i).Properties("Jet OLEDB:Remote Table Name") = tblNames '■リンクテーブル処理 For Each TB In cat.Tables If TB.Name = tblNames Then 'テーブル削除 cat.Tables.Delete tbl(i).Name Exit For Else ' End If Next TB 'リンクテーブル作成 cat.Tables.Append tbl(i) 'インクリメント i = i + 1 Next tblNames 'オブジェクトの破棄 Set cat = Nothing Set tbl(itemNum) = Nothing '終了メッセージ MsgBox ("リンクテーブルの作成/更新が完了しました") End Function ━━━━━━━━━━━━━━━━━━━━━━━━━
Posted in Access2003, VBA, 未分類 | Comments (1)
7月 23rd, 2010
★やりたい事
Accessで、リンクテーブルの参照先をVBAを用いて変更する。
★環境
・WindowsXP SP3
・Access2003
★リンクテーブルを変更するための関数
※以下の赤の太文字を環境に応じて変更して下さい。
━━━━━━━━━━━━━━━━━━━━━━━━━ Public Function ch_tbl_link() '★参照ライブラリ ・・・ 以下を参照しないと動作しません。 '・Microsoft DAO 3.6 Object Library '------------------------------------------------------------------- '★変数宣言 Dim tdf As TableDef Dim dbs As Database '------------------------------------------------------------------- '★オブジェクトセット Set dbs = CurrentDb Set tdf = dbs.TableDefs("リンクテーブル名") '------------------------------------------------------------------- '★メイン処理 'プロパティ値の変更 With tdf .Connect = ";DATABASE=D:リンク先のMDB.mdb;TABLE=リンクテーブル名" .RefreshLink End With '終了メッセージ MsgBox "リンクテーブルの変更が完了しました。" 'オブジェクトの破棄 Set tdf = Nothing dbs.Close: Set dbs = Nothing End Function ━━━━━━━━━━━━━━━━━━━━━━━━━
Posted in Access2003, VBA, 未分類 | Comments (1)
月 | 火 | 水 | 木 | 金 | 土 | 日 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |