Charlotte Foust
cfoust at infostatsystems.com
Wed Sep 26 10:18:44 CDT 2007
Remember our long thread discussing IsBroken and setting references? Have you tried this in a database with a broken reference? Not being a skeptic, just curious. Charlotte Foust -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock Sent: Wednesday, September 26, 2007 8:16 AM To: accessd at databaseadvisors.com Subject: Re: [AccessD] DAO References in New DBs Hi Mark You can run a function to do this: <code> ' 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 Public Function RefAddDao() As Boolean Dim typGuid As GuidDefinition With typGuid .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 </code> /gustav >>> markamatte at hotmail.com 26-09-2007 17:05 >>> Sorry I forgot to change the Subject...Any ideas on how to get around this...other than manually doing it everytime? ORIGINAL QUESTION: Hello All, I just converted a db to XP that used Ted Avery's front end updater. The problem I am having is the temp db that is created does not have a DAO reference...actually any new db I create does not have a DAO reference. How can I set this in VBA? Thanks, Mark A. Matte -- AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com