Others

How to List Microsoft Access Objects and Navigation Groups with SQL

Jason MillerJason Miller Nov 3, 2026 869 views

Question details

The user needs to construct an SQL query to list all Microsoft Access objects alongside their Navigation Pane group information without excluding unassigned objects, and retrieve object descriptions.

How to List Microsoft Access Objects and Navigation Groups with SQL
Product
Microsoft Access
Device & OS
not provided
Scenario
Writing an SQL query using system tables (MSysObjects) to document or display all database objects, such as tables, queries, forms, reports, and macros, along with their assigned Navigation Groups.
Observed behavior
When Navigation Pane group information is added to the MSysObjects query, objects that are not assigned to a Navigation Group disappear from the query results.
Before you start

Before querying hidden system tables like MSysObjects or MSysNavPaneGroups, ensure that system objects are visible in your Navigation Options and always create a backup copy of your database to prevent accidental data corruption.

Solution 1Recommended

Use a LEFT JOIN to Include Unassigned Objects

Replace the INNER JOIN with a LEFT JOIN in your SQL query to ensure that objects without an assigned Navigation Group are still returned in the results.

When you join MSysObjects with MSysNavPaneGroups using a standard INNER JOIN, Access only returns records that have matching entries in both tables. Because some database objects may not be assigned to a custom Navigation Pane group, they are filtered out.

By changing the relationship to a LEFT OUTER JOIN (or simply LEFT JOIN), the query will return all records from the left table (MSysObjects) and only the matched records from the right table (MSysNavPaneGroups). Unassigned objects will show a NULL value for their group instead of being hidden.

1
Open Query Design

Open your Microsoft Access database, navigate to the 'Create' tab on the top ribbon, and click on 'Query Design'.

2
Switch to SQL View

Close the 'Show Table' dialog if it appears. Right-click the query tab and select 'SQL View' from the context menu.

3
Modify the JOIN Statement

Locate the FROM clause in your SQL statement. Change the syntax from 'INNER JOIN MSysNavPaneGroups' to 'LEFT JOIN MSysNavPaneGroups ON MSysObjects.Id = MSysNavPaneGroups.ObjectId' (adjusting field names as per your specific schema).

4
Run and Verify

Click the 'Run' button (the red exclamation mark) on the Design tab to execute the query. Verify that all tables, queries, and reports are now listed regardless of their Navigation Pane group assignment.

Use a LEFT JOIN to Include Unassigned Objects
SQL Syntax Tip: A LEFT JOIN guarantees that every record from your primary object table is preserved in your reporting, which is essential for accurate database documentation.
Free Microsoft Office alternative

Need a Lightweight Alternative for Daily Office Tasks? Try WPS Office

While Microsoft Access is built for complex relational databases, a vast majority of daily documentation, data analysis, and presentations can be managed much faster with WPS Office. WPS Office is a lightweight, all-in-one suite that perfectly handles Word, Excel, and PowerPoint files.

  1. 1. Download the Installer: Visit the official WPS Office website and click the free download button for your operating system.
  2. 2. Install WPS Office: Run the downloaded installer and follow the quick on-screen instructions to set up the software.
  3. 3. Manage Data Easily: Open WPS Spreadsheet to import your exported database records, and use built-in filters and pivot tables to analyze your data effortlessly.
Fully compatible with Microsoft Excel (.xlsx), Word (.docx), and PowerPoint (.pptx) formats.Powerful spreadsheet tool for sorting, filtering, and analyzing data without needing complex SQL queries.Lightweight application that installs quickly and consumes minimal system resources.Free to use with a familiar, easy-to-navigate tabbed interface for seamless migration.
microsoft office alternative - wps office

Frequently Asked Questions

Why are MSysObjects and MSysNavPaneGroups hidden in my database?

Microsoft Access hides system tables by default to protect them from accidental edits or deletions, which could corrupt the database. You can reveal them by right-clicking the top of the Navigation Pane, selecting 'Navigation Options,' and checking 'Show System Objects'.

Can I edit the data directly inside MSysObjects?

No, you should never attempt to manually edit, add, or delete records in system tables like MSysObjects. Modifying these tables directly bypasses Microsoft Access's internal logic and will likely corrupt your database irreparably.

What is the difference between an INNER JOIN and a LEFT JOIN in Access SQL?

An INNER JOIN restricts the query results to only those rows that have matching values in both tables. A LEFT JOIN ensures that all rows from the primary (left) table are displayed, filling in NULL values for the secondary (right) table if no matching relationship exists.