スキップしてメイン コンテンツに移動

リンクテーブルの自動更新

MS-Access で、リンクテーブルでデータテーブルを別ファイル等に設定していた場合、端末や場所を移動した場合に、リンクテーブルでデータテーブルを指定し直す必要があります。

これをサボろう。以下コード。



Private Sub LinkTableRenew()
    Dim strMsg as String
    strMsg = "リンクテーブルを自動更新しますか?" & vbcrlf & vbcrlf & _
      "ネットワーク先への接続試行がある場合、かなり時間がかかる場合があります。" & _
      "進捗状況は左下のステータスバー内メッセージで確認してください。"
    If MsgBox(strMsg, vbYesNo + vbDefaultButton2 + vbQuestion, "テーブル自動更新確認") = vbNo Then Exit Sub
   
   
    Dim objDB       As DAO.Database
    Dim objTB       As DAO.TableDef
    Dim aryTBpath   As Variant
    Dim strTBpath   As Variant
    Dim strCpath1   As String
    Dim strCpath2   As String
    Dim strCpath3   As String
   
    Set objDB = CurrentDb
   
    '-- カレントパスに置いた場合、こういった書き方も出来るっつー例
    strCpath1 = CurrentProject.Path & "hoge_db1.accdb"
    strCpath2 = CurrentProject.Path & "hoge_db2.accdb"
    strCpath3 = CurrentProject.Path & "hoge_dbRef.accdb"
   
    '-- 接続試行をファイル名も含めたフルパスで表記。先に書いたものからヒットした順にリンクを張る。
    aryTBpath = Array("C:\Documents and Settings\hoge\My Documents\access\hoge_be.accdb", _
                      "\\HogeServer\db\hoge_db.accdb", _
                      strCpath1, strCpath2, strCpath3)
   
    On Error Resume Next    'ネットワークエラーが出ても文句を言わない
    For Each objTB In objDB.TableDefs
        For Each strTBpath In aryTBpath
            If objTB.Connect <> "" Then          'リンクテーブルだけ処理
                objTB.Connect = ";DATABASE=" & CStr(strTBpath) & ";TABLE=" & objTB.Name
                objTB.RefreshLink
                strMsg = objTB.Name & "のリンク自動更新中です..."
                SysCmd acSysCmdSetStatus, strMsg
            End If
        Next
        strMsg = objTB.Name & "のリンク自動更新に成功!"
        SysCmd acSysCmdSetStatus, strMsg
    Next objTB
    objDB.Close: Set objDB = Nothing
    SysCmd acSysCmdClearStatus
   
    MsgBox "リンクテーブルの更新が終了しました。", vbOKOnly + vbInformation, "更新終了"
End Sub
 これで、ボタン一つで予め設定したデータベースにリンクを張り直せるはずです。設定するデータベースは、テーブルから読み直すように変更するなりご自由に。
……しかし、このブログ、内容が全然一貫してねぇ……

コメント

このブログの人気の投稿

Arch Linux - linux-firmware を分割したから

 NVIDIA firmware が入っていると、更新できないから気をつけろよ? エラー: 処理を完了できませんでした (衝突しているファイル) linux-firmware-nvidia: /usr/lib/firmware/nvidia/ad103 がファイルシステムに存在しています linux-firmware-nvidia: /usr/lib/firmware/nvidia/ad104 がファイルシステムに存在しています linux-firmware-nvidia: /usr/lib/firmware/nvidia/ad106 がファイルシステムに存在しています linux-firmware-nvidia: /usr/lib/firmware/nvidia/ad107 がファイルシステムに存在しています エラーが発生したため、パッケージは更新されませんでした。 公式アナウンス https://archlinux.org/news/linux-firmware-2025061312fe085f-5-upgrade-requires-manual-intervention/ 先に言って(ry ……まぁ、対処法も含めて書いてくれているから、親切かもしれんが……パッケージとしてどうにかならんかったのか。 pacman -Rdd linux-firmware pacman -Syu linux-firmware

無効にしたアプリ等

ドコモさん,消せない電話帳アプリとか入れないで下さい。要らないものは消せるようにして下さい。要らないから。常駐もしないで下さい,邪魔だから。 2014/02/15:追記 DcmWapPushHelper は,spモードメール等のドコモ謹製アプリでdocomo.ne.jpメールを使っている場合は,メール受信通知が遅い場合があるかもしれないので,使っている人は無効にしない方がいいかもしれません。 IMAP 経由で使ってりゃ関係なし。 無効にしたけど,本当は抹殺したい茸アプリ オートGPS しゃべって検索 スケジュール&メモ デコメ絵文字マネージャー ドコモバックアップ ドコモ位置情報 ドコモ位置情報SUB ドコモ音声入力 ドコモ文字編集 メディアプレイヤー 取扱説明書 電話帳サービス DcmWapPushHelper(spモードメール使ってるなら無効を非推奨 DOCOMO Initialization iコンシェル iコンシェルコンテンツ NOTTV SDカードバックアップ エリア連動Wi-Fi 使わないから無効にしているアプリ 赤外線 Gガイド番組表DL 電子書籍 Reader by Sony Eメール Facebook mora Music Extension Music Unlimited Socialife Xperia AppShare (Facebook) Xperia Calendar Sync (Facebook) Xperia FB Setup Xperia Friends' Music Xperia Music Likes Xperia Proxy (Facebook) Xperia Proxy (Twitter) Xperia Social Engine Photos (Facebook) Xperia Social Engine Photos (Music Unlimited) Xperia Social Engine Sharing (Facebook) Xperia Social Engine Sharing (Twitter) Xperia Twitter Setup TV番組プレーヤー Sony Select 無効...

ナンバープレートのボルト交換

これまで錆びたことなど無かったんだけど,今度の車は海とか釣りとか行ってたからなのかな。 ボルトの頭部分がサビだらけになってしまった。 さびさび コレはいかん,いかんですよ。 いくら丁寧に乗っていても,ナンバープレートのサビで台無しですよ。 ディーラーに,ボルト無い?って聞いたら,「うちだと工賃掛かるから,ホームセンターで買って自分で換えた方が良いよ。」 実際どれくらいなのか,コ○ナンで見てみる。 通常のナンバープレートの場合は次の寸のネジを買えば良いらしい。 6mm径で,長さは15mm,ピッチが1mm。 M6x15って奴ですね。 バラで買えるのが素晴らしい。1個15円。ワッシャーも買っとこ。一個4円。 これなら何度交換しても惜しくないね! さて,スパナでこいつらを外す。まー見事に真っ茶色だな。 ねじ穴があるんだから,ドライバーでやりたくなるだろうけれど,錆びたネジにドライバーはお勧めしません。面倒でもスパナかレンチで回しましょう。できればモンキレンチも避けて。 無事取れました。片方はねじ穴が塞がりかけてるくらい錆びてますな……。 ナンバープレートを外した後の車体ですが……サビが裏側に付いているのは別に驚くことでは無いのですが,隠された部分が発泡スチロールだったことにちょっとビックリ。 さぁ!新しいネジとワッシャーよ!(計38円) レジに並んだとき,正直辛かった。 さて取り付けるまえに,試しにナンバープレートのネジ穴に通してみよう……あれ? ……ワッシャーのサイズが小さすぎですがな…… 大きいワッシャーを買いに走る。1個20円でした。 取り付ける前に,錆落とし。取りづらかったが何とか除去。 うむ。見栄えが復活。