5

SELECTクエリを介してテーブルの説明(テーブル>テーブルのプロパティを右クリックすると表示されるものと同じ)にアクセスする方法を探していました。

MSysObjects を使用してみましたが、それを使用してテーブルの名前しか取得できません。

クエリを使用してこれを行うことは可能ですか、それとも VBA が必要ですか?

4

3 に答える 3

4

Remou が言うように、クエリから取得することはできません (ただし、それを返す関数をクエリに含めることはできます)。別の関数を次に示します。

Public Function GetTableDescr(stTableName As String) As String
On Error Resume Next
GetTableDescr = CurrentDb.TableDefs(stTableName).Properties("Description").Value
End Function

以下は、すべての非システム テーブルを日付と説明とともに返すクエリです (上記の関数を使用)。

SELECT MSysObjects.Name, msysobjects.datecreate, msysobjects.dateupdate, GetTableDescr([Name]) AS Description
FROM MSysObjects
WHERE (((MSysObjects.Name) Not Like "~*") AND((MSysObjects.Name) Not Like "MSys*") and ((MSysObjects.Type)=1));

最後に、クエリに対してほぼ同じ機能を実行できます。私が見つけたトリックは、継承されていない説明のみを返すことです。それ以外の場合、クエリに説明がない場合は、クエリされたオブジェクトの説明を取得します。

Public Function GetQueryDescr(stQryName As String) As String
On Error Resume Next
If CurrentDb.QueryDefs(stQryName).Properties("Description").Inherited = False Then
    GetQueryDescr = CurrentDb.QueryDefs(stQryName).Properties("Description").Value
End If
End Function

Error Resume Nextオブジェクトに説明があるまでプロパティは null であるため、Onが必要です。

于 2012-05-15T22:49:22.797 に答える
3

テーブル スキーマまたは TableDef プロパティから説明を取得できますが、標準のクエリは機能しないと思います。

Set rs = CurrentProject.Connection.OpenSchema(adSchemaTables, _
     Array(Empty, Empty, "Rules", Empty))
Debug.Print rs!Description
于 2012-05-15T20:42:02.487 に答える