Wednesday, June 10, 2026

How To List Recently Changed Objects in Microsoft Access (Forms, Queries, Reports & Tables)

Ever sit down in front of your Microsoft Access database after a long weekend (or maybe a vacation) and draw a complete blank about what you were working on last time? Or maybe you managed to restore an old backup but now have no clue which tables, forms, or queries you modified since then. Trust me, you are not alone. Keeping track of design changes in Access can feel like hunting for your keys: you know you left them somewhere, you just have no idea where.

There are plenty of situations where knowing which objects have been changed recently comes in handy. Maybe you are troubleshooting a sudden issue, recovering after a backup, or need to convince your boss that yes, you did make progress last week. Wouldn't it be nice if Access just had a big bright button that said: "Show me everything I changed?" Well, not quite... but it turns out Access does track some details that can help, if you know where to look.

So here's the scoop: Access secretly stores created and last updated dates for every object in your database. That includes tables, forms, queries, reports, and so on. These little details sit in a special, hidden system table called MSysObjects. You just have to know how to ask for them. Before you go poking around, be warned: do not modify anything in those system tables unless you want some exciting new error messages in your life.

To get to these details, you first need to make sure Access is showing system objects. Quick tip: right-click in your Navigation Pane, go into Navigation Options, and check the boxes for showing hidden and system objects. Once you do that, you will see a bunch of tables named MSys... popping up. The one you want is MSysObjects. If you open it up (just to peek, not to touch!), you will see columns like Name, Type, DateCreate, and DateUpdate. That's your motherlode of object details.

Now, you could scroll through all that technical noise by hand, but we are smarter than that. Time for a little query magic. Use the Access Query Designer to create a new SQL query that selects Name, Type, DateCreate, and DateUpdate from MSysObjects. You will want to filter out any system objects (all those that start with "MSys") and probably want it to show most recent updates first by sorting on DateUpdate descending. If you are comfortable with SQL, it looks something like this:

SELECT Name, Type, DateCreate, DateUpdate FROM MSysObjects WHERE Left(Name,4) <> "MSys" ORDER BY DateUpdate DESC;

If you are not familiar with SQL, the design grid view in Access will work just fine too. Tweak your criteria to exclude temporary objects (those that start with a tilde), and you will have a tidy list of what you have changed and when.

Now, a quick word about the Type column. Access uses numbers to represent different object types. For example, queries are 5, tables are 1, forms are -32768 (I'm not kidding), and so on. Microsoft does not officially document all of them, but most are easy to pick out based on your own naming conventions. You do not need to memorize the codes, but it does help to know what you are looking at.

This technique is awesome for tracking design edits to tables, queries, forms, and reports. Make a change, save your object, and bam - the DateUpdate field updates. So if your goal is just to figure out what objects you have been tinkering with recently, this query is your best friend. Add a new column, nudge a button a pixel, or update a query, and you will see it right at the top of the results.

But, and there is always a "but," there is a little catch with VBA code changes. When you change the code behind a form (the form's module) and save, the DateUpdate usually refreshes - most of the time. But if you edit a standard module (like a global module), for reasons known only to the Access gods, sometimes this does not update. I have seen it skip the update entirely, especially with standalone modules.

So if you do a lot of VBA work, be aware: this trick gives you a quick and dirty answer, not a full accounting. It is great for tracking forms, reports, tables, and query design changes, but don't rely on it for every line of VBA code you tweak. If you need to track VBA module changes specifically, you will want to step things up with a little more advanced VBA scripting to build your own audit table. That takes a bit more work - and I cover the full process in the extended cut for members, where you can see how to use the Access object model to get a more accurate, complete inventory of changes.

Bottom line: if you ever find yourself wondering, "What have I actually changed lately in this database?" a simple query against MSysObjects is a fast and surprisingly effective way to get the answer, at least for most Access users. Next time you come back from your break, or need to check your design history after restoring from backup, give it a try. For hardcore developers who live and breathe VBA, check out the members-only video for that next-level technique.

Got your own Access mystery or story about lost work and heroic recoveries? Drop a comment below and let me know. The video up above has the step-by-step demonstration if you want to see this technique in action.

Live long and prosper,
RR

Tuesday, June 9, 2026

How To Build A Simple Query In Microsoft Access

Need to pull up just the right set of records from your Access database without scrolling for hours or repeatedly fishing through dozens of rows? This is where queries step in to save your sanity. If you're working with customers, orders, or any data you regularly sift through, learning how to build a simple query in Microsoft Access is one of those things you'll wish you picked up sooner.

So, what exactly is a query? In Access, your tables are where data physically lives - think of tables as your database's jam-packed filing cabinets containing all your vital details like customer info, orders, products, you name it. But queries don't actually store data themselves. Instead, a query is basically you asking your database a focused question. Maybe you want to see every customer from Florida. Or only the ones who haven't placed an order in six months. A query lets you filter out the noise and get exactly the rows you want, quickly and reliably.

Running a query is like having a saved search - you set it up once, and any time you want those results, just run the query again. Less clicking, less filtering, more getting actual work done. If you're new and you haven't even created tables yet, I highly recommend checking out my Beginner Level 1 course first, because things make a whole lot more sense once you nail down tables. Links for that and my free TechHelp template database are down below.

Let's walk through a practical scenario. Say you're often looking for all customers from Florida, and you're tired of manually filtering every single time. Instead, you want a reusable tool. Here's how you build it: fire up Access, hit Create, and then Query Design. Choose your table - in this case, let's say "CustomerT." Then pick the fields you want to see in your results, like CustomerID, FirstName, LastName, City, or State. Double-click each field to drop them into your query grid.

Now, the magic happens with criteria. Click under the State column in the criteria row and enter "FL" (with double quotes). That tells Access to only show records where the state is Florida. Run the query - it's the little exclamation mark button - and boom: only the Florida folks. This is what a simple criteria filter looks like. Back in Design View, you can tweak this any time.

A quick pro tip: when you save your query (Ctrl+S is your friend), use a naming convention. I like ending tables with a T, queries with a Q, forms with an F, and so on. Spaces in names might look pretty, but they'll trip you up later if you start doing more advanced stuff, especially with VBA or SQL. Just trust me on this one.

From here on out, to get your trusty list of Florida customers, all you do is double-click the query and run it. No more wrestling with filters every single time - you just open, run, and you're set. That's why queries are one of my favorite Access features; build them once, use them forever.

But here's where beginners trip up: queries don't actually store copies of your data. The live data still sits in your table. So if you edit a record in your query, you're editing the real thing. If you delete a record, it's gone from the table. The query only stores the instructions - the "recipe," not the "soup." So double-check before you accidentally nuke a record you actually wanted to keep! Think of query results as different lenses for the same data, not a detached snapshot.

If you want to go beyond this and get into more advanced stuff like complex criteria, AND-OR logic (for the pros who live dangerously), or parameter queries that prompt users to enter values each time (great for on-the-fly searches), I have separate videos just on those topics. With parameter queries, for example, you don't have to hard-code "FL" - you can prompt the user for any state when running the query… neat little feature, super useful.

And if you're reading this without having watched my Access Beginner Level 1 course, what are you waiting for? It's free, it's comprehensive, and it'll put you light years ahead when it comes to confidently working with Access databases.

So that's the rundown for building a simple query in Microsoft Access. If you have questions, comments, or just want to share your own query-war stories, post them down below. And remember, you can always watch the embedded video up top for a complete click-by-click walkthrough.

Live long and prosper,
RR

Monday, June 8, 2026

Should We Stop Using AI? What Microsoft Access Developers Need To Know! QQ 95

Should we pump the brakes on AI, or is it just the new tool we all have to get comfortable with? That was one of the big questions from this week's round of Microsoft Access community discussions, and let me tell you, we went everywhere: AI's environmental impact, 32-bit vs 64-bit Office, query design quirks, performance tweaks, even penguins. That's what happens when you put a bunch of Access geeks together and let the questions fly. Let's dive into some of the more interesting topics that came up this week, along with a few classic debates and a couple of developer battle scars for good measure.

This time, the Quick Queries inbox really delivered. The conversation started with a question that's bounced around the Access world for years: is there any real advantage to upgrading from 32-bit to 64-bit Access? Spoiler: for most, not really. Unless you're dealing with gigantic Excel sheets or heavy API work, your forms, reports, queries, and VBA code won't suddenly run faster or get you bigger databases. The reality is 64-bit is just where Microsoft is heading, so if you're building new today, might as well jump on the bandwagon. But if your 32-bit setup isn't broken, you don't have to fix it until you hit a wall. Progress is slow sometimes in Access-land, but the direction is pretty clear.

Next up: is it better to use a saved query, or just slap the SQL right into your form's record source? My take: it's mostly a matter of style and maintainability. If you'll reuse the same query in multiple places, save it. If it's a quick one-off, hack it in-line. If you're like me and you often test things with the query designer and then copy the SQL wherever it needs to go, hey, whatever gets the job done fastest. One perk of saved queries: way easier to troubleshoot when stuff breaks. There's nothing like spending an hour hunting for a rogue SQL string buried in property sheets. Been there, done that. Just remember, shared queries = shared dependencies. Change one, you might accidentally break something else, so watch out for gotchas.

Then there was the always-controversial advice about "compact on close." Here's the deal: do it for your own local or front end files if you're flying solo, or pushing out split front ends to users. Never, and I mean never, compact a shared back end while other people are using it unless you've got a thing for corruption (and not the cool, political kind). Scheduled batch maintenance is your friend. Compacting doesn't magically make Access run faster; it mainly keeps the file size under control by cleaning up deleted records and general bloat. For most, once a week - or even less - is totally fine. Maybe more if your workflow trashes a lot of temp tables. Just don't go nuts hitting Compact every hour.

Form limits reared their heads again, as always. Turns out, Access has a theoretical 754-control-per-form lifetime limit, but realistically, you have to go out of your way to hit it. If you're creating dynamic forms by just hiding/showing/resizing existing controls, you'll never see the problem. Pro tip: if you're genuinely generating stuff in design view over and over with CreateControl from VBA, and somehow wear out that allocation, just make a new form. In thirty-plus years, I've never personally hit it, despite my best (and worst) efforts. Treat Microsoft's limits more as guidelines than hard red lights - sometimes, real-world behavior is wilder than what the docs claim.

Zoom features got brought up - specifically, why compiled ACCDE files sometimes ignore form zooming. You're not crazy; Microsoft knows about it. I've been using the zoom and loving it, so hang tight for fixes. It's a rare treat to see brand new features still landing in Access, so give the team a little slack as they iron things out.

Name AutoCorrect? The debate continues. Some folks see a speed boost after turning it off because, let's face it, Access tracking every name change across all objects does burn a little horsepower, especially in big hairy databases. My beef is it isn't thorough enough; it'll "fix" some queries or forms but leave VBA or SQL in code alone. So you get a false sense of safety. For small, simple stuff, it can be handy. But in anything even remotely complicated, I'd rather search and fix my references on my own so nothing slips through the cracks. Trust, but verify. Or just don't trust at all and handle your own business. (Multi-valued fields and attachments fall into this category for me, too. Looks nice on paper, but bite you later if you're not careful.)

Had to tackle a couple of reader myths, too - especially the old "you only answer questions from premium members." Nope. Most questions I answer came from non-members on YouTube, Reddit, or in the forums. Gold/platinum/silver folks get a little priority (they're the reason these videos exist at all), but anyone can ask, and I'll answer as much as I can. If you want the best odds, use the forums, where our moderator crew and developer students can jump in, too. The more eyes on your problem, the better.

The 255-field-per-table limit crept up again - a classic database "oops." If you're getting even close to 255 columns, something likely needs redesigning. Move those columns into a child table and use a "name-value" pair scheme: one record per field. That'll let you store as many attributes as you like without running out of columns. If you need to export to a stats package that wants a flat ultra-wide table, you can pivot or build an export query at the end, but your underlying data stays sane and maintainable.

Now, about that AI question that anchored the week: should we stop using AI out of environmental concern? I get it, I really do. The big data centers powering today's AI chew up plenty of electricity and water, so yes, there's an environmental cost that we absolutely can't ignore. Governments and the big tech companies need to do better - stricter standards, cleaner energy, the works. But simply abandoning useful tech isn't the answer. Nobody's giving up computers, cars, or the internet to save a little power. The better strategy is to demand responsible development and regulation. Cleaner, more efficient, more sustainable - yes please. But let's face it - the genie is out of the bottle. AI isn't going back in, so as Access developers (and honestly, anyone using modern tools) we're just going to have to learn to use it wisely and responsibly.

I use AI all the time for research, brainstorming, even a little image-generation humor here and there. I'll never let it make the videos for me, but as with calculators, computers, and spreadsheets, you either get on board or get left behind. The environmental debate is real, and I'm absolutely behind any push for stricter protection - especially since it's the creatures least able to adapt who pay the price. Penguins losing their ice should matter to all of us. But asking everyone to quit using AI cold turkey? That's about as likely as a return to horse-drawn carriages.

And yes, before anyone asks, AI and Access do actually mix. Whether it's integrating AI services into your apps, using it to analyze data, or even just making your documentation process a little less painful, this is just another tool to add to the developer belt. I'll definitely be teaching more about this soon, so stay tuned for a full Access-and-AI video series down the road.

That about wraps up this week's Quick Queries. We covered a lot - AI angst, classic Access headaches, small victories, and maybe even a few things you've never run into (yet). If you want all the details behind these stories and a few bonus rants you won't find anywhere else, definitely check out the video above. Drop your own questions or battle stories in the comments - I love reading them, and they often spark future episodes. Until next time, keep learning, keep sharing, and don't let Access's quirks slow you down.

Live long and prosper,
RR

Thursday, June 4, 2026

Why I Turn Off Name AutoCorrect in Microsoft Access

Name AutoCorrect in Microsoft Access sounds like one of those dream features you did not know you needed until it quietly starts breaking things behind your back. You rename a field in a table, and poof - Access promises to update all your forms, queries, and reports to match. What could possibly go wrong? Well, after years of wrangling with Access databases, I am firmly in the "turn it off immediately" camp, and here is why.

The idea behind Name AutoCorrect is simple enough: give your fields or tables new names, and Access tries to chase down everywhere those names are used and update them for you. In a basic little database, it can seem magical. Rename a table or field, and your forms and queries do not break - at least, not right away. But once you get beyond the absolute beginner stage - introducing some VBA, more advanced queries, or complicated relationships - Name AutoCorrect starts looking less like a helpful assistant and more like a mischievous gremlin.

Let's get this out in the open: yes, if you only deal with super-simple databases, you might never have noticed a problem. Rename a column called "Customer Since" to "Customer Start Date" and most of your basic forms and queries will keep on working if you have Name AutoCorrect turned on. But - and this is a big but - the magic does not reach everything. Your control names stay the same. Any VBA code that references "Customer Since" does not get automatically updated. That button you wrote three years ago and forgot about? Still points to the old name - and now it is broken. Access, sneaky as it is, does not warn you or fix your code. It just lets the error show up at the least convenient moment, like Monday at 9:15 AM when everyone is already emailing you.

The options for Name AutoCorrect are tucked away under File, Options, Current Database. There are three settings: Track Name AutoCorrect Info, Perform Name AutoCorrect, and Log Name AutoCorrect Changes. Track is like the master switch, and the others depend on it. If you turn them off, especially in your project template, you will avoid a lot of behind-the-scenes overhead and save yourself some confusion. Object Dependencies - the little feature that tells you what objects rely on what - does use the Name AutoCorrect info, so if you love that tool, just know it depends on tracking being on. Personally, I barely touch it.

Where it really trips people up is with anything outside the designer's drag-and-drop world. VBA code, SQL statements, DLookup, recordsets, you name it - Access does not touch those when it updates a table or field name. And here is the real kicker: Name AutoCorrect works just well enough to give you a false sense of confidence. Some stuff gets fixed, so you think everything is fine. Then the weird bugs start rolling in weeks later, and you have to play detective to track down references that did not get updated.

Some really respected names in the Access world fall on both sides of this debate. Colin Riddington, an Access MVP, argues that you can use Name AutoCorrect if you really, truly understand how it works and what it skips. And yes, if you are careful and know every quirk, it can maybe be your friend. Me? I do not need another feature that requires a deep knowledge of all its hidden behaviors just to avoid disaster.

Then there is Allen Browne - legendary in the Access community - whose take is short and sweet: just turn Name AutoCorrect off. Even though Microsoft has improved the feature over the years, Allen's old advice still holds up, because the core problem remains: Access still does not update everything, especially code. All it takes is one missed field reference in a macro, form, or chunk of VBA, and you are tracking down bugs that should never have existed in the first place.

If, like me, you have ever built a database with thousands of lines of code and more moving parts than a Swiss watch, you know the pain of chasing down these elusive errors. At this point, I just leave old field names alone unless I am absolutely forced to change them. That column I named badly in 2001? Still there, spaces and all. Sometimes it is better to live with a little inconsistency than to risk breaking the whole machine.

My advice is simple: turn off all the Name AutoCorrect options in every new database you build, especially if you do any coding in VBA or SQL. Instead, if you must rename something, search your entire project for references and update them yourself. Do not trust Access to know what you meant. And for the love of data, do not use "Find and Replace All" unless you like unexpected surprises.

There are always a few Access developers who will fight me on this, but I will stick with my gut. Name AutoCorrect tries to solve a problem, but it just adds its own layer of complexity and unpredictability. I would rather take five minutes to check my own work than spend five hours fixing mysterious bugs later.

I am curious: are you in the turn-it-off club, or do you leave it running? Let me know in the comments. And if you want to see demos and deeper dives into all the weird little Access features you should avoid (Multi-Valued Fields and Attachments, I am looking at you), check out the embedded video above.

Live long and prosper,
RR

Wednesday, June 3, 2026

Microsoft Access Specifications And Limitations: Real World Performance And Capacity

Ever found yourself wondering if Microsoft Access is secretly holding your business back, or if those so-called "limitations" you keep hearing about are actually something to worry about? This is something that comes up a lot, especially for people who start with Access and only realize later on that there are some restrictions kicking around once their apps start to grow. Let's talk through the official specs, what they really mean in the real world, and how to dodge some of the more common pitfalls.

Microsoft does publish a whole specification sheet of Access's limits, but most people (and a few critics) have a habit of cherry-picking the more dramatic numbers. For instance, you've probably heard that the maximum database file size is 2GB. Sure, that's true per ACCDB or MDB file. But what most people miss is that you can split your data across several backend files. As your database grows, you can break things up - customers in one, orders in another, order details in a third - you get the idea. Suddenly, that so-called "limit" is a bit more flexible, as long as you are thinking about your structure smartly.

If you find yourself running out of space anyway, the usual culprit is storing big files inside the database itself, like images or attachments. Seriously: just don't. Access isn't designed for it, and it will fill up your space in a hurry. Save images as files and keep only their paths in the database. And don't forget to compact and repair the database regularly - a weekly maintenance habit will take care of bloat caused by deleting and adding lots of records.

Now, how many objects can you have? Officially, it is 32,000, which covers tables, queries, forms, reports, the whole lot. If you ever get even close to this, I'd be genuinely impressed (and maybe a bit concerned). In my decades of building Access apps, the busiest databases have maybe a couple hundred objects at most. If you are regularly crossing into four digits, it might be time to rethink your approach - and what you are doing with all those objects!

Another one that stands out is the user limit. Technically, Access allows up to 255 concurrent users. In reality, the sweet spot is about 20 to 30 users working at the same time. Above that, especially with heavy data entry and a busy network, you are going to start hitting performance problems. That is usually a sign to start thinking about a beefier backend like SQL Server. Of course, the exception is if you have lots of users who are just occasionally looking up records - not everyone hammering the database constantly. But if you are relying on wireless networks, know that you are flirting with disaster; wired is the best for Access reliability, especially at scale.

People also ask about table limits: you get 255 fields per table. That sounds like a lot, but if you are getting close to it, it's probably a table design issue. If you find yourself naming fields like Phone1, Phone2, Phone3, or Item1 to Item200, it's time for a little database normalization. Split repeated or related information into their own tables - your database (and your sanity) will thank you in the long run. Most well-designed tables do not even get close to 50 fields, let alone 255.

Short text fields max out at 255 characters, which is standard across databases, and long text (formerly "memo") fields let you store up to 65,535 characters through the UI - or much, much more if you write the data in programmatically. If you ever find people needing to edit more than 65K characters by hand, something has gone off the rails.

Indexing is another place beginners love to overdo it. The limit is 32 indexes per table, but realistically, if you need more than a dozen or two, it's a good idea to evaluate whether you are indexing fields that nobody actually searches or sorts. Indexes help with searching, but they slow down inserts and updates.

One tip that can save you headaches: database relationships. You can enforce referential integrity within a single database file, making sure, for example, that every order links to an actual customer. However, if you start splitting your data across multiple backend files (to get around the 2GB limit for example), Access cannot enforce those relationships for you - you need to do it with careful code and validation.

The official specs say you can have 32 tables in a single query and nest up to 50 subqueries, but if you are hitting those numbers, it's probably time to break things out into several smaller, more manageable steps. Wildly complex spaghetti-queries are nearly always a maintenance nightmare.

Nested forms and reports go up to seven levels deep. Honestly, if you have seven layers of subforms, I hope you are building a database family tree. Most real-world applications do not even get close to three or four.

And then we get into the legendary "lifetime controls" limit: Access tracks the total number of controls you have ever added to a form or report - not just the ones currently present. Get too wild with redesigning forms over the years (adding, deleting, adding again), and eventually you could hit this ceiling. If you start from scratch with a new form, or simply copy and paste as a template, you'll dodge this weird little quirk. For most folks, it is rare to ever run into in practice.

Here's something interesting: these official limitations are not as rigid as they first appear. There are folks out there, like Access MVP Colin Riddington, who have stress-tested these limits and found that the ceiling can be higher than the docs suggest, or has changed over time as Access has evolved. Some restrictions are more "safety guidelines" than hard walls. If you are curious, check out his work for some fun experiments in what Access can really handle.

Bottom line: Most real databases will never get anywhere near the official specs. When you are approaching a limit, it's almost always a sign that your database design could use a tune-up. Worry more about proper normalization and splitting your database in healthy ways, and less about chasing the biggest possible numbers. And if you ever actually run into those extreme limits, let me know - I would personally love to see what you built!

If you want all the technical details and a run-through of the actual specification pages, check out the video embedded above.

Live long and prosper,
RR

Monday, May 25, 2026

How To Build A Password Manager & Generator In Microsoft Access Step By Step

Still keeping your passwords scribbled on sticky notes or crammed into that old Excel spreadsheet? You might be surprised how quickly you can whip up your own password manager and generator in Microsoft Access. It is not rocket science, but you will need to bring along a little bit of VBA and a sense of adventure. Let me walk you through building a simple version from scratch - no cloud syncing, no third-party subscriptions - just you, your Access database, and a handful of strong passwords.

Right off the bat, let's get something clear: Microsoft Access is not the Fort Knox of data security. Even if you slap a password on the database, it is good enough to keep out your nosey coworker, but don't entrust it with state secrets. For most personal or small-business use, though, this gets the job done. If you need heavy-duty security, think about moving your backend to SQL Server. But for now, let's dive into the fun part - building your password vault and giving it a slick generator.

Start by creating a dedicated table to stash your passwords. Keep it tidy: throw in fields for description, website, username, password (of course), maybe some notes, and a last changed date if you want to be fancy. Add anything else you like - security questions, special instructions, whatever helps jog your memory when you land on those rarely used sites. I usually leave input masks off the table itself, favoring form-level controls so I have more flexibility when it comes to how (and where) those passwords appear later.

Now, on to the form. Clone one of your trusty single-record forms, slap on the new table as its data source, and drag your fields right onto it. I like to keep the layout streamlined: description, website, username, password, and a big-enough box for notes. Feel free to use your favorite format painter trickery to keep things looking polished.

The fun really begins once we start hiding and showing those passwords. Set up your password textbox so it masks input with asterisks (yep, just an input mask set to "Password"). But I prefer not to lock that at design time. Instead, use the form's On Current event, so whenever the record changes or the form loads, it hides the password by default - less risk of accidentally flashing your credentials to everyone walking past your screen.

Want to peek at your password? Drop a Show/Hide button next to it. A little VBA toggles the input mask between "Password" (hidden) and blank (revealed). Make it friendly: if a password is showing, let the button flip to "Hide"; otherwise, "Show". This little toggle helps prevent a password from lingering on the screen longer than intended.

Next up, let's tackle copying to the clipboard. Sometimes, you just need to dump that password straight into a web login. Add a Copy button - nothing fancy here, just a couple lines of code to select the password field and issue a clipboard copy command. Watch out, though: if the input mask is active, Access tries (and fails) to copy those asterisks, not your precious password. The trick is a quick toggle - momentarily reveal the actual text, copy it, then hide it again before anyone notices. Pro tip: throw in a beep, so you actually know it worked.

Of course, generating random passwords is half the fun. Wouldn't it be nice to crank out a 12-character mishmash of uppercase, lowercase, numbers, and special symbols at the click of a button? That part is built with a bit more VBA, iterating through your character pools and ensuring you get at least one of each required type. The guts of the implementation are all in the accompanying video, so if you want to see exactly how to randomize and assemble those strong passwords, that's where you'll find it.

Couple final security reminders: storing passwords in plain text - whether masked or not - should always be taken with a grain of salt. For peace of mind, you can even scramble or obfuscate the stored passwords, so even if someone cracks your database password, all they find inside is gibberish. Many cloud services offer this out of the box, but if you want everything local and under your control, rolling your own in Access gives you the flexibility to encrypt or encode data just how you like it.

And seriously - use two-factor authentication wherever possible, whether in your own database or your online accounts. If you are paranoid enough to build a password manager in Access, might as well go the extra mile and secure everything you can. Passkeys, fingerprint readers, the works. Don't make it too easy on the bad guys.

If you want the step-by-step details, VBA code, or want to see this all in action, the video above has you covered. The next part will get into generating passwords automatically, so keep an eye out for that if you are following along.

Whether you need a simple password tracker or are chasing a side project to sharpen your Access chops, putting together your own little password manager is a great exercise. Just remember: even the best Access wizardry is only as secure as the computer it runs on - so don't skip those good security habits.

Live long and prosper,
RR

Sunday, May 24, 2026

Should Your Microsoft Access Forms & Reports be Based on Tables or Queries? QQ 91

Plenty of lively discussion in the Access world this week! Let's dive into a handful of questions and interesting Access topics, from the classic "Tables vs. Queries for forms and reports?" debate to troubleshooting subforms, hiding the Access interface, collecting survey data, and a few more curveballs from viewers and forum posters. Grab a mug of something and let's wander through the mailbag.

First up, for all the folks wringing their hands over Microsoft introducing new features like cascading combos or form zooming instead of hammering away at the big bugs: many of these "extra" features actually came from Microsoft's internal Innovation Week. The devs spin up these side projects because they want to (—guess what: Microsoft isn't just ignoring real issues or stealing attention from critical updates). These quick shots of innovation sometimes become the most beloved features. If only all our "side projects" ended up working as well as my old video tutorial CDs did.

Let's hit the forums! Tom, over on my website, wanted to attach receipt files to expense subforms. One cool suggestion: use a hidden control (even in datasheet subforms) to stash the file path. Not everyone remembers that datasheets can still have form headers and footers—perfect hiding spots for extra info or controls users shouldn't fuss with. Once you've got the path, it's trivial to open the receipt file with FollowHyperlink (after checking the file exists, of course). You can also use hidden stuff in the page header/footer for advanced tricks, though personally, I'm more of a TempVar fan for passing small nuggets of data. Just pick the tool that fits.

Now, on to Andrea's question (and the main headline this week): should you base your forms and reports on raw tables or on queries? Here's the thing—a ton of people think everything HAS to sit directly on tables. Not so. In fact, most of my forms are tied to queries, not tables. Queries let you do calculated fields right in the record source, so your forms can show up-to-date totals, differences, or custom rolling calculations on the fly. As long as your query is "updatable" (meaning Access can still write data through it, not just display calculations), you get the best of both worlds: editable data and calculated views. Just don't get too wild with nested queries, lots of joins, or aggregates, or you'll lose updatability. Keep your queries tidy and you'll have an easier time managing, expanding, and debugging down the road.

If you want a hands-on example, check out my TechHelp free template: the Orders subform is built on a query that adds one calculated value to the OrderDetails table and still supports editing. Simple and powerful—exactly how I like it. So, Andrea, you're doing it right: build your forms on queries for anything beyond very basic data entry, and you'll thank yourself later.

Switching gears, Tony asked about SQL Server's Object Explorer and filtering. Unlike Access' navigation pane, SQL Server lets you filter tables (right-click, filter by name, etc.) but it's tucked away a little deeper. If you're even a tiny bit SQL-curious, get familiar with Object Explorer and check out my free SQL Server Beginner Level 1 course. Moving your Access tables to SQL Server is actually easier than you think, and you get a bucket-load of benefits for larger, multi-user projects.

Monica ran into the dreaded "Enter Parameter Value" pop-up after tweaking her forms. Her form's sub-subform was still referencing a now-missing field, so every time the main form closed, Access tried (and failed) to resolve the reference. If you've ever dealt with nested forms, remember: Access loads deepest subforms first, and unloads parent forms before children. Hard-coded references to fields outside the local form hierarchy can bite you. Use Link Master/Child fields wherever possible; they're way safer. As for debugging? Monica's method is my favorite—copy the form, delete chunks until the problem vanishes, and you've found the culprit. Nine times out of ten, "Enter Parameter Value" means something's misspelled or missing.

Chuck was tangling with the age-old "my text box stays blank, is it a VBA variable or a control?" issue. If you name a variable and a control the same thing, Access only knows which one you mean if you use the Me! notation for the control (like Me!FirstName). Never name variables the same as your controls. If you must, at least make it crystal clear which is which or you'll be debugging until your hair falls out. (Ask me how I know.) Sometimes, just starting fresh fixes gremlins hiding in the code too.

Reddit sparked up a classic debate about Access alternatives. Bottom line: If you want to bang out a full-featured desktop application quickly, with powerful forms and reports, Access is just about unbeatable. There are other tools, but none hit that sweet power/speed/ease spot. Hate on Microsoft all you want, but Access has quietly powered businesses for decades.

Daylight saving debates snuck into the conversation again—and yes, the twice-a-year clock change drives me nuts, both as a human and as a database guy dealing with time calculations across the 2 a.m. shift. SAD (seasonal affective disorder) is real. If you live above Buffalo's latitude, sympathy points for you.

Hamid wanted to hide the classic Access interface to make his DB feel like a "real" app. Totally doable! Swap the Access icons, hide the navigation pane and ribbon, show a splash screen, and minimize the shell window. For most users, your app will look standalone—they'll never notice Access under the hood (until Task Manager rats you out). Check out my "Hide Access" series for all the tricks.

Sanch asked about programmatically creating shortcuts that launch your Access database in its own MSACCESS.EXE process. That's just a matter of generating a Windows shortcut whose target is MSACCESS.EXE plus your ACCDB as an argument. Totally scriptable in VBA, if there's interest.

Another viewer mentioned that more modernization would slow migration away from Access. I agree: if Microsoft put real resources behind Access, it would keep its crown as the fastest way to build desktop business apps. But as cloud and web apps nibble away, the smart move is hybrid: use Access as your front end, SQL Server as your back end, and plug in whatever modern tech you want. That's my plan going forward, and if Microsoft is listening, let's keep Access strong!

Kartik wanted to know how to send Access questionnaires out for others to respond to (and how to analyze results). The easiest way? Use Google Forms: email a link, let people fill it out online, import the answers to Access or Excel. If you want to go full-on developer, spin up a SQL Server table, put a web front end on it (ASP, HTML, whatever floats your boat), and suck in responses from the far corners of the internet. Or go old-school and have folks reply to structured emails. There are many ways, but the golden rule: collect the data however you want, then let Access chew on it for analysis and reporting. That's what it does best.

Finally, a quick word about dark mode in Access. For regular forms, dark/light toggles are covered in my videos. For that deep, satisfying dark mode in the VBA code editor (and more), I've got a whole multi-part course on switching themes, saving settings, and making your entire Access/VBA experience easier on the eyes. I even cover setting Windows and Office to dark mode at the push of a button. You can find links to those resources on my site if late-night coding is taking a toll on your retinas.

Before you go, pop over to my website for more videos, templates, developer tips, and the occasional rambling blog post about what's new in Access or whatever is on my mind. My forums are open if you want to ask a question, and there's always something new to learn, discuss, or argue about.

This week we've bounced between queries vs. tables for forms, hiding the Access interface, collecting survey data, and a healthy dose of troubleshooting and opinion. Want the full demos and deeper dives? Watch the embedded video above for all the action, and send in your questions for next time!

Live long and prosper,
RR