Last updated: August 2026
MO-500 — Microsoft Office Specialist: Access Expert (Office 2019)
Test your knowledge with official exam-style questions
Questions and options are shuffled each attempt
▶Microsoft Office Specialist: Access Expert (Office 2019) — Practice Set 1: All Questions & Explanations
Full question text, answer options, and explanations for this practice set — a spoiler-free alternative is the interactive quiz above for scored, shuffled practice.
1. You are working in Access 2019 with a database that has grown to include dozens of tables, queries, forms, and reports. You want to temporarily hide several older, unused query objects from the Navigation Pane without deleting them, so the pane is easier to scan. What should you do?
- A. Right-click each object in the Navigation Pane and choose Hide in this Group(correct)
- B. Delete the objects, then recreate them later if needed
- C. Rename the objects with a leading underscore
- D. Export the objects to a separate database file
Explanation: Right-clicking an object in the Navigation Pane and choosing 'Hide in this Group' hides it from view while keeping it in the database; hidden objects can be shown again via Navigation Pane options (Show Hidden Objects). Deleting (B) permanently removes the object. Renaming with an underscore (C) has no hiding effect in Access. Exporting to another file (D) removes it from the current database entirely, which is not what was asked.
2. You are building a new Orders database in Access 2019. A Customers table already exists in an external Access database file maintained by another department, and you need your Orders table to always reflect live edits made in that external file without copying the data locally. What should you do?
- A. Use External Data > New Data Source > From Database > Access, then choose 'Link to the data source by creating a linked table'(correct)
- B. Use External Data > New Data Source > From Database > Access, then choose 'Import the source data into a new table'
- C. Copy and paste the Customers table records manually into your database
- D. Export your Orders table to the other department's database
Explanation: Creating a linked table keeps the data physically stored in the source database while displaying and allowing interaction with it from your database — edits in the source are reflected live. Importing (B) copies a snapshot of the data at that moment, so it will not reflect subsequent edits. Manual copy/paste (C) also produces a static, disconnected copy. Exporting your own table (D) does not bring in the Customers data at all.
3. You are reviewing the relationships in a Sales database. An Orders table has a CustomerID foreign key referencing the Customers table's primary key, and you need every order to always reference a valid, existing customer — deleting a customer that still has orders should be blocked rather than silently orphaning the orders. Which two actions correctly achieve this? Choose 2.
- A. Open the relationship between Customers and Orders in the Relationships window and enable 'Enforce Referential Integrity'(correct)
- B. Do not check 'Cascade Delete Related Records' when enforcing referential integrity(correct)
- C. Set the CustomerID field in Orders as a primary key
- D. Delete the relationship line between the two tables entirely
- E. Change the CustomerID field's data type to Long Text in both tables
Explanation: Enforcing referential integrity on the relationship prevents entering a CustomerID in Orders that does not exist in Customers, and — critically — prevents deleting a Customers record that still has related Orders records unless Cascade Delete is enabled. Leaving Cascade Delete unchecked means Access blocks the deletion instead of silently removing related orders. Setting CustomerID as a primary key in Orders (C) is incorrect since it is a foreign key there, not the primary key. Deleting the relationship (D) removes integrity checking entirely. Changing the data type (E) does not affect referential integrity enforcement.
4. A department head asks you to hand out a printed copy of the current month's Invoices report, but formatted so only the invoice number, date, and total columns print on a single page width, without printing internal notes fields visible in the underlying table. Where should you configure this before printing?
- A. Print Preview > Page Setup, and adjust the report's Print Options and Page tab settings for the report object itself(correct)
- B. Open the Invoices table and use File > Print directly on the table
- C. Export the entire table to Excel and delete unwanted columns there
- D. Use the Format Painter on the report
Explanation: Reports are the correct object for controlling exactly what is printed and how, since a report's design (not the underlying table) determines which fields display and print, and Print Preview > Page Setup lets you configure margins, columns, and page options for that report specifically. Printing directly from the table (B) would show all table fields including notes, not the curated report layout. Exporting to Excel (C) is an unnecessary detour for something the report already controls. Format Painter (D) copies formatting between controls, not print layout.
5. You need to bring in a one-time snapshot of last year's product data from an Excel workbook into a new Access table, and you will not need the two systems to stay connected afterward. What is the most direct approach?
- A. External Data > New Data Source > From File > Excel, then choose 'Import the source data into a new table in the current database'(correct)
- B. External Data > New Data Source > From File > Excel, then choose 'Link to the data source by creating a linked table'
- C. Manually retype all the Excel data into a new Access table
- D. Open the Excel file directly inside Access as if it were a table
Explanation: Importing copies the Excel data into a new native Access table, exactly matching the 'one-time snapshot, no ongoing connection' requirement. Linking (B) is for when you want the table to always reflect the live Excel file, which is the opposite of what's needed here. Manual retyping (C) is inefficient and error-prone compared to the built-in Import Spreadsheet Wizard. Access cannot open an Excel file directly as a native table (D).
6. Your organization's inventory system stores its master Products table in a separate Access database that IT updates nightly. You need your local database's queries and reports to always read the current Products data from that external file without duplicating or periodically re-importing it. What should you create?
- A. A linked table pointing to the Products table in the external database(correct)
- B. A daily scheduled import of the Products table
- C. A local copy of the Products table refreshed manually each morning
- D. A query that references the external file's path as text
Explanation: A linked table connects to the external table so Access always reads current, live data from the source without copying it locally, satisfying the 'always current, no duplication' requirement. Scheduled or manual daily imports (B, C) create stale, duplicated data between refreshes. Access cannot query a table by referencing a file path as plain text within a query (D) — it must be linked as a proper table object first.
7. You are consolidating records from three regional Access databases (each with an identically structured Customers table) into one central database. You want to bring the actual table structures and data from those other Access files into your current database as new tables. What should you use?
- A. External Data > New Data Source > From Database > Access, and import the Customers table objects from each source database(correct)
- B. Create a query that unions data typed manually from each region
- C. Open each regional database and copy-paste cell ranges into Excel first
- D. Use Compact and Repair Database on each source file
Explanation: The Import Access Database wizard, reached via External Data > New Data Source > From Database > Access, lets you select and import specific tables (and other objects) directly from another Access database file into the current one. Manually retyping data (B) or routing through Excel (C) is unnecessary and error-prone when a native Access-to-Access import path exists. Compact and Repair (D) is a maintenance operation and does not import data.
8. A colleague who occasionally works in your Employees table finds the SalaryGrade and InternalNotes columns confusing to view but should not have them deleted since other users and processes rely on them. You want those two fields to simply not display when the table is opened in Datasheet view, without affecting any queries, forms, or reports built on the table. What should you do?
- A. Right-click each column header in Datasheet view and choose Hide Fields(correct)
- B. Delete the SalaryGrade and InternalNotes fields from the table design
- C. Change the fields' data type to Attachment
- D. Set the fields' Required property to No
Explanation: Hide Fields in Datasheet view visually hides selected columns from that table's datasheet display while the underlying data, and any queries/forms/reports that reference those fields, remain completely unaffected; the columns can be restored with Unhide Fields. Deleting the fields (B) would break dependent objects and lose data. Changing the data type (C) or the Required property (D) does not hide a column and would alter how the field behaves elsewhere.
9. Your manager wants a quick running total of order amounts visible at the bottom of the Orders table when it is opened in Datasheet view, without building a separate query or report. What should you add?
- A. A Total Row, enabled via Home > Records > Totals, with Sum selected for the OrderAmount column(correct)
- B. A calculated field added to every record showing a running total
- C. A new report with a grouping header on OrderAmount
- D. A macro that recalculates a text box on form load
Explanation: The Total Row feature (Home > Records > Totals) adds a row at the bottom of Datasheet view where you can choose an aggregate function like Sum for a numeric column, giving an immediate, no-design-required total. Adding a per-record calculated field (B) does not produce a single summary total and clutters the data. Building a report (C) or a macro-driven form control (D) is unnecessary extra design work for a simple datasheet total.
10. Six months from now, a new database administrator will inherit your Projects table and needs to understand, at a glance from Access itself, what the table is used for and any special handling notes — without opening separate documentation. What should you do?
- A. Add a description to the table using Database Tools/Design view's Description property for the table object(correct)
- B. Rename the table to include a long explanatory name
- C. Add a Notes field to every record explaining the table's purpose
- D. Create a separate Word document and email it to the future administrator
Explanation: Access lets you set a Description property directly on a table object (visible in the Navigation Pane's Details view and in table properties), which is the built-in, in-application way to document a table's purpose for future users. Renaming with a long name (B) is impractical and doesn't explain handling notes. Adding a Notes field to every record (C) duplicates the same text unnecessarily across rows and isn't metadata about the table itself. An external document (D) is not accessible from within Access.
11. You are redesigning the Customers table. You need the CustomerID field to automatically generate a new unique sequential number for each new record, and you need a PhoneNumber field to always guide data entry into the pattern (999) 000-0000 without users needing to type parentheses or the dash themselves. Which two actions correctly achieve this? Choose 2.
- A. Set the CustomerID field's data type to AutoNumber(correct)
- B. Apply the built-in 'Phone Number' Input Mask to the PhoneNumber field(correct)
- C. Set the CustomerID field's Default Value to =Now()
- D. Set the PhoneNumber field's data type to Number
- E. Set the PhoneNumber field's Validation Rule to 'AutoIncrement'
Explanation: Setting a field's data type to AutoNumber makes Access automatically assign the next sequential unique value for each new record, exactly matching the auto-increment requirement. Applying the built-in Phone Number input mask formats entry into the (999) 000-0000 pattern and inserts the literal parentheses/dash characters automatically as the user types digits. Default Value with =Now() (C) inserts the current date/time, not a sequential number. Setting PhoneNumber to Number type (D) would reject formatting characters and is inappropriate for phone numbers. 'AutoIncrement' (E) is not a valid Validation Rule value.
12. You are refining the Employees table. The HireDate field must never accept a date later than today's date (no future hire dates), and if someone tries to enter one, Access should show the message 'Hire date cannot be in the future.' What should you configure on the HireDate field?
- A. Validation Rule: <=Date(), and Validation Text: 'Hire date cannot be in the future.'(correct)
- B. Input Mask: 00/00/0000, and Caption: 'Hire date cannot be in the future.'
- C. Default Value: Date(), and Required: Yes
- D. Field Size: Long Date, and Format: Short Date
Explanation: The Validation Rule property lets you define a condition a field's value must satisfy (here, <=Date() restricts entries to today or earlier), and the paired Validation Text property defines the exact message Access displays when that rule is violated. An Input Mask (B) only controls the entry pattern/format, not an upper-bound date restriction, and Caption just relabels the field, it does not show as an error message. Default Value (C) only pre-fills a value and does not block a manually entered future date. Field Size and Format (D) control storage/display, not validation.
13. You need a query that lists every order from the Orders table where the OrderAmount exceeds $500, showing only the OrderID, CustomerID, and OrderAmount fields. What is the most direct way to build this?
- A. Create a simple select query in Query Design view, add the three fields, and set the criterion >500 under OrderAmount(correct)
- B. Create a crosstab query summarizing orders by customer
- C. Create an action query that updates OrderAmount values
- D. Create a parameter query that prompts for a customer name
Explanation: A simple select query built in Query Design view, with the needed fields added and a criterion like >500 typed under OrderAmount, is the direct way to filter and display specific fields meeting a condition. A crosstab query (B) is for summarizing/pivoting data by two dimensions, not a simple filtered list. An action query (C) modifies data rather than displaying it. A parameter query (D) is for prompting user input, which isn't needed for a fixed threshold like 500.
14. Your manager wants a summary grid showing total SalesAmount with SalesRep names down the left side as rows and Quarter (Q1-Q4) across the top as column headings, with each cell showing the summed amount for that rep/quarter combination. Which query type should you create?
- A. A crosstab query with SalesRep as the row heading, Quarter as the column heading, and Sum of SalesAmount as the value(correct)
- B. A simple select query sorted by SalesRep
- C. A delete query filtered by Quarter
- D. A make-table query grouped by SalesRep
Explanation: A crosstab query is specifically designed to summarize data in a spreadsheet-like grid with one field as row headings, another as column headings, and an aggregate (like Sum) as the values at each intersection — exactly matching a rep-by-quarter summary grid. A simple select query (B) cannot pivot data into that grid shape. A delete query (C) removes records rather than summarizing them. A make-table query (D) creates a new table from query results but does not perform the row/column pivot needed here.
15. Customer service staff need to look up a customer's outstanding balance on demand by typing in any CustomerID at the time they run the query, rather than the query always being hard-coded to one customer. What should you build?
- A. A parameter query with the criterion [Enter CustomerID:] under the CustomerID field(correct)
- B. A crosstab query with CustomerID as the row heading
- C. A query with a fixed criterion typed as an actual CustomerID value
- D. An append query that copies matching records to a new table
Explanation: A parameter query uses a criterion written in square brackets, such as [Enter CustomerID:], which prompts the user for a value each time the query runs, letting staff look up any customer on demand. A crosstab query (B) pivots data into a grid and does not prompt for a single lookup value in this way. A fixed criterion (C) hard-codes one customer and defeats the on-demand requirement. An append query (D) copies matching rows into another table rather than displaying results interactively.
16. You built a query joining the Orders and OrderDetails tables to list every order line item, but the OrderStatus field is not needed in the results, and the results should be sorted by OrderDate from newest to oldest, filtered to only orders placed in the current year. Which two actions correctly finish this query in Design view? Choose 2.
- A. Uncheck the Show box under the OrderStatus column so it is used in the join but not displayed(correct)
- B. Set the OrderDate column's Sort row to Descending, and add a criterion under OrderDate restricting it to the current year(correct)
- C. Delete the OrderStatus field's column entirely from the query grid
- D. Set the OrderDate column's Sort row to Ascending
- E. Add a Total row set to Count under OrderDate
Explanation: Unchecking the Show checkbox hides a field from the result set while keeping it available in the query grid (useful if it's still needed for a criterion elsewhere) — this satisfies 'not needed in the results' without necessarily removing the column. Setting Sort to Descending on OrderDate and adding a Year()-based criterion satisfies both the newest-to-oldest ordering and current-year filter. Deleting the column entirely (C) also hides it, but the question asks for the field to remain available for filtering by status, so unchecking Show is more correct than deleting. Ascending sort (D) would order oldest to newest, which is the opposite of what was asked. Adding a Count total (E) turns this into a summary query and would remove the individual line-item detail rows the question requires.
17. You need a query pulling matching fields from both the Orders table and the Customers table (joined on CustomerID) so a single result set shows each order alongside its customer's name and city. What kind of query should you create?
- A. A basic multi-table query joining Orders and Customers on CustomerID(correct)
- B. Two separate single-table queries, one per table
- C. A crosstab query summarizing order counts by city
- D. An update query modifying customer names
Explanation: A multi-table query in Query Design view lets you add both tables, have Access use the existing relationship (or create a join) on the common CustomerID field, and pull fields from both tables into one combined result set. Two separate single-table queries (B) would not combine the data into one row set as requested. A crosstab query (C) summarizes rather than lists individual order/customer details. An update query (D) modifies data rather than retrieving a combined view.
18. While viewing the CustomerForm in Layout view, you notice the Email text box control is positioned oddly and needs to move slightly to align with the Phone control above it. What is the correct approach in Layout view?
- A. Click to select the Email control, then drag it or use arrow keys to reposition it while seeing live data(correct)
- B. Switch to Datasheet view and drag the column border
- C. Open the form's Report view to reposition controls
- D. Delete the control and recreate the entire form from scratch
Explanation: Layout view is specifically designed to let you select and reposition (or resize) form controls such as text boxes while seeing actual live data, making fine alignment adjustments easy and visual. Datasheet view (B) does not apply to individual form control positioning. Report view (C) is for reports, not forms. Deleting and rebuilding the entire form (D) is a drastic, unnecessary overreaction to a minor alignment issue.
19. On the OrderForm, data entry staff currently must press Tab several times through unrelated fields (like an internal audit ID they never touch) before reaching the CustomerID and OrderDate fields they fill in first. You want pressing Tab to move focus directly through CustomerID, then OrderDate, then Notes, in that order, skipping the audit fields entirely during data entry navigation. What should you configure?
- A. Modify the form's Tab Order (Design tab > Tab Order, or Properties > Other > Tab Index) to reflect the desired sequence, and set the audit fields' Tab Stop property to No(correct)
- B. Physically move the audit fields to the very bottom of the form layout
- C. Delete the audit fields from the form
- D. Rename the audit fields so they sort alphabetically last
Explanation: The Tab Order setting controls the sequence in which focus moves between controls when pressing Tab, independent of their visual position, and each control's Tab Stop property can be set to No to remove it from the Tab key cycle entirely while still keeping it visible on the form. Moving fields physically (B) changes appearance but tab order must still be set separately and doesn't skip fields. Deleting the fields (C) removes needed functionality, not just navigation order. Renaming (D) has no effect on tab order.
20. You want every printed or previewed copy of the CustomerForm to display today's current date automatically in the form footer, updating each time it's opened, along with your company logo in the header. What should you do in Layout view?
- A. Use Design tab > Header/Footer > Date and Time to insert a date control in the footer, and Insert Image in the header for the logo(correct)
- B. Manually type today's date as static text into a text box each time
- C. Add the date as a new field in the underlying table
- D. Insert the logo as a background theme color
Explanation: The Date and Time command inserts an expression-based control (typically =Date()) that automatically shows the current date whenever the form is opened, and Insert Image lets you place a logo image control in the header — both accessed from the Design tab while working in Layout or Design view. Manually typing a static date (B) would not update automatically. Adding a date field to the table (C) is unrelated to a form's cosmetic header/footer display. A background theme color (D) cannot represent a logo image.
21. On the OrdersForm, you added a new unbound text box control that will display a calculated total, but it currently shows a generic caption like 'Text24' above it. What should you do to give it a meaningful label such as 'Order Total'?
- A. Select the associated label control and edit its Caption property (or double-click and retype the text)(correct)
- B. Rename the text box control's Name property only
- C. Change the form's Caption property
- D. Delete the label control entirely
Explanation: Each bound control typically has an associated label whose Caption property holds the visible text shown to users; selecting that label and editing its Caption (either via the Property Sheet or by double-clicking and retyping directly on the label in Layout/Design view) changes the displayed text. Renaming the text box's Name property (B) only changes its internal object name, not the visible label text. The form's own Caption (C) affects the form's title bar/tab text, not an individual control's label. Deleting the label (D) removes the label entirely rather than updating its text.
22. You are refining the SalesByRegion report. You need records grouped first by Region, then within each region sorted by SalesRep name alphabetically, with a subtotal of SalesAmount shown at the end of each region group. What should you configure in Layout view?
- A. Use Design tab > Grouping & Totals > Group & Sort to add a Region group, add a sort on SalesRep within it, and add a Sum total on SalesAmount for the Region group footer(correct)
- B. Sort the underlying table by Region before opening the report
- C. Use conditional formatting to color rows by region
- D. Add a text box with a manually typed subtotal value
Explanation: The Group & Sort pane (Design tab > Grouping & Totals) lets you add grouping levels (Region), nested sort levels within a group (SalesRep), and configure a Total (Sum) that displays automatically in the group footer — exactly matching a grouped, sorted, subtotaled report. Sorting the underlying table (B) does not create report-level grouping or automatic subtotals. Conditional formatting (C) only changes visual appearance, not grouping/totals. A manually typed subtotal (D) will not recalculate as data changes and is not a real total.
23. The ProductCatalog report currently prints in Portrait orientation, but the number of columns needed (Product Name, SKU, Price, Description, Supplier) makes the content feel cramped on a narrow page. You want the report to print in Landscape instead. Where should you make this change?
- A. Print Preview > Page Setup > Page tab, and select Landscape orientation(correct)
- B. Resize each control individually to make them narrower
- C. Reduce the font size of all controls
- D. Convert the report into a form
Explanation: Page orientation (Portrait vs. Landscape) is controlled in Page Setup, accessible from Print Preview's Page Setup command on the Page tab, and changing it to Landscape gives more horizontal space for wide, multi-column reports. Manually narrowing controls (B) or shrinking fonts (C) are workarounds that don't address the fundamental page width and can hurt readability. Converting to a form (D) changes the object type entirely and forms are not the appropriate object for printed multi-record catalogs.
24. You are finalizing the EmployeeDirectory report, which needs to print as a two-column layout to save paper (since each record is short), and each printed page must show the current page number and total page count (e.g., 'Page 1 of 4') in the footer. Which two actions correctly configure this? Choose 2.
- A. Use Page Setup > Columns tab to set the number of columns to 2 and configure column spacing/layout(correct)
- B. Use Design tab > Header/Footer > Page Numbers, choosing the 'Page N of M' format, placed in the page footer(correct)
- C. Manually insert a text box in each record's detail section with static text 'Page 1 of 4'
- D. Resize the report's overall width to exactly half the page width
- E. Enable Cascade Delete on the report's record source
Explanation: Page Setup's Columns tab is specifically where you configure a report to print in multiple newspaper-style columns per page (setting Number of Columns to 2), and the Page Numbers command inserts an automatically updating expression control in the format 'Page N of M' that recalculates as pages render. A static text box (C) would not update correctly across different runs or record counts. Manually resizing report width (D) does not by itself create a true multi-column print layout — the Columns tab setting does. Cascade Delete (E) is a table relationship option unrelated to report pagination.
25. On the ProductCatalog report, you want each product's photo to appear next to its details, pulled dynamically per record from an Attachment field in the underlying Products table, rather than one single static logo image repeated on every record. What should you do in Layout view?
- A. Add a bound Image/Attachment control tied to the Photo field from the field list, so each record displays its own picture(correct)
- B. Use Insert Image to place one picture manually, then copy it onto every record
- C. Set the report's background image property to the product photo
- D. Add a hyperlink control pointing to a shared folder of photos
Explanation: Dragging the Attachment/Photo field from the field list onto the report (or using Add Existing Fields) creates a bound image control tied to that field, so each record's report instance displays its own corresponding picture from the table. Insert Image (B) places a single static picture that is the same for every record, which does not vary per product. A report background image property (C) is a single unbound cosmetic image, not per-record bound data. A hyperlink (D) would only link to a location rather than display the image inline.