Carte du site
 Remerciements
 Netiquette
 Bugs
 Tables
 Requêtes
 Formulaires
 États (rapports)
 Modules
 APIs
 Chaînes
 Date/Time
 Général
 Ressources
 Téléchargeables

 Termes d'usage

APIs: Retourner un nom unique de fichier, en séquence

Author(s)
Dev Ashish

(Q) Il me faut exporter à peu près 50 fichiers, depuis ma base de données, chaque nuit. Le nom des fichiers sont du genre tmp00010.dat, tmp00011.dat, etc. Je sais comment générer chaque exportation à travers d'une boucle, mais comment générer la séquence de noms, tous uniques, pour ces fichiers, étant connu le répertoire où ils doivent être.

(A) Couper-coller la fonction suivante dans un nouveau module, puis utiliser la fonction fUniqueFile pour générer une nom de fichier unique séquentiel. La fonction vérifie la préexistence de change nom de fichier avant de le créer.

'***************** Code Start ***************
Function fUniqueFile(strDir As String, intMaxFiles As Integer, _
                    strPadChar As String, strFileInitName As _
                    String, Optional strFileExt) As String
'===========================
'La fonction retourne un nom de fichier en séquence numérique
'Elle accepte:
'   strDir = Le répertoire où il faut créer les fichiers
'   intMaxFiles = Le nombre max de fichiers maximal
'   strPadChar = Caractère SIMPLE pour remplissage du nom
'   strFileInitName = les trois caractères de gauche du nom commun aux fichiers
'   (Optional) strFileExt = extension du fichier
'Appeler la fonction comme:
'     msgbox "Free File Name is " & _
'               fUniqueFile("C:\DataFiles", 500, "dat")
'  Ici, on n'a pas fourni d'extension.
'Avec une extension
'  fUniqueFile("C:\DataFiles",500,"da","out")
'===========================

Dim strtmpFile As String
Dim strTmp As Variant
Dim i As Integer
Dim boolNextI As Boolean

    On Error GoTo funiqueFile_Error
    
    For i = 1 To intMaxFiles
        boolNextI = False
        If Not IsMissing(strFileExt) Then
            strTmp = Dir(strDir & "\*." & strFileExt)
            'Get the First File Name to compare against
            strtmpFile = strFileInitName & Lpad(CStr(i), strPadChar, 5) _
                        & "." & strFileExt
        Else
            strTmp = Dir(strDir & "\*.*")
            'Get the First File Name to compare against
            strtmpFile = strFileInitName & Lpad(CStr(i), strPadChar, 5)
        End If
    
        Do While strTmp <> ""
            If strTmp = strtmpFile Then
                'File Exists, break out
                'and get next LPad name
                boolNextI = False
                Exit Do
            Else
                'Unique file name
                boolNextI = True
            End If
            'else get the next name in DIR
            strTmp = Dir
        Loop
    
        If boolNextI Then
            'Unique Name found, end For
            Exit For
        End If
    Next i
  
    'You should now have the
    'Unique file name
    fUniqueFile = strtmpFile
    
fUniqueFile_Success:
    Exit Function
funiqueFile_Error:
    fUniqueFile = vbNullString
    Resume fUniqueFile_Success
End Function


Function Lpad(MyValue$, MyPadCharacter$, MyPaddedLength%)
Dim PadLength As Integer
Dim X As Integer
    PadLength = MyPaddedLength - Len(MyValue)
    Dim PadString As String
    For X = 1 To PadLength
        PadString = PadString & MyPadCharacter
    Next
    Lpad = PadString + MyValue
End Function
'************ Code End **********************

© 1998-2001, Dev Ashish, All rights reserved. Optimized for Microsoft Internet Explorer