|
興味があったので...
隠しオブジェクト「MSysObjects」を使用したオブジェクトの有無判定を考えてみました
M_Objectsというテーブルを用意してください。
Typeをオブジェクト名に変更するために使用します。
詳細は以下の通り
Type(数値型)/ObjectsName(テキスト型)
1/テーブル
4/他リンクテーブル
6/リンクテーブル
5/クエリ
-32768/フォーム
-32764/レポート
-32761/モジュール
ユーザー関数を作成
Function GetObjects(strObj As String)
Dim ct As ADODB.Connection
Dim rs As ADODB.Recordset
Dim myObj As String, strSQL As String
myObj = strObj
strSQL = "SELECT M_Objects.ObjectsName, MSysObjects.Name" & _
" FROM M_Objects INNER JOIN MSysObjects ON M_Objects.typa = MSysObjects.Type" & _
" WHERE [Name]='" & myObj & "'"
Set ct = Application.CurrentProject.Connection
Set rs = New ADODB.Recordset
rs.Open strSQL, ct
If rs.EOF Then
MsgBox "同名のオブジェクトはありません"
Else
MsgBox rs.GetString
End If
rs.Close
ct.Close
End Function
イミディエイトウィンドウで
?GetObjects("存在するオブジェクト名")
オブジェクトタイプ/オブジェクト名がメッセージされると思います。
同様に"存在しないオブジェクト名"で「ないよ」とメッセージしてくれる
と思います。
|
|