Logical operators have an order of precedence just like mathemetical operators. AND takes precedence over OR, so you CASE statement is being evaluated as:
Case
When (tblOperatingsystem.Version Like '1809' And tblSoftware.softwareVersion Like '5.4.%')
Or tblSoftware.softwareVersion Like '4.8.%'
Or tblSoftware.softwareVersion Like '4.7.%'
Or tblSoftware.softwareVersion Like '4.6.%'
Or tblSoftware.softwareVersion Like '4.5.%'
Or tblSoftware.softwareVersion Like '4.4.%'
Then 'Not Compatable'
End compat2,
Just as you can force A + B * C to be evaluated as (A + B) * C by using parentheses, you can do the same with logical operators. Block the version check in parentheses and you should get the results you're expecting:
Case
When tblOperatingsystem.Version Like '1809'
And (tblSoftware.softwareVersion Like '5.4.%'
Or tblSoftware.softwareVersion Like '4.8.%'
Or tblSoftware.softwareVersion Like '4.7.%'
Or tblSoftware.softwareVersion Like '4.6.%'
Or tblSoftware.softwareVersion Like '4.5.%'
Or tblSoftware.softwareVersion Like '4.4.%'
)
Then 'Not Compatable'
End compat2,