This is a query I use to list tables based on two system tables MSysObjects, MSysNameMap
Code:
SELECT MsysObjects.Name AS ObjectName, tblSysObjectTypes.Object AS ObjectType, tblSysObjectTypes.SubType AS ObjectSubType, FormatDateTime([DateCreate],2) AS DateCreated, FormatDateTime([DateUpdate],2) AS DateUpdated, DCount('*',[ObjectName]) AS NumberOfRecords, MSysNameMap.NameMap, MSysNameMap.GUID
FROM MSysNameMap RIGHT JOIN (MsysObjects INNER JOIN tblSysObjectTypes ON (MsysObjects.Flags = tblSysObjectTypes.Flags) AND (MsysObjects.Type = tblSysObjectTypes.Type)) ON MSysNameMap.Name = MsysObjects.Name
WHERE (((MsysObjects.Name) Not Like '~*') AND ((MsysObjects.Flags)<>2 And (MsysObjects.Flags)<>-2147483648) AND ((tblSysObjectTypes.Type)=1 Or (tblSysObjectTypes.Type)=4 Or (tblSysObjectTypes.Type)=6))
ORDER BY MsysObjects.Name, tblSysObjectTypes.Object;
The table tblSysObjectTypes is one of mine & you might find it useful:
ID |
Object |
Type |
SubType |
Flags |
Hidden |
System |
1 |
Form |
-32768 |
|
0 |
0 |
0 |
2 |
Macro |
-32766 |
|
0 |
0 |
0 |
3 |
Report |
-32764 |
|
0 |
0 |
0 |
4 |
Module |
-32761 |
|
0 |
0 |
0 |
5 |
Users |
-32758 |
|
|
0 |
-1 |
6 |
Document |
-32757 |
|
|
0 |
-1 |
7 |
Data Access Page |
-32756 |
|
|
0 |
0 |
8 |
Table |
1 |
Local |
8 |
-1 |
0 |
9 |
Table |
1 |
System |
|
0 |
-1 |
10 |
Table |
1 |
Local |
0 |
0 |
0 |
11 |
Database |
2 |
|
|
0 |
-1 |
12 |
Container |
3 |
|
|
0 |
-1 |
13 |
Table |
4 |
Linked SQL |
537919496 |
-1 |
0 |
14 |
Table |
4 |
Linked SQL |
537919488 |
0 |
0 |
15 |
Query |
5 |
Append |
72 |
-1 |
0 |
16 |
Query |
5 |
Append |
64 |
0 |
0 |
17 |
Query |
5 |
Crosstab |
24 |
-1 |
0 |
18 |
Query |
5 |
Crosstab |
16 |
0 |
0 |
19 |
Query |
5 |
Data Definition |
96 |
0 |
0 |
20 |
Query |
5 |
Data Definition |
104 |
-1 |
0 |
21 |
Query |
5 |
Delete |
40 |
-1 |
0 |
22 |
Query |
5 |
Delete |
32 |
0 |
0 |
23 |
Query |
5 |
Make Table |
80 |
0 |
0 |
24 |
Query |
5 |
Make Table |
88 |
-1 |
0 |
25 |
Query |
5 |
Pass Through |
112 |
0 |
0 |
26 |
Query |
5 |
Pass Through |
120 |
-1 |
0 |
27 |
Query |
5 |
Select |
8 |
-1 |
0 |
28 |
Query |
5 |
Select |
0 |
0 |
0 |
29 |
Query |
5 |
Temp |
3 |
-1 |
0 |
30 |
Query |
5 |
Union |
128 |
0 |
0 |
31 |
Query |
5 |
Union |
136 |
-1 |
0 |
32 |
Query |
5 |
Update |
56 |
-1 |
0 |
33 |
Query |
5 |
Update |
48 |
0 |
0 |
34 |
Table |
6 |
Linked Access |
538968064 |
0 |
0 |
35 |
Table |
6 |
Linked Text / CSV |
10485760 |
0 |
0 |
36 |
Table |
6 |
Linked Excel |
11534336 |
0 |
0 |
37 |
Table |
6 |
Linked Excel |
11534344 |
-1 |
0 |
38 |
Table |
6 |
Linked Text / CSV |
10485768 |
-1 |
0 |
39 |
Table |
6 |
Linked Access |
538968072 |
-1 |
0 |
40 |
Table |
6 |
Linked Access |
2097152 |
0 |
0 |
41 |
SubDatasheet |
8 |
|
|
0 |
-1 |
I use this to identify the different types of query etc
In fact I've got a database objects example database at this link: https://www.access-programmers.co.uk...d.php?t=295597