Gustav Brock
Gustav at cactus.dk
Mon Jul 24 10:34:45 CDT 2006
Hi Thomas Here's one method: ' Include in Declarations: ' Length of GUID string per definition. Private Const clngGUID As Long = 38 Type GuidDefinition Guid As String * clngGUID Major As Integer Minor As Integer End Type ' Functions: Public Function RefAddDao() As Boolean Dim typGuid As GuidDefinition With typGuid ' GUID for DAO. Don't specify version to add the latest. .Guid = "{00025E01-0000-0000-C000-000000000046}" End With RefAddDao = ReferenceAddFromGuid(typGuid) End Function Public Function ReferenceAddFromGuid(ByRef typGuid As GuidDefinition) As Boolean ' Add a reference from its GUID and verify it. ' ' 2001-08-20. Cactus Data ApS, CPH. ' Reference Guid not registered or registered with a lower version. Const clngErrorGuidNotRegistered As Long = -2147319779 Dim ref As Reference Dim booSuccess As Boolean On Error Resume Next With typGuid References.AddFromGuid .Guid, .Major, .Minor End With If Not Err = clngErrorGuidNotRegistered Then ' The reference is registered but it may have been tampered with. ' Find it and check that it is not broken. For Each ref In References With ref If .BuiltIn = True Then ' no need to study built in references. ElseIf .Guid = typGuid.Guid Then ' This is the added reference. booSuccess = Not IsBroken97(ref) If booSuccess = True Then ' Return actual GUID version. typGuid.Major = .Major typGuid.Minor = .Minor End If End If End With Next End If Set ref = Nothing ReferenceAddFromGuid = booSuccess End Function Public Function IsBroken97(ByVal ref As Access.Reference) As Boolean ' Alternative method to check if a reference is broken ' as the IsBroken property cannot be used in Access97. ' ' 2000-03-19. Gustav Brock. Cactus Data ApS. ' Refer to this article at Microsoft Technet: ' ' Article ID: Q186720 ' ' The information in this article applies to: ' Microsoft Access 97 ' ' SYMPTOMS ' In Microsoft Access, IsBroken is a property of the References collection. ' The Microsoft Access Help topic on the Isbroken property states the following: ' ' The IsBroken property returns a Boolean value indicating whether a ' Reference object points to a valid reference in the Windows Registry. ' ' Although this statement is correct, to receive this Boolean value ' you must trap for errors that are generated by the broken reference. ' Also, the IsBroken property becomes True only when the file being referenced ' is deleted and the Microsoft Windows Recycle Bin is emptied. ' This article details the steps necessary to receive the Boolean value. Dim booRefOK As Boolean On Error GoTo Err_IsBroken97 If Len(Dir(ref.FullPath, vbNormal)) > 0 Then booRefOK = Not ref.IsBroken End If Exit_IsBroken97: IsBroken97 = Not booRefOK Exit Function Err_IsBroken97: ' Ignore non existing servers, drives, and paths. Resume Exit_IsBroken97 End Function /gustav >>> ewaldt at gdls.com 24-07-2006 14:16:08 >>> I create smaller databases from a main one so that I can send out the smaller ones to users. I export forms, queries, and appropriate subsets of tables. I also export a startup macro and a VBA function for the startup macro to run. Now for the problem. The VBA function uses DAO, and I need to make sure the user will have DAO referred to. How do I do that programmatically? Specifically, I am looking for "Microsoft DAO 3.6 Object Library". TIA, Thomas F. Ewald FCS Database Manager General Dynamics Land Systems (586) 276-1256