Opgelost gegevenstype niet gedefinieerd

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

HankMegens

Gebruiker
Lid geworden
1 sep 2015
Berichten
100
Hallo,

In een oudere database heb ik code staan op een backup folder te kiezen.
Ik heb deze code nu gekopieerd naar een andere database.
Start ik deze code nu in deze nieuwe database, krijg ik de melding datb het gegevens type niet gedefinieerd is.
Het formulier en de achterliggende tabel zijn een op een gekopieerd uit de eerste database.

Code:
Sub selectfolder()
    
    Dim FD As FileDialog
    
    Set FD = Application.FileDialog(msoFileDialogFolderPicker)
        With FD
        .AllowMultiSelect = False
        .Title = "Selecteer folder"
        If .Show = True Then
            Me.backupfolder = .SelectedItems(1)
        Else
            Exit Sub
        End If
     End With
     Set FD = Nothing

End Sub

Het gaat om dit regeltje: Dim FD As FileDialog

Waarom werkt dit wel in de ene, maar niet in de ander database
 
Dat werkt alleen als je de juiste bibliotheken hebt gedefinieerd. Heb je dat niet, dan zul je de code als Late Binding moeten gebruiken:

Code:
Sub selectfolder()
Dim FD As Object
    
    Set FD = Application.FileDialog(4)
        With FD
        .AllowMultiSelect = False
        .Title = "Selecteer folder"
        If .Show = True Then
            Me.backupfolder = .SelectedItems(1)
        End If
     End With

End Sub
 
Hoi,

Dat van die bibliotheken snap ik wel.
Maar het zijn bijna identieke databases. De tweede is eigenlijk een een kopie van de eerste.
Waarom onstaat dit probleem dan toch?



Hank
 
Laatst bewerkt:
En toch zul je in elke datasbase opnieuw de bibliotheken moeten aangeven; standaard krijg je in een nieuwe database geen bibliotheken. Misschien als het een complete​ kopie is van de vorige, dat zou ik moeten testen.
 
Hoi,

Het werkt in iedergeval. Bedankt.
Ga me maar eens verdiepen in early en late binding.



Hank
 
Dat 'verdiepen' is niet zo heel moeilijk, ik kan je die tijd besparen door het hier uit te leggen :). Early Binding kun je gebruiken als je bibliotheken in je applicaties opneemt. Dat geldt zeker voor Access, waar je dat per database kunt/moet instellen. Zodra je een bibliotheek hebt toegevoegd, kun je Early Binding toepassen. Grote voordeel: met EB heb je IntelliSense; als je een opbject start, kun je daarna de parameters kiezen vanuit een keuzelijst, zodat je geen fouten maakt. Met Late Binding heb je de waarden nodig.

Code:
Dim FD As Object
Dim f As FileDialog
   
    Set f = FileDialog(msoFileDialogFolderPicker)
    Set FD = Application.FileDialog(4)

Als je niet weet dat je hier een 4 moet invullen, ben je de sjaak :). Bovendien is Early Binding ook sneller, al is dat nog nauwelijks merkbaar. Mij lijkt het gemak van het gebruik een heel stuk belangrijker.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan