Fuzcrew
Messages postés4Date d'inscriptionmardi 19 janvier 2010StatutMembreDernière intervention21 janvier 2010
-
21 janv. 2010 à 14:46
Fuzcrew
Messages postés4Date d'inscriptionmardi 19 janvier 2010StatutMembreDernière intervention21 janvier 2010
-
21 janv. 2010 à 15:45
Bonjour à tous !!
Je possède un répertoire qui contient plusieurs sous-répertoires qui eux-mêmes contiennent 8 images. Je souhaite enregistrer dans une table la liste complète des photos associées du nom de chaque répertoire. J'ai donc tenté une boucle à l'intérieur d'une boucle avec la commande vb DIR. Voici mon code
DoCmd.SetWarnings False
Dim t As DAO.Recordset, repertoire As String, fichier As String, var As String
'répertoire des fichiers à récupérer
repertoire = "C:\...\dossier"
'vide la table tbFichiers
DoCmd.RunSQL "DELETE chemin_images.* FROM IMAGES;"
Set t = CurrentDb.OpenRecordset("IMAGES")
fichier = Dir(repertoire, vbDirectory)
'première boucle
Do While fichier <> ""
'condition pour les répertoires courants
If fichier <> "." And fichier <> ".." Then
'condition pour ne sélectionner que les répertoire
If (GetAttr(repertoire & fichier) And vbDirectory) = vbDirectory Then
'variable qui récupère le chemin de chaque sous-répertoire
var = repertoire & (fichier) & ""
fichier2 = Dir(var)
'deuxième boucle qui récupère le nom de chaque image et les enregistre dans la table
Do While fichier2 <> ""
If fichier2 <> "." And fichier2 <> ".." Then
t.AddNew
t!chemin_images = fichier & "_" & fichier2
t.Update
fichier2 = Dir
End If
Loop
End If
End If
'debug
fichier = Dir
Loop
t.Close
Set t = Nothing
DoCmd.SetWarnings True
Il réussi a accéder à la deuxième boucle, enregistre bien les images du premier sous-répertoire dans la table mais bug lors du passage au deuxième sous-répertoire et me renvoie sur la ligne :
Code :
fichier = Dir
Si vous avez une petite idée ou une autre technique, merci d'avance.
Dernière modification par jacques_jean ; Aujourd'hui à 14h12. Motif: Ajout de la version. Sélectionner dans la liste déroulante "Intitulé" au-dessus de la fenêtre de rédaction du message.
A voir également:
Ajouter liste repertoire et fichier dans une table
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 21 janv. 2010 à 14:59
Dim sName As String
Dim xsFolders() As String
Dim nFolders As Long
Dim oRs As DAO.Recordset
Dim sRoot As String
sRoot = "C:\m"
sName = Dir$(sRoot, vbDirectory)
Do While LenB(sName)
If sName <> "." And sName <> ".." Then
ReDim Preserve xsFolders(nFolders)
xsFolders(nFolders) = sRoot & sName & ""
nFolders = nFolders + 1
End If
sName = Dir$()
Loop
DoCmd.RunSQL "DELETE FROM IMAGES"
Set oRs = CurrentDb.OpenRecordset("IMAGES")
For nFolders = 0 To nFolders - 1
sName = Dir$(xsFolders(nFolders) & "*.jpg")
Do While LenB(sName)
oRs.AddNew
oRs.Fields("chemin_images").Value = xsFolders(nFolders) & sName
oRs.Update
sName = Dir$()
Loop
Next
oRs.Close
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 21 janv. 2010 à 14:51
pas de récursivité avec Dir.
si ta structure est ainsi figée (n répertoires qui contiennent des images)
tu peux t'en tirer facilement en faisant d'abord un tableau des repertoires.
dans un second temps, tu parcoure chacun d'eux en listant les images contenues.