Klanten aanmaak met gegevens map

Status
Niet open voor verdere reacties.

gvwezel

Gebruiker
Lid geworden
1 sep 2016
Berichten
31
Oké ik heb database met klanten
Ik wil weer eens wat
Aan elke klant wil ik map met klant Acces id ! Zodat men daar externe dokumenten kan op slaan.
Als er een nieuwe klant word aangemaakt deze map standaard met acces.id word aangemaakt.
Die map is dus gewoon een gegevens map van de pc.

Ik heb meerdere male geprobeerd een voorbeeld van mijn bestand te uploaden maar lukt niet sorry.
Hoop dat iemand wat tips heeft.
 
Hallo,

Wat tips:

Een mapnaam kan je als tekst veld opslaan, probeer een logische naam te maken, dus een klant met de naam bakker, wordt dan iets van bak001, meerdere klanten met de naam bakker worden dan bak002, bak003 etc.
Wil je een absoluut path, dan kan je zoiets gaan maken c:\documents\database\documenten\bak001\
Ga je voor een meer flexibel path heb je aan bak001\ genoeg, want de rest staat in een defaulttabel met standaard verwijzingen. die twee combineren geeft de juiste plaats.
Het voordeel is als je naar een andere schijf zou moeten kan je snel switchen door het default aan te passen.
Er zijn wel beperkingen, bij grote hoeveelheden klanten, kan je mapstuctuur erg langzaam worden doordat je vele mappen in deze documentenmap heb staan.
een tussenstap met een alfabet letter (dus c:\documents\database\documenten\b\bak001\) scheelt al heel veel.

Ietsje meer info help een boel, om hoeveel klanten gaat het ongeveer, zijn er veel naamsgelijkheden, zijn het grote hoeveelheden documenten etc..
 
Ik gebruik exact de techniek die je nu vraagt; ik zal morgen de functies posten waarmee je de mappen automatisch aanmaakt.
 
Wok bedankt voor uitleg en het gaat nu om een 10 tal maar in toekomst duizenden.

Octa fish ik wacht met spanning af want dat is wel heel mooi als ik die mag gebruiken.
Want vooral dat hij vanzelf word aangemaakt op klant is echt een probleem voor mij .
En ik ben druk met de cursus bezig maar daar kan ik dit nog niet in vinden .
Verder alleen maar lof over de cursus echt top veel info
 
En ik ben druk met de cursus bezig maar daar kan ik dit nog niet in vinden .
Daar staat het ook niet in :).
Om met het makkelijkste te beginnen: ik vul een (formulier/tabelveld) met deze functie:
Code:
     Me.DossierPad = fPadMaken(CurrentProject.Path & "\Personen\" & Me.persoon_id & "\" & .DossierID & "\")
Het veld wordt dus gevuld vanuit een functie.

Code:
Public Function fPadMaken(sFolder As String) As String
On Error GoTo ErrorHandler
Dim sF As String
    sF = GetPathOnly(sFolder)
    If Dir(sF, vbDirectory) = "" Then
      sF = fPadMaken(sF)
      MkDir sF
    End If
    fPadMaken = sFolder
    Exit Function
    
ErrorHandler:
    Exit Function
End Function

Daar zit een kleine functie in die het pad uit de string haalt, voor het geval je met de bladerfunctie een bestand selecteert en niet een map. Het gaat tenslotte om het aanmaken van een map. Die functie is deze:
Code:
Public Function GetPathOnly(sPath As String) As String
    GetPathOnly = Left(sPath, InStrRev(sPath, "\", Len(sPath)) - 1)
End Function

De functie fPadMaken is recursive; dat betekent dat hij zichzelf aanroept tot het resultaat er is. In mijn geval maak ik de mappen in dezelfde map als de database (CurrentProject.Path). Daar wordt dan vervolgens een map Personen gemaakt als die nog niet bestaat, een map met de PersoonsID en een map met een DossierID ("\Personen" & Me.persoon_id & "" & .DossierID). De hele handel trigger ik op basis van een tabblad, maar dat kan dus ook bij de gebeurtenis <Bij aanwijzen> zodat je al bij het bladeren door de records de map krijgt.
Code:
Private Sub Form_Current()
    If .DossierPad_d.Value & "" = "" Then
        TempVars.Add "varDossierPad", fPadMaken(CurrentProject.Path & "\Personen\" & Me.persoon_id & "\" & .DossierID & "\")
        .AllowEdits = True
        .DossierPad_d.Value = TempVars("varDossierPad").Value
        .Dirty = False
    Else
        TempVars("varDossierPad").Value = .DossierPad_d.Value
    End If
Endf Sub
Ik gebruik dus ook een TempVars variabele voor het pad, omdat ik dat meerdere keren nodig heb. Die regel kan je uiteraard verwijderen. Verder hoeft de procedure alleen te worden uitgevoerd als het pad nog niet bestaat, dus vandaar dat ik begin met
Code:
    If .DossierPad_d.Value & "" = "" Then

Kijk maar eens of je er mee uit de voeten kunt!
 
:)wooh dat is effe wat info en effe wat puzzle werk om te kijken of ik het voor elkaar krijg .
maar ga mijn best doen want ja dan werkt het helemaal goed en dat willen we graag.
thanks thanks
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan