Access Version Control Add-in Deep Dive with Adam Waller

Ever struggled with multiple developers working on the same Access database without overwriting each other's changes?

In this comprehensive Access Pacific presentation, Adam Waller walks through his nine-year journey developing a robust version control system specifically designed for Microsoft Access. Starting from Brendan Kidwell's 2012 foundation scripts, Adam transformed a basic export utility into a sophisticated add-in that enables true source control for Access applications. The presentation covers the technical evolution of the system, from performance optimizations and file sanitization to ribbon integration and live merge capabilities.

Whether you're tired of emailing database files back and forth or ready to embrace professional development workflows with Git, this deep dive into Access version control will show you exactly how to modernize your Access development process.

Project Evolution and Background

Historical Foundation

  • Project originated from Brendan Kidwell's 2012 VBA scripts for automating Access's save-as-text functions
  • Adam forked the repository in 2015 and began major revamps
  • Converted from standalone scripts to a full Access add-in
  • Implemented extensive sanitization functions to remove noise from exported files

Major Version Milestones

  • Version 2 (2020): Added user interface instead of debug window output, included installer
  • Version 3 (2020): Full build-from-source capability - can rebuild entire database from text files
  • Version 4 (2024): Major rewrite with performance improvements, ribbon integration, and merge functionality

Community Contribution

  • Open source project hosted on GitHub with multiple contributors
  • Built using the add-in's own version control system
  • Collaborative development through pull requests and community feedback

Core Functionality Demo

Export Process

  • One-click export of all database objects to text-based source files
  • Creates organized folder structure with separate directories for forms, reports, queries, modules
  • Incremental exports scan for changes in approximately 1 second vs. full exports taking 8+ seconds
  • Optional table data export in XML format for configuration tables

Build from Source

  • Complete database reconstruction from exported text files
  • Can build new database file when no database is currently open
  • Automatic backup creation before any build operation
  • Preserves all object properties, relationships, and configurations

File Organization

  • Default .src folder created alongside database file
  • Separate folders for different object types (tables, forms, queries, modules, reports)
  • Table definitions separate from table data
  • Version control index file (vcsindex.json) tracks file states for performance optimization

Technical Highlights

File Sanitization System

  • Problem: Raw Access exports contain changing checksums, border colors, and metadata that create false differences
  • Solution: Sophisticated sanitization engine removes noise while preserving essential information
  • VBA Code Cleaning: Normalizes tabs/spaces and formatting for consistent output
  • XML Formatting: XSD transformation creates properly indented, readable XML files
  • Result: 95% reduction in false-positive changes during file comparisons

Ribbon Integration with TwinBasic

  • Challenge: Traditional add-ins require complex COM registration and version-specific compilation
  • Solution: TwinBasic-based COM add-in providing native ribbon integration
  • Benefits: Single DLL works across Access 2010 through current versions, both 32-bit and 64-bit
  • Architecture: Lightweight wrapper passes commands to main VBA add-in for processing
  • Source Code: Full TwinBasic project and ribbon XML available in GitHub repository

Live Merge Capability

  • Innovation: Update individual objects without rebuilding entire database
  • Process: Compares source files to current database state and merges only changed objects
  • Conflict Resolution: Built-in diff tool integration (WinMerge, VS Code) for handling conflicts
  • Performance: Updates single objects in seconds rather than full database rebuilds
  • Use Case: Critical for large databases with hundreds of objects and thousands of lines of code

Performance Optimization Framework

  • Measurement: High-precision timing using kernel-level APIs
  • Reporting: Detailed performance logs showing time spent by category and operation
  • Bottleneck Identification: Pinpoints slow operations for targeted optimization
  • Reusable Classes: Standalone performance monitoring classes for any VBA project
  • Results: Dramatic improvements in export/import speeds through targeted optimizations

Advanced Features

Build Order Management

  • Issue: Forms and queries with VBA functions fail if modules aren't loaded first
  • Solution: Configurable object processing order in Mod_VCS_Utility.GetContainers function
  • Customization: Easily modified to prioritize modules before queries and forms
  • Impact: Prevents Access IDE issues with auto-generated object properties

Supported Objects

  • All Access object types including tables, queries, forms, reports, macros
  • Extended properties, hidden attributes, relationships
  • Saved import/export specifications, navigation pane groups
  • Application icons, print settings, embedded Office themes
  • Command bars (in development)
  • ADP project compatibility

Git Integration Hooks

  • GitHub Desktop compatibility for user-friendly Git operations
  • Built-in Git command integration for repository status checks
  • Automation hooks for extending workflow beyond basic export/import
  • Foundation for future enhanced Git integration tools

Development Best Practices

Version Compatibility

  • Minimum: Access 2010
  • Maximum: Current Access 365 versions
  • Architecture: Works with both 32-bit and 64-bit installations
  • File Format: Compatible with .accdb, .mdb, and .adp formats

Team Collaboration

  • Workflow: Standard Git branching and merging strategies
  • Conflict Resolution: Visual diff tools for resolving merge conflicts
  • Backup Safety: Automatic backup creation before any destructive operations
  • Incremental Updates: Fast change detection for efficient team synchronization

Database Structure Considerations

  • Front-end Focus: Primarily designed for front-end database objects
  • Linked Tables: Exports table definitions but not back-end data by default
  • Configuration Data: Option to include front-end table data for settings and configurations
  • Split Databases: Works seamlessly with traditional Access front-end/back-end architecture

Future Development and Microsoft Integration

Microsoft's Plans

  • Microsoft announced intentions to restore built-in source control functionality
  • Timeline estimates suggest approximately one year for concrete implementation
  • Potential API exposure for third-party tools to work more efficiently
  • Official support for currently undocumented functions

Community Tool Advantages

  • Responsiveness: Community-driven development addresses real-world needs quickly
  • Customization: Open source allows for specific workflow adaptations
  • Purpose-Built: Developer-focused features not necessarily in Microsoft's scope
  • Proven Track Record: Nine years of refinement and real-world testing

Planned Enhancements

  • User interface localization for international developer communities
  • Enhanced Git integration with push/pull operations directly in Access
  • Additional object type support as Access evolves
  • Performance improvements based on community feedback

Conclusion

Adam Waller's Access version control add-in represents nearly a decade of community-driven innovation addressing a critical gap in Access development tooling. The presentation showcased not just the current capabilities, but the thoughtful engineering approach that makes professional Access development workflows possible. With features like intelligent file sanitization, live merge capabilities, and comprehensive Git integration, the tool transforms Access from a single-developer platform into a truly collaborative development environment.

Recording

The full recording is available on YouTube:

Join Live!

Want to get even more out of these presentations? Join the live Access User Group events! The next upcoming events are listed on the AUG Event Calendar.

Attending live gives you the opportunity to:

  • Interact directly with presenters during Q&A sessions
  • Network with other Access developers
  • Share your own experiences and challenges
  • Get immediate answers to your specific questions
  • Participate in group discussions

With multiple user groups across different time zones (and languages!), you're sure to find a meeting time that works for your schedule.

Acknowledgements

  • Base cover image generated by FLUX-schnell
  • Initial draft generated by Claude-Sonnet-4