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

スポンサーリンク

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

Rem ----------------------------------------------------------------------------------
Rem     関数名   : ExistTable
Rem     処理内容 : テーブル存在チェック
Rem     引  数  : TableName
Rem     戻り値  : 結果
Rem ----------------------------------------------------------------------------------
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つずつ修正しないといけないから。。

スポンサーリンク
広告
広告

フォローする