Category Archives: Uncategorized

Year-End Thoughts and Good Vibes

It’s been a full year of building, fixing, and tinkering with some wins, some weird bugs, and probably a quite a few “why is this even happening?” moments along the way. That’s the life of an Access developer, and honestly, it keeps things interesting.

As we head towards 2026, I just want to say thanks to everyone who drops by, reads a post, shares a tip, or just keeps the Access spirit alive. This community is small but mighty and still making great things happen with a tool that refuses to fade.

Here’s to more curiosity, more creative solutions, and maybe even a little less debugging in the year ahead. Have a restful break and see you all in the new year.

Cheers to you and the Access adventures still to come in 2026!

Windows 11 Where Are My Shortcut Labels???

So, not only was Microsoft kind enough to cram Windows 11 down my throat forcibly without my consent last night

but this was my desktop this morning!
 
Continue reading

Using RegEx To Validate A URL

In my last post I shared an example of how we can use RegEx to validate a Password to ensure it followed some minimum rules we set forth, to learn more simply consult:

Today, I thought I’d share another RegEx example to validate URLs! This is a great way to control with what users input in your forms and hopefully ensure that they are valid.
 
Continue reading

When Is Microsoft Access Not The Right Choice?

Decision - Yes/No

Ever wonder when you should actually avoid using Microsoft Access?

Hey, don’t get me wrong, Access is a great product, but it can’t do it all and a good developer needs to recognize limitations and select to use alternate technologies if/when required by the mandate.

In this discussion, I am talking about using Access for both the Front-End and Back-End.

Continue reading

New Windows YouTube Playlist

Some of you may have already noticed, but this week I launched a new YouTube Playlist entitled ‘Microsoft Windows Tutorials‘. You can access that specific Playlist by using the following link:

Continue reading

Experts Exchange – Most Valuable Expert

Experts Exchange – 2022 Most Valuable Expert Award

I have the pleasure of announcing that I have been awarded the Most Valuable Expert (MVE) award from Experts Exchange for the past year, 2022.

If you are interested you can view all the different awards and awardees by reviewing:

 

Continue reading

My First Venture Into Using Flow

For months, if not years, MS and certain fellow MVPs have been promoting the virtues of Microsoft Flow. Until recently, I simply never had a reason to even look at it as I had no need for any of its supposed capabilities. That said, working on a new project for one of my clients and a new request by my client made me look into one particular aspect of Flow, the MySQL Connector.

My Goal

In the scenario we are talking about in this posting, I had a pretty simple MySQL database in which we wanted to create a table to save information relating to incoming and outgoing e-mails. Now since their e-mails are all through Office 365 and Flow now offers a PREMIUM (you pay extra for) MySQL connector, I had all the ingredients to make a go of things.

My Actual Experience

Continue reading

Managing User-Level Security in Access 2007+

Here’s another question I see pop up from time to time in the Forums.

Since Microsoft did away with User-Level Security (ULS) in Access 2007+, people often wonder how they can manage ULS; add/remove users, change password, …?

The reality of the situation is that although the commands are not front and center, ie they aren’t listed in the Ribbon anywhere, they are still actually there.  Just hidden!

So the question becomes, how can we access them?

Well, there are 2 ways to do this:

  • Issue the VBA commands directly
  • Customizing the Ribbon

Continue reading

VBA – Is PC Accessible? Can The Server/PC/… be PINGed?

Doorbell

A recent discussion between MVPs made me retrieve an old piece of code I had and thought it might serves others.

Certain code can rely on external servers/PC/… (think of table relinking, external attachments, …) and if they fail to connect, we often get errors that do not properly reflect the real issue. As such, it make sense, prior to trying to work with an external component, that we first validate that we can communicate with it. In networks where PINGing is enabled, the following function will permit you to determine if the component is accessible or not.

'---------------------------------------------------------------------------------------
' Procedure : PC_IsAccessible
' Author    : Daniel Pineault, CARDA Consultants Inc.
' Website   : http://www.cardaconsultants.com
' Purpose   : Determine if a PC is reacheable by validating if it can be PINGed
' Copyright : The following is release as Attribution-ShareAlike 4.0 International
'             (CC BY-SA 4.0) - https://creativecommons.org/licenses/by-sa/4.0/
' Req'd Refs: Uses Late Binding, so none required
' Refs      : https://docs.microsoft.com/en-us/previous-versions/windows/desktop/wmipicmp/win32-pingstatus
'
' Input Variables:
' ~~~~~~~~~~~~~~~~
' sHost     : IP address or Name of the PC to ping against
'
' Output
' ~~~~~~
' The function returns a boolean value
'   True    = PC could be reached successfully
'   False   = PC could not be reached
'
' Usage:
' ~~~~~~
' PC_IsAccessible("192.168.0.1")
'
' Revision History:
' Rev       Date(yyyy/mm/dd)        Description
' **************************************************************************************
' 1         2016-01-11              Initial Release
' 2         2019-05-05              Header Updated
'                                   Code cleanup
'                                   Error Handler Updated
'---------------------------------------------------------------------------------------
Function PC_IsAccessible(sHost As String) As Boolean
    On Error GoTo Error_Handler
    Dim oWMI                  As Object
    Dim oPingStatuses         As Object
    Dim oPingStatus           As Object
    Dim sSQL                  As String

    Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
    sSQL = "SELECT * FROM Win32_PingStatus WHERE Address='" & sHost & "'"
    Set oPingStatuses = oWMI.ExecQuery(sSQL)
    For Each oPingStatus In oPingStatuses
        If oPingStatus.StatusCode = 0 Then
            PC_IsAccessible = True
            Exit For
        End If
    Next

Error_Handler_Exit:
    On Error Resume Next
    If Not oPingStatus Is Nothing Then Set oPingStatus = Nothing
    If Not oPingStatuses Is Nothing Then Set oPingStatuses = Nothing
    If Not oWMI Is Nothing Then Set oWMI = Nothing
    Exit Function

Error_Handler:
    MsgBox "The following error has occurred" & vbCrLf & vbCrLf & _
           "Error Number: " & Err.Number & vbCrLf & _
           "Error Source: PC_IsAccessible" & vbCrLf & _
           "Error Description: " & Err.Description & _
           Switch(Erl = 0, "", Erl <> 0, vbCrLf & "Line No: " & Erl) _
           , vbOKOnly + vbCritical, "An Error has Occurred!"
    Resume Error_Handler_Exit
End Function