Wijzigingen in references (m.b.v. VBA) worden niet onthouden.

Status
Niet open voor verdere reacties.

ErikDijs

Gebruiker
Lid geworden
25 apr 2022
Berichten
30
Ik probeer mijn references kloppend te maken via VBA. Met hulp van internet lukt het prima. Echter zodra de code klaar is, of na het afsluiten van de database (via code) vergeet hij de aangepaste references (verwijzingen). In onderstaande code heb ik 3 sterretjes geplaatst. Als ik op die locatie een kopie maak van de database (na het pauzeren van de code), dan staat in de kopieer de verwijzingen goed. Echter als ik de code gewoon stop op die plaats, is hij alle nieuwe verwijzingen weer kwijt. Het lijkt wel dat ik de wijzigingen moet opslaan. Echter kan ik daar niets van vinden op internet.

Hier de gebruikte code.

Code:
Public Function WijzigVerwijzingenBestand1(vl_GekopieerdeDatabase As Database) As Boolean
Dim vl_AccessProject As Access.Application
Dim vl_Verwijzing As Access.Reference
Dim vl_VerwijzingNaam As String
Dim vl_VerwijzingBestandsNaam As String
Dim vl_VerwijzingLocatieBestand As String
    Set vl_AccessProject = New Access.Application
    With vl_AccessProject
        .OpenCurrentDatabase vl_GekopieerdeDatabase.Name
        For Each vl_Verwijzing In vl_AccessProject.References
            vl_VerwijzingBestandsNaam = VBA.Mid(vl_Verwijzing.FullPath, VBA.InStrRev(vl_Verwijzing.FullPath, "") + 1)
            vl_VerwijzingNaam = VBA.Left(vl_VerwijzingBestandsNaam, VBA.InStr(vl_VerwijzingBestandsNaam, ".") - 1)
            vl_VerwijzingLocatieBestand = "\\wbtsbs01\accessdata$\Tankstanden\System"
            vl_VerwijzingLocatieBestand = vl_VerwijzingLocatieBestand & DLookup("SubPath", "tblApplicaties", "BestandsNaam = '" & vl_VerwijzingBestandsNaam & "'")
            If Left(vl_VerwijzingNaam, 7) = "Ecotank" Then
                ' Verwijder oude verwijzing
                .References.Remove vl_Verwijzing
                ' Zet nieuwe verwijzing terug
                .References.AddFromFile vl_VerwijzingLocatieBestand & "" & vl_VerwijzingBestandsNaam
            End If
                ' End If
        Next
    End With
    ' Opschonen
    ' ***
    vl_AccessProject.CloseCurrentDatabase
    vl_AccessProject.Quit
    Set vl_AccessProject = Nothing
    ' Terugmelding
    WijzigVerwijzingenBestand1 = True
End Function
 
Laatst bewerkt door een moderator:
Allereerst welkom bij HelpMij. Twee opmerkingen (eigenlijk drie, zal je straks wel zien ;)): code zet je het beste in Code tags (knop #) of de tekst [ code ] vóór, en [ /code ] áchter (zonder spaties) de code typen. Dan is hij een stuk leesbaarder. En tweede opmerking: deze code is nogal specifiek; het is voor ons ondoenlijk om die te testen. Daarvoor hebben we de database(s) nodig denk ik. Ik sta in ieder geval niet te popelen om de situatie na te bouwen. Die tijd steek ik liever in het zoeken naar een oplossing.

En de derde opmerking: als je muis coute que coute naar de Quote knop wil: zet 'm op sterk water. Gebruik de knop <Reageer op bericht> er onder, of het tekstvak <Snel reageren>. Dit om de 'beginnersfout' te voorkomen die echt elke​ nieuwe gebruiker schijnt te moeten maken :).
 
Dank voor reactie

Beste AccessGuru,

Allereerst dank voor je reactie en mijn excuses dat het wat lang duurde voordat ik reageerde. Door omstandigheden kon ik er even niet aan verder gaan. Ik snap dat het te veel werk is om te testen omdat de code specifiek is. Mijn database is een heel systeem van meer dan 20- databases, dus is niet gemakkelijk te kopiëren. Ik zal het zelf eens eenvoudiger nabouwen en dan opnieuw (bij deze vraag) invoeren.

Ik hoopte dat de fout zat in het feit dat ik de (externe database) niet goed had afgesloten of zoiets en dat jullie de (domme) fout zo zouden kunnen zien. Helaas dus niet. Ik ben echt al weken aan het proberen de code aan de praat te krijgen. Het frustrerende hierbij is dat hij het wel doet, maar op een of andere manier het weer ongedaan maakt. Voor mij niet te volgen.

Maar nogmaals ik bouw ff een nieuwe kleine DB en stuur deze toe.

Ik zal de code in het vervolg op de juiste manier invoeren. Dank voor de tip.

Vriendelijke groetjes

Erik

 
Door het opnieuw bouwen kwam liep ik tegen de oplossing aan. In mijn aangegeven code riep ik die functie aan vanuit een andere functie waar dezelfde database ook open stond. Hij was dus niet exclusief geopend, waardoor de aanpassingen weer ongedaan werden gemaakt. Door in de 1e functie de database op tijd te sluiten (voor het aanroepen van de 2e functie) onthield hij de aanpassing wel. Wel even wennen dat je volgens VBA gewoon aanpassingen kan doen terwijl je de database niet exclusief geopend hebt.

Toch bedankt voor het meekijken AccessGuru.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan