Topics-v1

Version Control

Access Version Control: My Philosophy
These rules are intended as a guiding philosophy. If I’m getting closer to meeting this vision, I know I’m moving in the right direction.
High Wire Walking With No Net
In those early days, our method of “source control” was making regular copies of the front-end database and appending a date to the filename. This was....less than ideal. The problem is best illustrated with a quick story.
An Homage to Mercurial
I believe without a doubt--even knowing what I know now--that I made the right decision at the time. If I could go back to 2009 and do it over again, I would still go with Mercurial. If I were starting from scratch in 2020...that’s a different story.
Top 10 Reasons to Use Version Control With Access
Using version control is the most impactful change you can make to improve the quality of your Microsoft Access applications. Here is a quick list of just some of the benefits you gain using version control.
The Starting Point
Before we can use a DVCS with our Access application, we need to convert the binary Access file into a series of text files. The best place to start (and where my journey began) is with this StackOverflow answer.
From Gibberish to Clarity
So, how can we compare those database properties? By iterating through the database’s .Properties collection, of course. Here is some sample code from my modified decompose.vbs script.
Database Properties for Thee
The DAO Database object has a Properties collection. You can read through the list of properties to extract saved database options. You can also add your own properties to the object.
Wherefore art thou, database properties?
In my previous post, I talked about adding custom properties to the database object. I covered how to do it, but did not go into any detail about why you might want to do it. Let’s remedy that now.
Tables to Text: Do it for the DVCS!
Anything that can lead to a bug in your software belongs in version control. That includes local tables with design-time data.
Referencing references
While we can use the VBA user interface to display the references, we can’t rely on that approach if we want to automate exporting our Access binary file to text files. Luckily, there is a solution.
Tracking Table Structure Changes
Another potential source of bugs is changes to the structures of our tables. This includes both local tables and linked tables that reside in our back-end.
Exporting Queries for Version Control
SaveAsText will export queries to text files, but calling those files “human-readable” is a stretch.
Putting It All Together
I expanded on the original decompose.vbs script. The code below is the culmination of more than 50 individual changes and tweaks over 10+ years.
Scraps of Wood and Code
Resisting the packrat mentality.

Error Handling

Error Handling Evolution
How you handle errors says a lot about you as a programmer. Most people evolve with experience in how they handle errors. From the most naïve to the most advanced, here is what that evolution looks like.
Throwing Errors in VBA
Introducing a frictionless alternative to Err.Raise.
Graduate Level Error Handling
Once again, I borrowed an idea from Python. To smuggle this concept into VBA, I turned to a rarely-used language feature...

Testing

Python-inspired Doc Tests in VBA
Doc tests are not a replacement for unit or integration testing. But they do provide the best return on investment (ROI) of any type of test, mostly because the effort to write them is near zero.
VBA Doc Tests: Advanced Features
Let’s take our doc tests to the next level. I’ll show you how to use my custom DocTests function to test classes, private functions, and error conditions.

The Basics

It Takes Two
Microsoft Access is both a rapid application development (RAD) environment and a file-based database system. It is actually quite capable in each area. But they are two fundamentally different functions.
One if ByVal, and Two if ByRef
Arguments in VBA are passed by reference by default. What does that mean? And what are the differences between passing by reference and by value?

Intermediate

All about interfaces:

Interfaces, Conceptually
Interfaces can be a difficult concept to grasp conceptually. To help make sense of the concept, consider these real world examples.
Interfaces, Practically
A real world example using Active Directory lookups.
Backward-Compatible Refactoring
How can you completely change the way you interact with a class without breaking backward compatibility? Interfaces.
Cookie Cutter Forms
How do you reuse a form with external dependencies in multiple projects? Interfaces.
Dependency Injection (sort of)
For a few common dependencies, we can cheat by using a singleton class. Within that class, we’ll type those dependencies as interfaces.
Cleaner IntelliSense
How to clean up your object’s auto-complete dropdown list when it starts to look like that of the MacBook Wheel.

Hidden Features

Expressions vs. Code
When is code not code? When it’s an expression. What’s the difference and who really cares? Let’s explore.
A Rounding We Will Go
Two kinds of rounding, the VBA language spec vs. the Office VBA implementation, and a drop-in replacement for VBA.Round().
Requery a Form in Place
Form.Recordset.Requery. That’s it. That’s the whole article.
VBA Alchemy: Turning Methods Into Properties
One can check the status of screen painting in Excel, but not in Access. This turns out to be an important shortcoming. Let’s remedy it.
Blast From the Past
Why use keyboard shortcuts from Access 2003 when developing in 2020? Because starting with Access 2007, the new shortcuts suck.
VBA’s Case Changing “Feature”
VBA likes to change the casing of our code (upper/lower/mixed). It may seem random, but it’s not. Read all the details here.

Tools

My Favorite Things
Here is a list of my favorite utilities, add-ins, OCX controls, and applications that I use when developing Microsoft Access applications.

Autohotkey

Debugging VBA with no Break Key
Ever use a keyboard without a Pause/Break key? It’s no big deal for most people, but if you develop in VBA it’s a huge deal.
A Mind-Reading Script
What if you could highlight any text, press a hotkey, and have Windows do what you want almost every time? You’d have my top productivity hack.
Expand Your Access Palette
Use AutoHotkey to bring consistency to your Access color schemes and save time when designing forms.
Size Matters
Testing your program for small screens? You could change your own monitor’s resolution, but that gets annoying real fast. Here’s a better way.

SQL Server

Peeking Under the Hood
Don’t let these gotchas trip you up when using SQL Server as a backend for Microsoft Access.
All Hail Ola!
If you’re managing SQL Server and you’re not using Ola Hallengren’s scripts, then you’re doing it wrong.
Cloning a SQL Server Database
The fastest, simplest, and cheapest way to clone a SQL Server database for debugging or testing. Even works with SQL Server Express!
Tuning Access Query Performance
The four best tools/techniques for tuning Access query performance: JetShowPlan, Process Monitor, TraceSQLMode, and SQL Profiler.

Conventions

VBA Squeeze Box
I discussed previously the differences between passing by value and passing by reference. I now want to discuss how and when I use each in my own code.
Enum Type Naming Convention
The combination of “IntelliSense overload” and “global identifier case changes” convinced me I needed a different approach.

Commentary

Sympathy for the devil?
Microsoft Access is not the devil. You can use it to write great software. You can use it to write crappy software. I’m here to help you write more of the former and less of the latter.
Reverence for Backwards Compatibility
A feature that was heavily used by a very small percentage of power users has been maintained over the course of five subsequent upgrades (and counting). Now that is showing reverence to backwards compatibility.
Past is Prologue
A personal reflection on my software development journey. There’s more to creating great software than knowing how to write code.
Building Your Library
Thirteen years ago, I chose to maintain a folder of text files rather than a single Access database library. I’ve never once regretted that decision.
Weekend Warriors
Wherein I compare keyboard warriors to actual warriors.
Lightweight Forms? Just Don’t
Lightweight forms make your code harder to read and debug, but if your users have monitors with high enough refresh rates, they’ll appreciate the effort.
The Curse of Reliable Software
How does one avoid the reliability paradox? One option is to intentionally write unreliable, buggy software. There’s a better option.
Two Ways to Burn
Burning cardboard is a lot like a large data migration. You can do it all at once or slowly over time.
How Not to Propose
Features don’t sell software.
Defensive Programming
Don’t build digital Maginot Lines. Program your defenses in depth.
The Golden Rule of Data Migrations
The fastest and most reliable way to run a migration is to repeat it many times. I call this the “Repetition Paradox.”
Cruft Sale!
Everything must go!!! Dead code, obsolete reports, and bunches of binary backups! No offer too big or too small!
Web Apps - Bane of my Existence
Whatever modicum of credibility I may have had with “real programmers” I am about to douse in gasoline and light on fire with this article.

Signal vs. Noise

Signal vs. Noise
My approach to software development in four words: Less noise. More signal.
When Good Comments Go Bad
Bad actors carry out disinformation campaigns to poison our discourse. But when we write code, sometimes we’re the bad actors.

Career Advice

Journey to Access: Part 1
Many of the best Microsoft Access applications are written by people with no formal background in software development. Your origin story starts here.
Journey to Access: Part 2
The weirdos who enjoy spending lots of time to avoid doing mundane tasks that only take a little time have their own special name: programmers. Welcome to our very weird club.
Journey to Access: Part 3
A morass of Word documents and Excel workbooks--the invasive plant species of the Windows world--overgrowing your file system like so much digital kudzu.

Image by Arek Socha from Pixabay

  • ["Access 101" tag page]: Show all articles with the tag "Access 101" (including those where "Access 101" is a secondary tag).
  • ["Advanced" tag page]: Show all articles with the tag "Advanced" (including those where "Advanced" is a secondary tag).
  • ["AI" tag page]: Show all articles with the tag "AI" (including those where "AI" is a secondary tag).
  • ["Announcement" tag page]: Show all articles with the tag "Announcement" (including those where "Announcement" is a secondary tag).
  • ["API" tag page]: Show all articles with the tag "API" (including those where "API" is a secondary tag).
  • ["Archive" tag page]: Show all articles with the tag "Archive" (including those where "Archive" is a secondary tag).
  • Archive Collection: Hidden Features: (Jan 20, 2023) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Hidden Features.
  • Archive Collection: Bug Types: (Jan 21, 2023) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Bug Types.
  • Archive Collection: twinBASIC: (Jan 22, 2023) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: twinBASIC.
  • Archive Collection: Test-Driven Development: (Jan 23, 2023) I'm on vacation! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Test-Driven Development (TDD).
  • Archive Collection: Tools: (Jan 24, 2023) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Tools.
  • Archive Collection: Defensive Programming: (Jan 25, 2023) I'm on vacation! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Defensive Programming.
  • Archive Collection: Form Design: (Jan 26, 2023) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Form Design.
  • Archive Collection: Humor: (Jan 27, 2023) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Humor.
  • Archive Collection: Field Descriptions: (Jul 24, 2023) I'm on a short vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy this curated collection of articles. Today's topic: Field Descriptions.
  • Archive Collection: String Functions: (Jan 4, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: String Functions.
  • Archive Collection: Combo Boxes: (Jan 5, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Combo Boxes.
  • Archive Collection: Window Functions: (Jan 6, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Window Functions.
  • Archive Collection: DevCon 2023: (Jan 7, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: DevCon 2023.
  • Archive Collection: Design Functions: (Jan 8, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Design Functions.
  • Archive Collection: Debugging: (Jan 9, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Debugging.
  • Archive Collection: Date Functions: (Jan 10, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Date Functions.
  • Archive Collection: Quick Tips: (May 30, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Quick Tips.
  • Archive Collection: Fluent Interfaces: (May 31, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Fluent Interfaces.
  • Archive Collection: SQL Server: (Jun 1, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: SQL Server.
  • Archive Collection: Nothing: (Jun 3, 2024) I'm on vacation (shh...don't tell anyone)! I'll be back soon, but until then enjoy today's curated collection of articles from the archive. Today's topic: Nothing...
  • ["AutoHotKey" tag page]: Show all articles with the tag "AutoHotKey" (including those where "AutoHotKey" is a secondary tag).
  • Debugging VBA with no Break Key: (Oct 27, 2020) Ever use a keyboard without a Pause/Break key? It's no big deal for most people, but if you develop in VBA it's a huge deal.
  • A Mind-Reading Script: (Oct 28, 2020) What if you could highlight any text, press a hotkey, and have Windows do what you want almost every time? You'd have my top productivity hack.
  • Expand Your Access Palette: (Oct 31, 2020) Use AutoHotkey to bring consistency to your Access color schemes and save time when designing forms.
  • Size Matters: (Nov 1, 2020) Testing your program for small screens? You could change your own monitor's resolution, but that gets annoying real fast. Here's a better way.
  • "Toggle" Hotkey for the Immediate Window: (Nov 18, 2020) Am I the only one who finds it annoying that [Ctl] + [G] doesn't *toggle* between the immediate window and the code window? Let's fix that.
  • Streamlining SaveAsText / LoadFromText: (Mar 19, 2021) SaveAsText and LoadFromText are indispensable for Access version control. They're also annoying to type repeatedly. Let's fix that.
  • Toggle ODBC TraceSQLMode with an AutoHotKey Script: (Mar 14, 2022) Traditional methods of enabling and disabling ODBC TraceSQLMode are a pain in the neck. This AutoHotKey script makes it as easy as pushing a button.
  • ["Basic" tag page]: Show all articles with the tag "Basic" (including those where "Basic" is a secondary tag).
  • ["Best Of" tag page]: Show all articles with the tag "Best Of" (including those where "Best Of" is a secondary tag).
  • My Top 10 Allen Browne Posts: (Nov 11, 2022) If you're a Microsoft Access developer and you've never heard of Allen Browne, then you are in for a treat...
  • My Top 10 Joel Spolsky Posts: (Mar 8, 2023) If you are running a small (or large) software development company, Joel Spolsky should be at the top of your reading list.
  • ["Book Review" tag page]: Show all articles with the tag "Book Review" (including those where "Book Review" is a secondary tag).
  • Code that Fits in Your Head: (Aug 15, 2023) "Code that Fits in Your Head" is to senior software developers what "Code Complete" is to junior software developers. I can think of no higher praise.
  • ["Bug Alert" tag page]: Show all articles with the tag "Bug Alert" (including those where "Bug Alert" is a secondary tag).
  • ["Bug Types" tag page]: Show all articles with the tag "Bug Types" (including those where "Bug Types" is a secondary tag).
  • Syntax Errors: (Aug 5, 2021) Every programming language has its own syntactical quirks. The C family loves braces. Python loves indentation. BASIC loves words. And Perl loves #%@!{}]&.
  • Compile Errors: (Aug 6, 2021) Compile errors are easy to keep out of deployed code (just remember to Debug > Compile). Which is good because they hard crash Access in Runtime mode.
  • Misunderstood Requirements in the Project Design Phase: (Aug 7, 2021) Your client knows what's wrong. They *think* they know how to fix it. But treating symptoms is never as effective as treating the disease.
  • Automated Test Errors (aka, Failing Tests): (Aug 10, 2021) You can have a bug in your code and/or in your test. You're unlikely to have the *same* bug in your code and your test.
  • Logic Errors: (Aug 19, 2021) The logic error is the most dangerous and insidious of all software errors.
  • Runtime Errors: (Aug 20, 2021) It's impossible to predict every possible scenario that could befall our applications in the wild. But we need to at least try.
  • Misunderstood Requirements (After You've Written the Code): (Aug 21, 2021) As you install the final piece of crown molding in the dog's second bedroom, you can't help but smile at the absurdity of it all.
  • "It Runs On My Computer": (Aug 28, 2021) Here are the 7 most common reasons I've had to utter those words as an Access developer.
  • Why You Should Learn to Love Syntax Errors: (Apr 24, 2023) The immediate negative feedback loop that syntax errors provide is a powerful learning tool.
  • ["Business" tag page]: Show all articles with the tag "Business" (including those where "Business" is a secondary tag).
  • ["ChatGPT" tag page]: Show all articles with the tag "ChatGPT" (including those where "ChatGPT" is a secondary tag).
  • Copyright Implications of ChatGPT Content: (Jan 3, 2023) ChatGPT from OpenAI is taking the world by storm. Who owns the ChatGPT output? Can you pass it off as your own? Do you need to acknowledge OpenAI?
  • ChatGPT: (Jan 4, 2023) The personal computer. Google search. The smart phone. Lifelike chat bots. Another generation-defining technology has arrived.
  • My Policy on ChatGPT-Generated Content: (Jan 5, 2023) I plan to use ChatGPT to generate content at NoLongerSet.com. But I plan to do it with full transparency. Here is my pledge to you, dear reader.
  • ChatGPT: Code-Writing Intern, Code-Reading Mentor: (Feb 13, 2024) An exploration of ChatGPT's relative strengths and weaknesses when it comes to writing vs. reading code.
  • ["Class Modules" tag page]: Show all articles with the tag "Class Modules" (including those where "Class Modules" is a secondary tag).
  • ["Code Complete" tag page]: Show all articles with the tag "Code Complete" (including those where "Code Complete" is a secondary tag).
  • ["Code Library" tag page]: Show all articles with the tag "Code Library" (including those where "Code Library" is a secondary tag).
  • ["COM" tag page]: Show all articles with the tag "COM" (including those where "COM" is a secondary tag).
  • ["Combo Boxes" tag page]: Show all articles with the tag "Combo Boxes" (including those where "Combo Boxes" is a secondary tag).
  • ["Commentary" tag page]: Show all articles with the tag "Commentary" (including those where "Commentary" is a secondary tag).
  • ["Conventions" tag page]: Show all articles with the tag "Conventions" (including those where "Conventions" is a secondary tag).
  • VBA Squeeze Box: (Sep 20, 2020) I discussed previously the differences between passing by value and passing by reference. I now want to discuss how and when I use each in my own code.
  • Enum Type Naming Convention: (Oct 9, 2020) The combination of "IntelliSense overload" and "global identifier case changes" convinced me I needed a different approach.
  • Comment Continuations: (Dec 3, 2020) Using ellipses to "group" comments separated by intervening lines of code.
  • Googleable Field Names: (Feb 7, 2021) Using globally unique field and table names will make it easier to identify where such fields and tables are used throughout your application.
  • Beautiful Blocks of Boilerplate: (May 3, 2021) Using the colon character to join multiple lines of code all willy-nilly can lead to messy code. But, used judiciously, it can create beauty from chaos.
  • Database Date Field Naming Convention: (Sep 21, 2021) Naming is hard. When it comes to naming conventions, the key is to keep things simple. Here's how I like to name the date and time fields in my databases.
  • Naming Conventions Matter: Making Wrong Code Look Wrong: (Oct 14, 2021) Joel Spolsky and Antonin Scalia join forces to help illustrate the importance of sensible code naming conventions.
  • My File System Variable Naming Convention for VBA: (Aug 9, 2022) "SourcePath" may be one of the worst variable names ever written. Is it the full path to a source file? Is it the folder where my source files are located?
  • PascalCase All the Things: (Jun 30, 2023) There is only one correct capitalization convention in VBA: PascalCase.
  • ["Debugging" tag page]: Show all articles with the tag "Debugging" (including those where "Debugging" is a secondary tag).
  • ["Deployment" tag page]: Show all articles with the tag "Deployment" (including those where "Deployment" is a secondary tag).
  • ["DevCon" tag page]: Show all articles with the tag "DevCon" (including those where "DevCon" is a secondary tag).
  • ["DoEvents" tag page]: Show all articles with the tag "DoEvents" (including those where "DoEvents" is a secondary tag).
  • ["Email" tag page]: Show all articles with the tag "Email" (including those where "Email" is a secondary tag).
  • ["Events" tag page]: Show all articles with the tag "Events" (including those where "Events" is a secondary tag).
  • The ArrowKeyNav Routine: (May 1, 2021) Enable Excel-like navigation in your continuous forms by overriding the default behavior of the up and down arrow keys.
  • ArrowKeyNav Presentation: (May 6, 2021) A list of resources and further reading to support my presentation on Navigating Continuous Forms using WithEvents.
  • Many Objects, One Class Module: (May 8, 2021) Check out this trick for reducing boilerplate code: maintain a private collection of objects that are instances of the class itself.
  • ComboBox Dropped Down State: (May 10, 2021) Overriding the up/down arrow key behavior improves the user experience on a continuous Access form. But what if the user drops down a combo box?
  • AddNew Increments AutoNumber Fields: (May 11, 2021) Thanks to Ben Clothier, we've got another improvement to our Arrow Key Navigation class.
  • The ArrowKeyNav Journey: (May 20, 2021) A full breakdown of my weArrowKeyNav class module that uses WithEvents to override the default up and down arrow key behavior in continuous Access forms.
  • ["Fluent API" tag page]: Show all articles with the tag "Fluent API" (including those where "Fluent API" is a secondary tag).
  • ["Form Design" tag page]: Show all articles with the tag "Form Design" (including those where "Form Design" is a secondary tag).
  • ["Forms" tag page]: Show all articles with the tag "Forms" (including those where "Forms" is a secondary tag).
  • ["Holiday" tag page]: Show all articles with the tag "Holiday" (including those where "Holiday" is a secondary tag).
  • Merry Christmas: (Dec 25, 2020) "...the shepherds said to one another, 'Let’s go to Bethlehem and see this thing that has happened, which the Lord has told us about.'"
  • Happy Easter: (Apr 4, 2021) “Don’t be alarmed,” he said. "You are looking for Jesus the Nazarene, who was crucified. He has risen! He is not here."
  • Merry Christmas: (Dec 25, 2021) "But the angel said to her, 'Do not be afraid, Mary; you have found favor with God. You will conceive and give birth to a son, and you are to call him Jesus.' "
  • Happy Easter: (Apr 17, 2022) "Why do you look for the living among the dead? He is not here; he has risen!"
  • Merry Christmas: (Dec 25, 2022) "...She will give birth to a son, and you are to give him the name Jesus, because he will save his people from their sins.”
  • Happy Easter: (Apr 9, 2023) “Because you have seen me, you have believed; blessed are those who have not seen and yet have believed.”
  • Merry Christmas: (Dec 25, 2023) "The Word became flesh and made his dwelling among us. We have seen his glory, the glory of the one and only Son..."
  • Happy Easter: (Mar 31, 2024) "Do not be afraid, for I know that you are looking for Jesus, who was crucified. He is not here; he has risen, just as he said."
  • Merry Christmas: (Dec 25, 2024) "For to us a child is born, to us a son is given..."
  • Happy Easter: (Apr 20, 2025) “[Mary] saw two angels in white, seated where Jesus’ body had been…They asked her, ‘Woman, why are you crying?’”
  • Merry Christmas: (Dec 25, 2025) "Then they opened their treasures and presented him with gifts of gold, frankincense, and myrrh."
  • Happy Easter: (Apr 5, 2026) "For since death came through a man, the resurrection of the dead comes also through a man. For as in Adam all die, so in Christ all will be made alive."
  • ["Humorous" tag page]: Show all articles with the tag "Humorous" (including those where "Humorous" is a secondary tag).
  • Reproducing Errors: (Oct 7, 2021) A physicist, a mechanic, and a programmer were in a car driving over a steep alpine pass when the brakes failed...
  • ["Interfaces" tag page]: Show all articles with the tag "Interfaces" (including those where "Interfaces" is a secondary tag).
  • ["Intermediate" tag page]: Show all articles with the tag "Intermediate" (including those where "Intermediate" is a secondary tag).
  • ["Leadership" tag page]: Show all articles with the tag "Leadership" (including those where "Leadership" is a secondary tag).
  • ["List Fields" tag page]: Show all articles with the tag "List Fields" (including those where "List Fields" is a secondary tag).
  • ["Long-Form" tag page]: Show all articles with the tag "Long-Form" (including those where "Long-Form" is a secondary tag).
  • ["Meta" tag page]: Show all articles with the tag "Meta" (including those where "Meta" is a secondary tag).
  • ["Migration" tag page]: Show all articles with the tag "Migration" (including those where "Migration" is a secondary tag).
  • ["Military" tag page]: Show all articles with the tag "Military" (including those where "Military" is a secondary tag).
  • ["Presentations" tag page]: Show all articles with the tag "Presentations" (including those where "Presentations" is a secondary tag).
  • Journey to Access: Part 1: (Sep 25, 2020) Many of the best Microsoft Access applications are written by people with no formal background in software development. Your origin story starts here.
  • Journey to Access: Part 2: (Sep 26, 2020) The weirdos who enjoy spending lots of time to avoid doing mundane tasks that only take a little time have their own special name: programmers. Welcome to our very weird club.
  • Journey to Access: Part 3: (Sep 27, 2020) A morass of Word documents and Excel workbooks--the invasive plant species of the Windows world--overgrowing your file system like so much digital kudzu.
  • One Step at a Time: (Jan 29, 2021) To reach great heights, take small steps.
  • Growing a Business: (Feb 13, 2021) I used to think owning a business was scary. And then I decided to start growing it.
  • Equal Parts Excited and Terrified: (Mar 29, 2021) You know you’ve found a worthy challenge when you are equal parts excited and terrified to take it on. Because that is how you grow.
  • Access DevCon 2021: Day 1: (Apr 22, 2021) If you weren't able to make it to virtual Access DevCon Vienna 2021, here's what you missed on Day 1.
  • Access DevCon 2021: Day 2: (Apr 24, 2021) If you weren't able to make it to virtual Access DevCon Vienna 2021, here's what you missed on Day 2.
  • The Gambler: (Aug 17, 2021) The most consequential piece of business advice I ever received came from the fictional owner of Pritchett's Closets & Blinds.
  • "This feels weird.": (Sep 20, 2021) My nine-year-old son got hit in the head at soccer practice the other day. His reaction reminds me of my own professional software development journey.
  • How to Write a Daily Article: (Nov 4, 2021) Publishing an article every day is not for the faint of heart. But the benefits compound if you can stick with it.
  • UNC Alias for a Local Folder: (Nov 13, 2021) The subst command lets us mimic mapped network drives. But what if your backend tables are linked using UNC paths? Don't worry. We can handle those, too!
  • $5,999: Microsoft's Insane Price for Access 2013: (Jul 20, 2022) Microsoft does not make it easy to buy old versions of Access, even though you need them to distribute compiled .accde files for *still-supported* runtimes.
  • The Robot, the Technician, and the Fixer: (Jul 28, 2022) What type of Microsoft Access developer are you? Being a robot is easy, being a technician is fun, but being a fixer is valuable.
  • Learning From Other Languages: (Nov 17, 2022) Even if you only write code professionally in a single language, learning the concepts and idioms of other languages will make you a better programmer.
  • Learning From Other Coding Styles: (Nov 18, 2022) Will learning multiple coding styles make you a better programmer? And, does it make sense to import those coding styles into your primary language?
  • ["Prompt School" tag page]: Show all articles with the tag "Prompt School" (including those where "Prompt School" is a secondary tag).
  • ["Quick Tip" tag page]: Show all articles with the tag "Quick Tip" (including those where "Quick Tip" is a secondary tag).
  • ["Quotes" tag page]: Show all articles with the tag "Quotes" (including those where "Quotes" is a secondary tag).
  • ["Recap" tag page]: Show all articles with the tag "Recap" (including those where "Recap" is a secondary tag).
  • ["Reports" tag page]: Show all articles with the tag "Reports" (including those where "Reports" is a secondary tag).
  • ["Ribbon" tag page]: Show all articles with the tag "Ribbon" (including those where "Ribbon" is a secondary tag).
  • Good. Better. Best.: (Dec 16, 2020) Take the test to see where your (or someone else's) Access application stands.
  • MS Access Risk Management: (Dec 20, 2020) Applying US Army risk management techniques to assess Microsoft Access application risk.
  • Proving the Concept with Access: (Dec 26, 2020) Committing to a major custom software development project is fraught with risk. Reduce that risk by prototyping in Access first.
  • Securing Your Data: (Feb 8, 2021) Relying on application-level security to protect your data would be like using guard rails to keep out your enemies.
  • Mail: An Allegory: (Feb 14, 2021) Behold, the world's greatest literary allegory since George Orwell penned "Animal Farm."
  • The Allegory Explained: (Feb 15, 2021) What does delivering mail have to do with writing software applications? I'm glad you asked.
  • Cowpathing with Microsoft Access: (Nov 26, 2021) How do you decide where to spend your software development dollars? Don't guess what your users need, let them show you with Access.
  • ["Series" tag page]: Show all articles with the tag "Series" (including those where "Series" is a secondary tag).
  • ["ShowForm" tag page]: Show all articles with the tag "ShowForm" (including those where "ShowForm" is a secondary tag).
  • No Longer Set: (Oct 30, 2020) Signal is information that conveys meaning. Noise obscures that information. The key to writing good software is to maximize signal and minimize noise.
  • When Good Comments Go Bad: (Nov 10, 2020) Bad actors carry out disinformation campaigns to poison our discourse. But when we write code, sometimes we're the bad actors.
  • Signal vs. Noise: Error Handling: (Nov 20, 2020) To boost our signal to noise ratio, we can increase our lines of meaningful code or decrease the lines of boilerplate.
  • Signal vs. Noise: ShowPlan.out Edition: (Mar 16, 2022) Reading showplan.out files can be intimidating for new and experienced Access developers alike. This simple rule will help get you started.
  • ["SQL" tag page]: Show all articles with the tag "SQL" (including those where "SQL" is a secondary tag).
  • ["SQL Azure" tag page]: Show all articles with the tag "SQL Azure" (including those where "SQL Azure" is a secondary tag).
  • ["SQL Server" tag page]: Show all articles with the tag "SQL Server" (including those where "SQL Server" is a secondary tag).
  • ["Subforms" tag page]: Show all articles with the tag "Subforms" (including those where "Subforms" is a secondary tag).
  • ["TempVars" tag page]: Show all articles with the tag "TempVars" (including those where "TempVars" is a secondary tag).
  • ["Testing" tag page]: Show all articles with the tag "Testing" (including those where "Testing" is a secondary tag).
  • Throwback Thursday: June 13, 2024: (Jun 13, 2024) In this inaugural installment of Throwback Thursday, we focus on the intersection of programming, business, and careers (plus some classic XKCD).
  • Throwback Thursday: June 20, 2024: (Jun 20, 2024) Today's edition of Throwback Thursday is all about query tuning in Microsoft Access.
  • Throwback Thursday: June 27, 2024: (Jun 27, 2024) Today's edition of Throwback Thursday is all about naming things, one of the two hard problems in computer science.
  • Throwback Thursday: July 4, 2024: (Jul 4, 2024) Happy Independence Day, America! (Or as my family in Scotland prefers to greet us on this glorious anniversary, "Happy Treason Day, you ungrateful colonists.")
  • Throwback Thursday: July 11, 2024: (Jul 11, 2024) For those new to databases (and seasoned pros), queries are a mind-bogglingly amazing and infuriatingly obstinate tool. These tips help tame the beast.
  • Throwback Thursday: July 18, 2024: (Jul 18, 2024) Today's edition is all about Unicode, character sets, and Windows Alt Codes. It turns out English is NOT the world's only written language. Who knew?!?!
  • Throwback Thursday: July 25, 2024: (Jul 25, 2024) Today's edition of Throwback Thursday is all about the dangers of password reuse and a couple of tools to help you avoid the temptation.
  • Throwback Thursday: August 1, 2024: (Aug 1, 2024) Today's edition of Throwback Thursday explores the paradox of reliable software: better software -> increased user trust -> more potential for harm.
  • Throwback Thursday: August 8, 2024: (Aug 8, 2024) Today's edition of Throwback Thursday is all about pricing and estimating custom software development work.
  • Throwback Thursday: August 15, 2024: (Aug 15, 2024) Teach your VBA editor new tricks: dark mode, a shortcut key for commenting blocks of code, and a probably-too-clever block-comment syntax.
  • Throwback Thursday: August 22, 2024: (Aug 22, 2024) Today's edition is all about controlling how and where Access forms open on your screen.
  • Throwback Thursday: August 29, 2024: (Aug 29, 2024) Today's edition of Throwback Thursday is all about how Access talks to SQL Server. It's much chattier than you realize.
  • Throwback Thursday: September 5, 2024: (Sep 5, 2024) How do non-programmers become Access developers? We explore a common career arc in today's edition of Throwback Thursday.
  • Throwback Thursday: September 12, 2024: (Sep 12, 2024) Today's edition of Throwback Thursday highlights my three most-used string functions: Conc(), Qt(), and Parse(), used to join words, quote words, and extract words.
  • Throwback Thursday: September 19, 2024: (Sep 19, 2024) In today's edition of Throwback Thursday, I revisit the one VBA add-in I can't live without: vbWatchdog.
  • Throwback Thursday: September 26, 2024: (Sep 26, 2024) Short on time? In today's edition of Throwback Thursday, we explore a few of my favorite articles in my Under 100 series--complex topics explained in under 100 words.
  • Throwback Thursday: October 3, 2024: (Oct 3, 2024) In today's edition of Throwback Thursday, we revisit a few of my favorite techniques to keep out of trouble when debugging code and editing live data.
  • Throwback Thursday: October 10, 2024: (Oct 10, 2024) In today's edition of Throwback Thursday, we address Access consultants' biggest fear: the dreaded software proposal.
  • Throwback Thursday: October 17, 2024: (Oct 17, 2024) Today's edition of Throwback Thursday is all about one of my two favorite programming books: "Code That Fits in Your Head," by Mark Seemannn.
  • Throwback Thursday: October 24, 2024: (Oct 24, 2024) In today's edition of Throwback Thursday, we demystify the WithEvents keyword in VBA and then dive deep into some practical uses for it.
  • Throwback Thursday: October 31, 2024: (Oct 31, 2024) In today's edition of Throwback Thursday, we revisit my RegEx wrapper functions for VBA, while looking ahead to a future without VBScript.dll.
  • Throwback Thursday: November 7, 2024: (Nov 7, 2024) Follow along to see how I used Test-Driven Development to replace hard-coded holiday dates with a robust, history-aware date engine in today's edition of Throwback Thursday.
  • Throwback Thursday: November 14, 2024: (Nov 14, 2024) In today's edition of Throwback Thursday, we explore a topic near and dear to my heart: Version Control with Microsoft Access.
  • Throwback Thursday: November 21, 2024: (Nov 21, 2024) In today's edition of Throwback Thursday, we revisit my annual twinBASIC talks at DevCon Vienna in honor of my presentation to the UK Access User Group yesterday.
  • Throwback Thursday: November 28, 2024: (Nov 28, 2024) Discover three mindset shifts that can transform you from a developer into a high-value consultant in today's edition of Throwback Thursday.
  • Throwback Thursday: December 5, 2024: (Dec 5, 2024) Learn how to enhance TempVars with type safety, IntelliSense, and compile-time checking in today's edition of Throwback Thursday.
  • Throwback Thursday: December 12, 2024: (Dec 12, 2024) Check out my three most-used everyday tools in today's edition of Throwback Thursday.
  • Throwback Thursday: December 19, 2024: (Dec 19, 2024) How do you loop by month in VBA? Coding it clearly is surprisingly difficult. We explore several approaches in today's edition of Throwback Thursday.
  • Throwback Thursday: December 26, 2024: (Dec 26, 2024) In today's edition of Throwback Thursday, we tackle every programmer's favorite topic: Technical Debt.
  • Throwback Thursday: January 2, 2025: (Jan 2, 2025) In today's edition of Throwback Thursday, we revisit some of my favorite Allen Browne-inspired articles.
  • Throwback Thursday: January 9, 2025: (Jan 9, 2025) Today's edition of Throwback Thursday is all about the DoEvents function: What it is; Where to use it; When to use it; Why it works; and How it works.
  • Throwback Thursday: January 16, 2025: (Jan 16, 2025) We explore the value of learning other programming languages and incorporating elements from them into VBA in today's edition of Throwback Thursday.
  • Throwback Thursday: January 23, 2025: (Jan 23, 2025) We dive into the difference between IIf() and IIf()--that's not a typo--in today's edition of Throwback Thursday.
  • Throwback Thursday: January 30, 2025: (Jan 30, 2025) In today's edition of Throwback Thursday, we dive into one of my core programming principles: some bugs are better than others (with a "real-life" lesson from Office Space).
  • Throwback Thursday: February 6, 2025: (Feb 6, 2025) We dive into the deep end of debugging VBA in today's edition of Throwback Thursday. We cover the Watch window, including how to avoid some nasty performance side effects.
  • Throwback Thursday: February 13, 2025: (Feb 13, 2025) In today's edition of Throwback Thursday, we explore the greatest gift we can give to future programmers: writing readable code.
  • Throwback Thursday: February 20, 2025: (Feb 20, 2025) In today's edition of Throwback Thursday, we explore a few of my favorite AutoHotkey scripts for Access development.
  • Throwback Thursday: February 27, 2025: (Feb 27, 2025) Today's edition of Throwback Thursday is all about 64-bit VBA: updating your 32-bit code to run in 64-bit, 32 vs. 64-bit Office, and tools to help with the conversion.
  • Throwback Thursday: March 6, 2025: (Mar 6, 2025) Today's edition of Throwback Thursday is chock full of tips and tricks to emulate your client's production environment during development.
  • Throwback Thursday: March 13, 2025: (Mar 13, 2025) Today's edition of Throwback Thursday is about one of VBA's most underappreciated features: the humble Enum statement.
  • Throwback Thursday: March 20, 2025: (Mar 20, 2025) In today's edition of Throwback Thursday, we explore the role of "feature gates" (aka, "feature flags") in Microsoft Access (and Microsoft Office more broadly).
  • Throwback Thursday: March 27, 2025: (Mar 27, 2025) In today's edition of Throwback Thursday, we explore how to create GUIDs in your Access applications and how you can use them to simplify creating temporary files.
  • Throwback Thursday: April 3, 2025: (Apr 3, 2025) In today's edition of Throwback Thursday, we look back at past Access DevCon Vienna conferences (and forward to next week's conference).
  • Throwback Thursday: April 10, 2025: (Apr 10, 2025) Today's edition of Throwback Thursday is all about testing: Python-inspired doc tests, my B-BEAR quick and dirty T-SQL test technique, and a proper SQL Server unit testing tool.
  • Throwback Thursday: April 17, 2025: (Apr 17, 2025) "Boring is beautiful." In today's Throwback Thursday, we're confronted with the uncomfortable truth that the best software is often uninteresting to write.
  • Throwback Thursday: April 24, 2025: (Apr 24, 2025) Today's edition of Throwback Thursday is all about building file names, verifying folder paths, and other related file system activities.
  • Throwback Thursday: May 1, 2025: (May 1, 2025) In this week's edition of Throwback Thursday, we explore the magic of "self-healing" object variables and caching in VBA.
  • Throwback Thursday: May 8, 2025: (May 8, 2025) Today's edition of Throwback Thursday is all about scripting major SQL Server operations like backing up, cloning databases, and server migrations.
  • Throwback Thursday: May 15, 2025: (May 15, 2025) This week's Throwback Thursday article features tips, tricks, and tools for tracking down hard-to-diagnose bugs.
  • Throwback Thursday: May 22, 2025: (May 22, 2025) We revisit one of my all-time favorite articles in today's edition of Throwback Thursday. The topic is dry (LLCs, S Corps, and C Corps, oh my!), but the writing is not.
  • Throwback Thursday: May 29, 2025: (May 29, 2025) In today's edition of Throwback Thursday, we revisit one of my favorite techniques: guard clauses--my secret weapon for avoiding Dante Alighieri-levels of nesting.
  • Throwback Thursday: June 5, 2025: (Jun 5, 2025) In today's edition of Throwback Thursday, we explore two common data structures used to store multiple objects in VBA: Collections and Dictionaries.
  • Throwback Thursday: June 12, 2025: (Jun 12, 2025) Today's edition of Throwback Thursday is an homage to the "citizen developer"--largely responsible for Access's 30-year domination in the desktop database market.
  • Throwback Thursday: June 19, 2025: (Jun 19, 2025) This week's edition of Throwback Thursday is all about the tool we use to track hours at my software development company (plus how--and why--we got here).
  • Throwback Thursday: June 27, 2025: (Jun 26, 2025) Today's edition of Throwback Thursday is an homage to the fine art of software maintenance...and how we can make this thankless chore easier on our future selves.
  • Throwback Thursday: July 3, 2025: (Jul 3, 2025) Today's edition of Throwback Thursday is a deep dive into an underused tool in the VBA debugging toolkit: the Watch Window.
  • Throwback Thursday: July 10, 2025: (Jul 10, 2025) Today's edition of Throwback Thursday explores a structured approach to safely rewrite a complex VBA function as a lightning-quick SQL Server scalar function.
  • Throwback Thursday: July 17, 2025: (Jul 17, 2025) In today's edition of Throwback Thursday, we explore several techniques for looping and grouping by month in Access and SQL Server.
  • Throwback Thursday: July 24, 2025: (Jul 24, 2025) In today's Throwback Thursday, we revisit several clever tricks to create consistent development environments across multiple devices and users.
  • Throwback Thursday: August 7, 2025: (Aug 7, 2025) We dive into the mysterious and wonderful world of the hidden Access WizHook object in today's edition of Throwback Thursday.
  • Throwback Thursday: August 14, 2025: (Aug 14, 2025) In today's edition of Throwback Thursday, we resurface some of Access and VBA's most deeply "hidden" features.
  • Throwback Thursday: August 21, 2025: (Aug 21, 2025) Today's edition of Throwback Thursday uncovers Access's secret superpower: proving whether your custom software project is worth pursuing at all.
  • Throwback Thursday: August 28, 2025: (Aug 28, 2025) In today's edition of Throwback Thursday, we explore three different ways to determine the type of a variable in VBA.
  • Throwback Thursday: September 4, 2025: (Sep 4, 2025) Setting up a new SQL Server instance? Today's edition of Throwback Thursday is a one-stop shop for all your configuration, connection, and automated backup needs.
  • Throwback Thursday: September 11, 2025: (Sep 11, 2025) In this epoch edition of Throwback Thursday, we explore several key compatibility considerations between Access and SQL Server.
  • Throwback Thursday: September 18, 2025: (Sep 18, 2025) In this week's edition of Throwback Thursday, we explore the value of Abbreviation columns in lookup tables, how to automate populating them, and why they improve your apps.
  • Throwback Thursday: September 25, 2025: (Sep 25, 2025) Today's edition of Throwback Thursday is all about knowing when (and how) to convert a fit-for-purpose procedure into a generic, reusable routine.
  • Throwback Thursday: October 2, 2025: (Oct 2, 2025) Today's edition of Throwback Thursday is all about subtlety. The subtle differences between + and &; between . and !; between IsNull() and Is Null; and between IIf and IIf.
  • Throwback Thursday: October 9, 2025: (Oct 9, 2025) In today's edition of Throwback Thursday, we look back at a few tips for staying out of trouble when writing one-off or temporary code.
  • Throwback Thursday: October 16, 2025: (Oct 16, 2025) In today's edition of Throwback Thursday, we revisit one of my most popular functions--NewSort()--which enables easy sorting of columns in continuous forms.
  • Throwback Thursday: October 23, 2025: (Oct 23, 2025) In today's edition of Throwback Thursday, we revisit another of my most popular functions--Pluralize()--which lets you adapt your string(s) ... <- to avoid this ugliness.
  • Throwback Thursday: October 30, 2025: (Oct 30, 2025) In today's edition of Throwback Thursday, we revisit my presentation on building ribbon interfaces in code, along with other ribbon-related goodies.
  • Throwback Thursday: November 6, 2025: (Nov 6, 2025) Report captions add polish to your Access applications. In today's edition of Throwback Thursday, we resurface some tips and techniques to make them easier to manage.
  • Throwback Thursday: November 13, 2025: (Nov 13, 2025) In today's edition of Throwback Thursday, we revisit some tips and techniques for dealing with debugging challenges that have vexed me over the years.
  • Throwback Thursday: November 20, 2025: (Nov 20, 2025) In today's Throwback Thursday, we revisit one of my favorite VBA hacks: a hidden attribute that unlocks IntelliSense when looping through a collection of custom class instances.
  • Throwback Thursday: November 27, 2025: (Nov 27, 2025) In today's edition of Throwback Thursday, we revisit my B-BEAR technique (Begin, Before, Execute, After, Rollback): the only way I make live changes to SQL Server production data.
  • Throwback Thursday: December 4, 2025: (Dec 4, 2025) In today's edition of Throwback Thursday, we explore how you can deliver more value to your clients as an Access developer.
  • Throwback Thursday: December 11, 2025: (Dec 11, 2025) Today's edition of Throwback Thursday is a reminder not to undervalue what you know and can do with Microsoft Access (no matter what you might hear on Stack Overflow).
  • Throwback Thursday: December 18, 2025: (Dec 18, 2025) Freshen up your Access forms and take your checkboxes to the next level with these modern on/off buttons in today's edition of Throwback Thursday.
  • Throwback Thursday: January 1, 2026: (Jan 1, 2026) When you think of Access, should you think of emoji? In today's edition of Throwback Thursday, all signs point to yes.
  • Throwback Thursday: January 8, 2026: (Jan 8, 2026) In today's edition of Throwback Thursday, we revisit a technique that lets you pause code until a form or report is closed--without some of the drawbacks of dialog forms.
  • Throwback Thursday: January 15, 2026: (Jan 15, 2026) In today's edition of Throwback Thursday, we explore the subtleties of storing and displaying time spans in Microsoft Access.
  • Throwback Thursday: January 22, 2026: (Jan 22, 2026) In today's edition of Throwback Thursday, we revisit how to handle "untrappable" Access errors via the Form Error event.
  • Throwback Thursday: January 29, 2026: (Jan 29, 2026) In today's edition of Throwback Thursday, we revisit one of my favorite analogies for comparing traditional Access "version control" with real text-based version control.
  • Throwback Thursday: February 5, 2026: (Feb 5, 2026) In today's edition of Throwback Thursday, we revisit my article on Documentation-First Development--an increasingly useful concept in the age of AI-assisted development.
  • Throwback Thursday: February 12, 2026: (Feb 12, 2026) In today's edition of Throwback Thursday, we review one of the most important concepts in SQL Server security: role-based access control.
  • Throwback Thursday: February 20, 2026: (Feb 19, 2026) Take your VBA string-building skills to the next level in today's edition of Throwback Thursday.
  • Throwback Thursday: February 26, 2026: (Feb 26, 2026) In today's edition of Throwback Thursday, we explore the wonderful, mysterious world of COM, the tech that allows us to automate Excel from Access.
  • Throwback Thursday: March 5, 2026: (Mar 5, 2026) Today's edition of Throwback Thursday is all about autonumbers and primary keys.
  • Throwback Thursday: March 12, 2026: (Mar 12, 2026) With the coming end of life of SQL Server 2016, we revisit a few articles with tips on scripting those migrations In today's edition of Throwback Thursday.
  • Throwback Thursday: March 19, 2026: (Mar 19, 2026) In today's edition of Throwback Thursday, we revisit a few articles on VBA's most powerful underused feature: class modules.
  • Throwback Thursday: March 26, 2026: (Mar 26, 2026) In today's edition of Throwback Thursday, we review some common gotchas of the SQL BETWEEN statement and how to avoid falling victim to these potential logic errors.
  • Throwback Thursday: April 2, 2026: (Apr 2, 2026) In today's edition of Throwback Thursday, we revisit some of the problems with global constants in VBA and my preferred alternative.
  • Throwback Thursday: April 9, 2026: (Apr 9, 2026) In today's edition of Throwback Thursday, we revisit some foundational articles on twinBASIC to get you ready for next week's annual DevCon Vienna conference.
  • Throwback Thursday: April 16, 2026: (Apr 16, 2026) In today's edition of Throwback Thursday, we revisit some advanced articles on twinBASIC to get you ready for my talk tomorrow at DevCon Vienna 2026.
  • Throwback Thursday: April 23, 2026: (Apr 23, 2026) Today's edition of Throwback Thursday revisits the pitfalls of leaving old code and database fields around and answers the question, "What could it hurt?"
  • Throwback Thursday: April 30, 2026: (Apr 30, 2026) In today's edition of Throwback Thursday, we revisit the bane of my VBA coding existence: the IDE's case-changing "feature."
  • Throwback Thursday: May 7, 2026: (May 7, 2026) In today's edition of Throwback Thursday, we revisit a few articles on VBA memory management and the "Large Address Aware" (LAA) flag in Microsoft Access.
  • Throwback Thursday: May 28, 2026: (May 28, 2026) In today's edition of Throwback Thursday, we explore different techniques for incorporating emoji and other visual glyphs into your Access applications.
  • Throwback Thursday: June 4, 2026: (Jun 4, 2026) This week's edition of Throwback Thursday has several tips to help you hide or obscure sensitive data from those who need not see it.
  • ["Tools" tag page]: Show all articles with the tag "Tools" (including those where "Tools" is a secondary tag).

All original code samples by Mike Wolfe are licensed under CC BY 4.0