【Access】TableDefsでテーブル存在チェック

スポンサーリンク

Accessで私が日常的に使用しているテーブル存在チェック関数(ExistTable)

' ----------------------------------------------------------------------------------
'     関数名   : ExistTable
'     処理内容 : テーブル存在チェック
'     引  数  : TableName
'     戻り値  : 結果
' ----------------------------------------------------------------------------------
Public Function ExistTable(tableName As String) As Boolean
On Error Resume Next
    ExistTable = CurrentDb.TableDefs(tableName).Name = tableName
End Function

↑これをモジュールに入れておいて、必要に応じてCALL
呼び方例

       ' テーブル存在チェック
            If ExistTable(tblNm) Then
        ' テーブルあり
            Else 
               ' テーブルなし
            End If

関数にはPublic(パブリック) とPrivate(プライベート)があります。
他からCALLされるのはPublic、自分のフォームやモジュール単体のみで使用するならPrivate
フォームの場合は、殆どPrivateですが、一覧系の表示は入力画面から戻る際に(閉じたイベント等で)
再表示とかさせる事が多いので、PrivateではなくPublicにして作成することが多いです。

私はVBAでしか作成した事がないけれど、マクロのみで作成されているシステムもあるんだと
先日感心していた所です。コントロール名もデフォルトのままマクロを組んでるから
下手に修正できないという・・埋め込みマクロだと1つ1つのコントロールを
見て行かないとわからないから、下手にコントロール名も変更できないという・・
マクロのみでもそれっぽく立派なシステムが作れてしまうのでAccessって凄いと思うけど
複合検索をやりたいとか、細かい事に対応するのはやっぱりVBAしかないと思っています。
でも、後からVBAで直すのが大変で苦戦中。
それでも、へ~こんな使い方あるんだと感心する使い方をしていて驚いています。
私が知っている知識も偏っていたのかな・・と、Accessは広いな~みたいな。

いやいや、でもコントロール名は例えば、マクロやイベントを記述する場合
そのままだと不便だから、使うコントロール名くらい「txt日付」など名前を
付けた方が良いと思います。「テキスト234」のままマクロで使うのはやめましょう。(涙)
埋め込みマクロも出来ればやめてほしい。VBAで書けば一括検索で一括置換もできるから
何かあったら修正も楽ですがマクロは、ちまちま1つずつ修正しないといけないから。。

コメント

  1. 口袋怪獣 より:

    初めまして。もうすぐ65歳になる者です(現役ではありませんが)。
    Accessのテーブル存在確認のルーチンを探していました。
    以前、テーブルコレクション内をループで回して名前に一致を見つけていたのですが、簡単なコードで実装できることに目からうろこでした。

    私のプログラミング歴は、8ビットのアセンブラに遡ります。その後、BASICを経て、C系言語(C,C++,VC++,VC#)に進み、50歳を過ぎた頃にExcel VBAを始め、今ではAccess VBA、Word VBAとの連携もできるようになりました。

    「マクロでもコントロールに名前を付けましょう」というくだりから、現役時代のあることを思い出しました。ある人がExcelの関数(VBAではない)を駆使して業務用のツールを作成し、課内で発表しました。締めに「Excelの限界です」と言っていました。私は「Excelの限界ではなく、Excelに対するあなたの知識の限界だろう」と思って聞いていました。

    つまらない話になってすみません。
    今後もワザやヒントをよろしくお願いします。

    口袋怪獣

    • admin より:

      >口袋怪獣様
      コメントありがとうございます!
      2年前の記事ではありますが、コメント頂き嬉しいです。
      VBAは好みの関数を集めておくと、何かあった時に応用が効くので良いですよね。
      VBAは好きですが、実際、会社ではそんなにVBA中心に仕事していたわけではなく
      最後は、要件定義や設計がメインだったように思います。
      在宅で仕事するようになって、再びPGに戻ったような感じになり
      やはりコード書いている時が一番楽しいなと感じます^^

      >「Excelの限界ではなく、Excelに対するあなたの知識の限界だろう」
      面白いですね。VBAは結構駆使すると色々できるし凄いですよね。
      あーこんな事もできるんだ、と思うと奥が深いと思います。
      私はSQLが好きなので、EXCELよりAccessの方が好きです。
      データ管理がしやすいからです。後はメンテナンス性など。
      アプリとDBを分離して納品しておけば、後からの修正もだいたいアプリの方だけ修正して
      納品すれば、データのマージをしなくて済むという利便性もあります。

      VBAの情報はかなり大量に流れているので勉強もしやすいですね。
      今後も、何か訳に立ちそうな事があったら記事にしたいなと思います。

タイトルとURLをコピーしました