我一直在寻找一种方法来访问表的描述(当你右键单击表表属性时出现的那个)通过SELECT查询. 我尝试使用MSysObjects,但我只能使用它来检索表的名称. 是否可以通过查询执行此操作或需要
我尝试使用MSysObjects,但我只能使用它来检索表的名称.
是否可以通过查询执行此操作或需要VBA?
正如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
On Error Resume Next是必需的,因为在对象具有描述之前,属性为null.