MGT Computer Solutions >>
Services >>
Custom Programming >>
BASIC >> VBA for MS-Access
This example function, written in VBA for Microsoft Access 2003 by MGT Computer Solutions, uses ADO to compare versions of different .mdb files as part of an automatic update management function.
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