使用查询计算访问数据库中的表数及其列数



我可以使用查询获取访问数据库中的表及其列的计数吗?

有一个名为"MSysObjects"的系统表,其中包含当前数据库中所有对象的详细信息。您可以将其与一个简短的VBA函数一起使用,以获取所需的信息。

首先,将VBA代码粘贴到一个模块中:

Function fCountColumn(strTable) As String
On Error GoTo E_Handle
fCountColumn = DBEngine(0)(0).TableDefs(strTable).Fields.Count
fExit:
On Error Resume Next
Exit Function
E_Handle:
MsgBox Err.Description & vbCrLf & vbCrLf & "fCountColumn", vbOKOnly + vbCritical, "Error: " & Err.Number
Resume fExit
End Function

接下来,创建一个查询,并将SQL设置为:

SELECT [Name], fCountColumn([Name]) AS ColumnCount
FROM MSysObjects
WHERE [Type]=1 AND [Flags]=0
ORDER BY [Name] ASC;

这只返回本机Access表-对于需要添加到正在查询的Flags和Type中的其他表。

另一种非SQL方法是在VBA中循环TableDefs集合,然后再次使用每个TableDef的.Fields.Count属性。

问候,

最新更新