MGT Computer Solutions >> Services >> Custom Programming >> BASIC >> VBA for MS-Access
Public Function GetVersion(Optional pStrApplicationFile As String) As String
' retrieves the Version attribute from the FrontEndAttributes table in a specified database
' defaults to the local database; a remote database may be specified in the parameter
' function has the SIDE EFFECT of setting global variable ApplicationVersion
On Error GoTo GetVersionError
' accept parameter, apply default
Dim strApplicationFile As String
strApplicationFile = pStrApplicationFile
If strApplicationFile = "" Then strApplicationFile = Application.CurrentDb().Name
' second request for the default value - trivial case
If ApplicationVersion > "" And strApplicationFile = Application.CurrentDb().Name Then
GetVersion = ApplicationVersion
Exit Function
End If
' first request for the default value - second-most trivial case
If strApplicationFile = Application.CurrentDb().Name Then
ApplicationVersion = DLookup("AttributeValue", "FrontEndAttributes", _
"FrontEndAttributes.Attribute=""ApplicationVersion""")
GetVersion = ApplicationVersion
Exit Function
End If
' version datum is in another data base - go get it
Dim cADODBConn As ADODB.Connection
Dim rstAttributes As ADODB.Recordset
Dim strcADODBConn As String
Dim strSQLAttributes As String
Dim xDone As Boolean
xDone = False
' Open connection
strcADODBConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strApplicationFile
Set cADODBConn = New ADODB.Connection
cADODBConn.Open strcADODBConn
' Open Attribute table looking for the ApplicationVersion record
Set rstAttributes = New ADODB.Recordset
strSQLAttributes = "SELECT FrontEndAttributes.AttributeValue FROM FrontEndAttributes " & _
" WHERE Attribute = ""ApplicationVersion"";"
rstAttributes.Open strSQLAttributes, cADODBConn, adOpenKeyset, adLockOptimistic, adCmdText
' Capture value
GetVersion = rstAttributes!AttributeValue
xDone = True
' clean up
rstAttributes.Close
cADODBConn.Close
Set rstAttributes = Nothing
Set cADODBConn = Nothing
Exit Function
GetVersionError:
' clean up
If Not rstAttributes Is Nothing Then
If rstAttributes.state = adStateOpen Then rstAttributes.Close
End If
Set rstAttributes = Nothing
If Not cADODBConn Is Nothing Then
If cADODBConn.state = adStateOpen Then cADODBConn.Close
End If
Set cADODBConn = Nothing
If Err.Number = 0 Then
ElseIf Hex(Err.Number) = "80004005" Then ' ignore these OLE DB jet errors in this case
Else
MsgBox Err.Source & " " & Err.Number & " " & Err.Description, , "Error"
End If
If Not xDone Then GetVersion = "0"
End Function
|
Any trademark appearing on this page is the property of its owner. Please send us your questions or comments about this web site. |