Access DevCon Vienna 2023 - Day Two Recap

Day Two of the Access DevCon Vienna conference was a worthy successor to Day One.

A couple of speakers ran into some technical problems: Crystal Long's PowerPoint wouldn't cooperate with her and Karl Donaubauer lost audio for several minutes of his presentation.  These issues may have flustered more inexperienced speakers, but Crystal and Karl are both pros who adjusted on the fly without missing a beat.  In the end, these incidents lightened the mood and provided some comic relief, rather than detracting from the conference experience.

As I did with day one's presentations, I'll provide a brief synopsis of each talk in the post below and follow up with more in-depth articles on individual presentations in the future.

Automatic Form Resizing

Access MVP Colin Riddington presented his advanced Form Resizing code in the first session of the day.

Colin's code is a (massive) expansion of the original work done by Jamie Czernik: Creating a Resolution Independent Microsoft Access Application.

The first part of Colin's talk was about the latest features he's added to his Automatic Form Resizing (AFR) code:

  • High-resolution monitor support
  • Better portrait monitor support
  • Stretching and shrinking forms on the fly
  • Refreshing after a resolution/monitor change
  • Command button image scaling

Colin then jumped into some demonstrations, including how to retro-fit AFR code into existing applications.

Colin created a dedicated page on his website with links and resources related to his talk:

Making Automatic Form Resizing Work for You

Making Automatic Form Resizing Work For You
This article has a copy of my presentation and supporting materials for my session on automatic form resizing to the Access DevCon conference on 28 April 2023

Access in an Azure VM

Denver Area Access User Group (DAAUG) president, George Young, spoke about hosting Access applications in a cloud-based virtual machine.

George framed his talk around figuring out Access's place in an increasingly cloud-first/mobile-first world.  While most of our users continue to use Access on traditional desktop or laptop workstations connected to an on-premise local area network, there's no question that the business world is rapidly evolving.  Especially in the wake of COVID-19, more companies are embracing work from home/hybrid options as well as bring-your-own-device (BYOD) policies.  Both trends benefit from having a cloud-based Microsoft Access solution.

As part of his talk, George reviewed the steps needed to run Access in a virtual machine:

  1. Create an Azure Virtual Machine
  2. Set up Access in the VM (via Microsoft 365, Office Perpetual, or the Access Runtime)
  3. Deploy your Access application to the VM

Much of the conversation in chat centered around licensing, including Microsoft's apparent goal to make licensing as difficult to understand and comply with as possible.

For his part, George did a good job of providing pricing information for a couple of common scenarios, but the devil is in the details when figuring out how to make everything work in your own (or your client's) environment.

Here are George's bullet points regarding Pricing:

  • Virtual Machine starting at around $50 / month
  • Windows Server starting at around $90 / month
  • Windows Server licenses (> 2 concurrent users) around $50 / onetime per user
  • Machine not billed while turned off
  • Can reduce cost by turning machine off (and on) automatically
    • For example a $90 VM would be $25 at 8 hrs/day, 5 days/week
  • Azure SQLDB starts at $5 / month

I will dive into the details more when I cover George's talk more in-depth in a future article.  In the meantime, you can catch George's previous talk about Access in a cloud-based virtual machine on the DAAUG YouTube channel:

All About Access in an Azure VM

Advanced Database Design

Longtime Access MVP, Armen Stein, gave a master class on database design concepts.

Armen covered the following topics:

  1. Handling static data
  2. Powerful permissions
  3. Storing flexible data
  4. Recording users’ actions
  5. Logging steps in a complex process
  6. Recording values used in complex calculations

The following themes came up throughout the talk:

  • Don't paint yourself into a corner with your database design
  • Don't write code against data that users can change
  • Expected business changes should not require changes to the code
  • Strong and consistent naming conventions help avoid mistakes

As owner of one of the largest Microsoft Access development companies, Armen understands the value of having strong design fundamentals and sticking to them.  As the owner of a much smaller–but growing–Access development company, I found this to be the most valuable session of the conference.

Draw Gadgets on Access Reports

Crystal Long, the resident Access drawing expert, presented a talk on how to build graphics for Access reports using only the built-in drawing methods.

While some of her graphics were more fun than practical (snowmen and snowflakes!), she included several graphics that could be used to improve the visual appeal of your Access reports:

  • Dials with a needle pointing to a fractional value
  • Circular meters (similar in appearance to doughnut charts)
  • Stoplights
Dials
Circular meters
Stoplights

The nice thing about each of the above graphics is that Crystal provides a single subroutine call so that it's dead simple to include these graphics on your own reports.

Here's a link to Crystal's page with information related to her presentation, including a copy of her slide deck: Draw Gadgets on Access Reports using VBA.

Draw Gadgets on Access Reports using VBA
Draw Gadgets and Meters on Access Reports using easy-to-call VBA

Package Manager

If you are familiar with the .NET framework, you have likely used NuGet.  

NuGet is a package manager that simplifies the tasks of finding, downloading, installing, and updating libraries and add-ins for your .NET projects.  Most modern programming languages have their own implementation of a package manager:

  • .NET: NuGet
  • Java: Maven/Gradle/Ivy
  • Python: PyPI (the Python Package Index)
  • G0: pkg.go.dev

It will come as no surprise to this audience to learn that neither VBA nor Access has a package manager.  

Kevin Bell and Karl Donaubauer teamed up to propose that the community should come together to do something about that.  Kevin Bell has extensive experience as a tool developer, providing the following Access add-ins via his website accessui.com:

The two each reviewed the years of stagnation when it comes to official feature releases from the Access team, the highly fractured existing marketplace for custom tools and addins, and the negative impact the lack of a package manager has had on the Access/VBA ecosystem.

They described the features an Access/VBA package manager would need to support, listed several of the challenges in building such a package manager from scratch, and then surveyed the attendees for anyone who might be interested in joining forces to build a package manager for Access and VBA.

It's a tall order, made all the more difficult by the lack of interest Microsoft has for supporting such an effort internally.  Depending on the feedback from the attendees, a new community working group may be formed to look into the feasibility of building a package manager.  If you have interest in joining the effort, drop a comment below or contact me directly at mike@nolongerset.com.

UPDATE [2023-05-02]: Removed the reference to George Young as an Access MVP.  He does not currently hold that title.

UPDATE [2023-05-08]: Corrected Mr. Czernik's first name.  He is, in fact, Jamie and not Peter.  My apologies for the mistake. (h/t Colin Riddington)