Skip to main content

From Clunky to Clever: Building a Seamless Feedback Form in MS Access

 

Feedback shouldn’t be a puzzle

When I built a feedback form in MS Access, my goal was to make it simple, clear, and reliable. No cryptic layouts, no confusing steps—just a smooth experience for users and solid data for admins.

Whether you're collecting internal requests, tracking responses, or just fed up with clunky forms that leave people guessing, this guide will walk you through a better way to build.


What you’ll build

  • Table: tbl_Feedback (stores each submission)

  • Form: frm_Feedback (easy data entry with a dropdown rating and a comment box with a disappearing placeholder)

  • Buttons: Save, New, Clear, Close

  • (Optional): Simple query and a summary report


1) Create the table

Navigation: Create ▶ Table Design

Add these fields:

Field NameData TypeNotes
FeedbackID    AutoNumber            Primary Key
DateSubmitted    Date/Time            Default Value: Now()
Username    Short Text (50)            Optional prefill with Windows user
Category    Short Text (30)            e.g., Bug, Idea, General
Rating    Number            Field Size: Byte (1–5)
Comments    Long Text            (aka Memo in older Access)

Validation (at table level):

  • RatingValidation Rule: Between 1 And 5

  • Validation Text: Please select a rating between 1 and 5.

  • Set Required: Yes for Rating, others as you prefer.

Optional – Create with SQL (Access DDL)

CREATE TABLE tbl_Feedback (
  FeedbackID AUTOINCREMENT PRIMARY KEY,
  DateSubmitted DATETIME DEFAULT Now(),
  Username TEXT(50),
  Category TEXT(30),
  Rating BYTE,
  Comments LONGTEXT
);

In older Access, replace LONGTEXT with MEMO.

Save the table as tbl_Feedback.


2) Build the data entry form

Navigation: Create ▶ Form Wizard → Pick table: tbl_Feedback → Add all fields → Finish. Save as frm_Feedback.

Switch to Design View and polish:

A) Rating input (choose one)

Option Group (radio buttons)

  1. Design ▶ Option Group → Drop on form.

  2. Add options: 1, 2, 3, 4, 5 → Assign values 1–5.

  3. Control Source of the option group: Rating.

OR, Combo Box (dropdown)

  1. Insert Combo Box → Control Source: Rating.

  2. Row Source Type: Value List.

  3. Row Source: 1;2;3;4;5.

  4. Limit To List: Yes.

B) Category dropdown (quick value list)

  • Row Source Type: Value List

  • Row Source: Bug;Idea;General;Other

  • Limit To List: No/Yes (your choice)

C) Comments with a disappearing placeholder

Name the comments textbox txtComments (Control Source = Comments). Add this VBA in the form’s code module:

Option Compare Database

Private Const kPlaceholder As String = "Type your feedback here…"

Private Sub Form_Load()
    ' Show placeholder if empty
    If Nz(Me.txtComments.Value, "") = "" Then
        Me.txtComments.ForeColor = RGB(150,150,150)
        Me.txtComments.Value = kPlaceholder
    End If
    ' Prefill username from Windows (optional)
    If Nz(Me.Username.Value, "") = "" Then
        On Error Resume Next
        Me.Username.Value = Environ$("USERNAME")
        On Error GoTo 0
    End If
End Sub

Private Sub txtComments_GotFocus()
    If Me.txtComments.Value = kPlaceholder Then
        Me.txtComments.Value = ""
        Me.txtComments.ForeColor = vbBlack
    End If
End Sub

Private Sub txtComments_LostFocus()
    If Nz(Me.txtComments.Value, "") = "" Then
        Me.txtComments.ForeColor = RGB(150,150,150)
        Me.txtComments.Value = kPlaceholder
    Else
        Me.txtComments.ForeColor = vbBlack
    End If
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
    ' Don’t save the placeholder text to the table
    If Me.txtComments.Value = kPlaceholder Then
        Me.txtComments.Value = Null
    End If
End Sub

D) Buttons (Save / New / Clear / Close)

Add 4 command buttons and name them: btnSave, btnNew, btnClear, btnClose. Paste this VBA into the form’s code:

Private Sub btnSave_Click()
    DoCmd.RunCommand acCmdSaveRecord
    MsgBox "Thanks! Your feedback was saved.", vbInformation
    DoCmd.GoToRecord , , acNewRec ' auto‑ready for next entry
End Sub

Private Sub btnNew_Click()
    DoCmd.GoToRecord , , acNewRec
End Sub

Private Sub btnClear_Click()
    Me.Undo
End Sub

Private Sub btnClose_Click()
    DoCmd.Close acForm, Me.Name
End Sub

Tip: Set Default = Yes for btnSave to trigger on Enter. Set Cancel = Yes for btnClose to trigger on Esc.

E) Nice touches

  • Add a Form Header with title: “Feedback Form” and a brief instruction label.

  • Set Tab Order: Username → Category → Rating → Comments → Save.

  • Set Cycle (Form property) to Current Record to prevent jumping to new records by accident.

Save the form.


3) Simple validation and UX

  • Table-level rule already restricts Rating to 1–5.

  • (Optional) Limit comment length in Form_BeforeUpdate:

If Len(Nz(Me.txtComments, "")) > 1000 Then
    Cancel = True
    MsgBox "Please keep comments under 1000 characters.", vbExclamation
End If
  • (Optional) Make DateSubmitted read-only on the form (Locked = Yes) so users don’t change the timestamp.


4) Quick query and summary report (optional)

Query: Create ▶ Query Design → Add tbl_Feedback → add fields → sort.

SELECT DateSubmitted, Username, Category, Rating, Comments
FROM tbl_Feedback
ORDER BY DateSubmitted DESC;

Report: Create ▶ Report Wizard → Use the query → Group by Category → Add Average of Rating in the group footer with a textbox:
Control Source: =Avg([Rating])


5) Start-up & distribution (optional)

  • File ▶ Options ▶ Current DatabaseDisplay Form: frm_Feedback.

  • Consider Compact & Repair before sharing.

  • If multiple users will enter data, split the database (front-end / back-end) via Database Tools ▶ Access Database.


Troubleshooting

  • Option group not saving? Ensure the Control Source of the option group (not the individual buttons) is Rating.

  • Combo not saving? Set Bound Column = 1 and Column Count = 1.

  • Placeholder saved in table? Confirm the Form_BeforeUpdate code runs and the comments textbox is named exactly txtComments.


You’re done!

Open frm_Feedback and try a test entry. You now have a simple, robust feedback intake form you can post or share with your team.

Comments

Popular posts from this blog

Fixing Slow Internet at Work—Here’s the Step-by-Step That Finally Worked

The Day the Internet Slowed Down—and How I Fixed It Fast It was a regular Thursday morning—until my phone buzzed. The general manager was on the line, clearly frustrated. She couldn’t log into SAP. “The internet’s crawling,” she said. “Can you do something about it?” Challenge accepted. Without wasting a minute, I grabbed my laptop and sprang into action. I knew that identifying the real problem quickly was key. My first move? Run a speed test—fast, simple, and revealing. Here’s how I did it, step by step: Step 1 Visit Speedtest.net 🌐 to quickly check your internet speed! 🚀 Step 2 Open the Command Prompt (CMD) 💻 and perform a quick ping test to your ISP 🌐 and other IP addresses to check for any network delays ⏳ or issues (e.g., 4.2.2.2). Step 3 Check the router's LED indicators 💡 for any unusual blinking patterns 🔄 that may indicate connectivity issues 🌐. Step 4 Check the back of the router 🔌 to confirm that all essential lights 💡 are on and functioning correctly. Step 5 T...

Grounded by Loss, Lifted by Grit: A True Story of Reinvention Abroad (Saudi Arabia)

🌅 My Last Day, A Life-Changing Goodbye It was a hectic Thursday—June 24, 2021—my final day at work. As I handed over my responsibilities to my Filipino replacement and prepared to close a chapter of my life, I received a message that shattered my world. My sister reached out via Facebook: our father had passed away. 😢 I was paralyzed with grief. I turned to a close Filipino friend and shared the news; word spread quickly, and the room softened in sympathy. The Chief Executive and General Manager both offered their heartfelt condolences before departing. 🤝✨ When I arrived back at my rented room in Al-Khobar, the tears came rushing. I wept uncontrollably—my father’s memory flooding my heart. ❤️ ✅ My Final Settlement and Exit Visa Despite the emotional turmoil, the exit process went smoothly. I received my final settlement 💰 and exit visa ✈️, followed by a confirmed flight scheduled for July 25, 2021. The closure I expected was now within reach—until new obstacles emerged. 🛂 Urgent V...

Step-by-Step Guide to Renewing Your Company’s Civil Defence License in KSA—Fast and Hassle-Free

Civil Defence is a regulatory body tasked by the government to protect lives and properties regionally and internationally. As a company, it is compulsory to get a Civil Defense License before it can operate a business and has to undergo compliance to the Fire Fighting System, Safety and Security - You may refer to step by step guide on how to get around this procedure.   Step 1 Secured the below certificates and other documents to be submitted to Salamah Online, among these are as follows: 1. Facility Contract 2. CR 3. Certificate of Insurance            a.  Comprehensive          b.  Workmen            c.  Employers          d.  Property All Risks 4. Municipal & Professional License 5. CCTV Certification from Police 6. Enjaz / Police Clearance 7. Annual Maintenance Contract—Firefighting Equipment 6. Salama Code Step 2   Share a...