Opgelost Nieuwe map aanmaken

Dit topic is als opgelost gemarkeerd
Als je het aanmaken van de dossiermap voor een bedrijf en het toevoegen van een machine(map) uit elkaar wilt trekken kan je twee procedures maken:
Code:
Option Compare Database
Option Explicit

Private Sub MaakBedrijf_Click()
'Dossiermap voor een bedrijf aanmaken

Dim fs As Object
Dim strNewFolder As String

Set fs = CreateObject("Scripting.FileSystemObject")

strNewFolder = "D:\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer]

If Not fs.FolderExists(strNewFolder) Then
    MkDir strNewFolder
    MkDir strNewFolder & "\Machines"
    MkDir strNewFolder & "\PDF_bestanden"
    MsgBox "Dossiermap (" & strNewFolder & ") aangemaakt"
Else
    MsgBox "Dossiermap bestaat al"
End If

End Sub

Private Sub MaakMachine_Click()
'Map voor een machine in de machine-map van de dossiermap van het bedrijf aanmaken

Dim fs As Object
Dim strNewFolder As String

Set fs = CreateObject("Scripting.FileSystemObject")

strNewFolder = "D:\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer] & "\Machines\"

If Not fs.FolderExists(strNewFolder) Then
    MsgBox "Map (" & strNewFolder & ") bestaat niet. Maak die eerst aan"
Else
    MkDir strNewFolder & Me.MachineId & "_" & Me.Merk & "_" & Me.Type
    MsgBox "Machine (" & Me.MachineId & "_" & Me.Merk & "_" & Me.Type & ") in map (" & strNewFolder & ") aangemaakt"
End If

End Sub
 
Zitten er karakters in de diverse velden die niet toegestaan zijn in de naam van een directory?
Plaats eventueel de waarde van strNewFolder eens hier.

Vergeet bovenstaande, is nog niet van toepassing op het moment dat de fout optreedt.
Maar controleer wel even de inhoud van de gebruikte velden.
 
Laatst bewerkt:
Zitten er karakters in de diverse velden die niet toegestaan zijn in de naam van een directory?
Plaats eventueel de waarde van strNewFolder eens hier.

Vergeet bovenstaande, is nog niet van toepassing op het moment dat de fout optreedt.
Maar controleer wel even de inhoud van de gebruikte velden.
strNewFolder = "C:\Users\User\Documents\D-base\ClassicParts\KlantenDossier\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[Klantnummer] & "\Machines\"
 
Probeer dit eens:
Code:
Private Sub MachineMap_Click()
    Dim strNewFolder As String
    
    MsgBox Me.[NaamBedrijf]
    MsgBox Me.[Plaats]
    MsgBox Me.[KlantNummer]
    strNewFolder = strNewFolder = "C:\Users\User\Documents\D-base\ClassicParts\KlantenDossier\" & Me.[NaamBedrijf] & "_" & Me.[Plaats] & "_" & Me.[KlantNummer] & "\Machines\"
    CreateDir strNewFolder
    MsgBox "Machinemap (" & strNewFolder & ") aangemaakt"
End Sub
 
Dat heeft geen enkele zin; rechte haken heb je alleen nodig bij veldnamen met spaties. Ik zie ze niet....
Als je IntelliSense gebruikt, krijg je automatisch de juiste veldnamen als je begint te typen: "Me.mach" is vermoedelijk al voldoende om Access de tekst af te laten maken tot Me.MachineID. Iden voor "Me.me" (Me.Merk) en "Me.ty" (is dan Me.Type. Rechte haken aanraden is dus onzinnig en heeft geen effect op de code.
 
Ben nu verder gekomen, zat een kleine fout in de Query. Deze is hersteld.
Heb nu de volgende code. Maar krijg foutmelding "Een variabele is niet gedefineerd".
Dit hangt volgens mij op de map Machines, welke altijd zelfde naam heeft.

Private Sub MachineMap_Click()
Dim fs As Object

Dim strNewFolder As String

Set fs = CreateObject("Scripting.FileSystemObject")


strNewFolder = "C:\Users\User\Documents\D-base\ClassicParts\KlantenDossier\" & Me.NaamBedrijf & "_" & Me.Plaats & "_" & Me.Klantnummer \ Machines \ " & Me.MachineId & " - " & Me.Merk & " - " & Me.Type"
If Not fs.FolderExists(strNewFolder) Then

MkDir strNewFolder

MsgBox "Dossiermap(" & strNewFolder & ") aangemaakt"

Else
MsgBox "Dossiermap bestaat al"

End If

End Sub
 

Bijlagen

  • Schermafbeelding 2025-11-07 112643.jpg
    Schermafbeelding 2025-11-07 112643.jpg
    73,5 KB · Weergaven: 1
Dat komt omdat je Machines en die \ tekens weer niet tussen dubbele quotes hebt staan.
Code:
"\Machines\"
 
Daar moet uiteraard een & teken voor.
Verdiep je eens in het opbouwen van een String van Variabelen en Strings.
 
En als je de Sub CreateDir uit #3 gebruikt hoef je niet telkens te controleren of een map al bestaat of niet. Bestaat die niet dan wordt die automatisch aangemaakt, ook de dieper geneste mappen.
 
Daar moet uiteraard een & teken voor.
Verdiep je eens in het opbouwen van een String van Variabelen en Strings.
Hartelijk dank voor je hulp.
Helaas is mijn cognetive vermogen zo slecht dat het me slecht meer lukt. Ben erg dankbaar voor je hulp.

De "strNewFolder =" is nu goed

Blijft nu hangen op "MkDir strNewFolder"

Ik hoop dat je me nog even door wil loodsen
 

Bijlagen

  • Schermafbeelding 2025-11-07 115501.png
    Schermafbeelding 2025-11-07 115501.png
    29,8 KB · Weergaven: 1
Gebruik niet MkDir maar de CreateDir sub van AHulpje.
 
Ik hoop dat je me nog even door wil loodsen
Ik heb in #21 een werkende (want geteste) mogelijke oplossing aangedragen.
Het enige verschil is het eerste deel van de locatie; daar heb ik "D:\" van gemaakt om makkelijker te kunnen testen. Als dat niet doet wat je verwacht, moet je duidelijker uitleggen wat je wilt.
Mijn probeerdatabase heb ik bijgevoegd.
Bericht automatisch samengevoegd:

Hele zaakje gaat ook fout als de machine in 's Hertogenbosch staat
Dan maar Den Bosch gebruiken 🤣
 

Bijlagen

Ik heb in #21 een werkende (want geteste) mogelijke oplossing aangedragen.
Het enige verschil is het eerste deel van de locatie; daar heb ik "D:\" van gemaakt om makkelijker te kunnen testen. Als dat niet doet wat je verwacht, moet je duidelijker uitleggen wat je wilt.
Mijn probeerdatabase heb ik bijgevoegd.
Bericht automatisch samengevoegd:


Dan maar Den Bosch gebruiken 🤣
Hartelijk dank!!!!!!!
Het werk, ben super blij hiermee. 😇
Fijn weekend
 
Terug
Bovenaan Onderaan