Bonjour,
J'ai un formulaire contenant des info sur des voiture.
(marque, modèle etc...)
Elles sont identifiées par un Identifiant unique.
Ce formulaire contient un sous formulaire "diaporama" qui affiche de 0 à 5 photos de la voiture de l'enregistrement courant
Ces photos sont toutes stockées dans un répertoire et le seul moyen de retrouver les bonnes c'est grâce à l'id de la voiture qui se trouve dans le nom de fichier.
Exemple pour la voiture ayant l'id "007james" on aura dans le répertoire ".\images": 007james.jpg, 007james avant (1).jpg, 007james avant (2).jpg ...etc
il y a actuellement dans ce répertoire 14000 photos
A chaque foi que je veux voir le détail d'une voiture je lance cette fonction qui relève les photos concernant la voiture:
Le problème c'est que le fait d'ouvrir le répertoire et parcourir tous les noms de fichier, ca prends un certain temps (un peu moins d'une minute pour les 14000 photos) pendant lequel mon formulaire principal est figé...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Public Function GetPicturesPath(idVoiture As String) As Collection Dim picturesPath As Collection Set picturesPath = New Collection Dim fileSystemObj As FileSystemObject Set fileSystemObj = New FileSystemObject Dim currentDataBase As DAO.Database Set currentDataBase = Application.CurrentDb() Dim picturesFolder As Folder Set picturesFolder = fileSystemObj.GetFolder(fileSystemObj.BuildPath(fileSystemObj.GetParentFolderName(currentDataBase.Name), "\Data\Images")) currentDataBase.Close Set currentDataBase = Nothing Dim pictureFile As File For Each pictureFile In picturesFolder.Files If Strings.InStr(1, fileSystemObj.GetFileName(pictureFile.Name), idVoiture, VbCompareMethod.vbTextCompare) <> 0 Then picturesPath.Add pictureFile.Name End If Next Set GetPicturesPath = picturesPath End Function
Je me demandais donc s'il n'était pas possible de ne pas figer le formulaire?
J'ai essayé de lancer la fonction dans un thread séparé mais ca plante car apparemment on ne peut pas créer d'objet dans un thread (Collection, FileSystemObject) (?)
y'a t'il un moyen de lancer la fonction de manière asynchrone?
Auuu pire je pourrais charger tous les noms de fichier en mémoire au chargement de l'appli... mais bon...
Partager