2015/04/04

Access でリンクテーブルをまとめて削除する方法


Access 2010 で、リンクテーブルをまとめて削除する方法です。

Access のリンクテーブルは、テーブルの属性でリンクテーブルかどうかが判別できるので、それで判別した上で削除をします。但し、注意が必要なのは、通常のリンクテーブルと、ODBC のリンクテーブルは削除方法が異なることです。

通常のリンクテーブルは TableDefAttributeEnum.dbAttachedTable で判別して、ODBC のリンクテーブルは TableDefAttributeEnum.dbAttachedODBC で判別します。

サンプルコードでは両方を一括で削除していますが、どちらか一方を指定することも可能です。

また、リンクテーブルの削除を一度コレクションに取り込んでいるのは、直接削除してしまうと TableDefs のカウントがずれてしまうようなのでその対策です。

■サンプルコード

Private Sub commandDelete_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim db As DAO.Database
    Dim tbDef As DAO.TableDef
    Dim list As Collection
    Dim tbName As Variant
    
    Set db = CurrentDb
    Set list = New Collection
    
    'リンクテーブル一覧を作成
    For Each tbDef In db.TableDefs
    
        '通常のリンクテーブルとODBCリンクテーブルは判断条件が違う
        If tbDef.Attributes And (dbAttachedTable Or dbAttachedODBC) Then
            list.Add tbDef.Name
        End If
        
    Next
    
    'リンクテーブル削除
    For Each tbName In list
        db.TableDefs.Delete tbName
    Next
    
    
    db.Close
    
    Set db = Nothing
    Set list = Nothing
    
End Sub

 

■参考サイト


スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。


    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから