Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Automatiser import images

16 réponses
Avatar
Ellimac
Bonjour,

Je cherche une procédure pour automatiser l'import de fichiers images dans
un champ de ma BD. But final obtenir un état avec cette image incorporée.
Il faut automatiser car j'ai plus de 3500 images...

Merci


Camille

6 réponses

1 2
Avatar
3stone
Salut Camille,

Ellimac wrote:
Bonjour,

J'ai testé mais je ne peux pas savoir si cela fonctionne j'ai un
plantage
général avec sortie d'Access sans message d'erreur.


Private Sub Détail_Format(Cancel As Integer, FormatCount As Integer)
Dim strChemin As String

On Error Resume Next
Dossier = "C:TempImages"
strChemin = Dossier & "SCHEMA_" & Mid(Me.[Code bassinNuméro
station], 2,
99)
Me.adresse.Picture = strChemin
End Sub




Il faudrait commencer par enlever le "On Error Resume Next" qui ne
fait que cacher l'erreur... mais qui empêche de "voir" ce qui se passe
ou ce qui ne va pas.

Se faire jeter d'Access vient d'une erreur autrement plus grave qu'un
chemin non trouvé...

PS:
Il faut toujours essayer de traiter l'erreur possible et prévue.
Cacher simplement toutes les erreurs est un pis aller.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Fabien
Ellimac a écrit :
OK merci beaucoup

Camille

"Fabien" a écrit dans le message de news:
O$
Ellimac a écrit :
C'est bien ce qui me manque : pouvoir balayer tous les enregistrements,
un genre For Each de la table.
Le nom du fichier peut être une combinaison du nom d'un champ de la table
avec le mot Schema_ devant.
Sinon prendre les fichiers 1 par 1 fonctionne aussi car le répertoire ne
contient que les images que l'on veut et dans le même ordre que les
enregistrements de la table.

Camille



"Fabien" a écrit dans le message de news:

Ellimac a écrit :
Bonjour,

En fait je ne veux pas ajouter de nouvel enregistrement à la table mais
renseigner le fichier image pour un champ et ce pour les 3600 fiches
environ.

J'ai modifié comme suit mais cela plante (erreur 3020 Update ou
CancelUpdate effectué sans appeler AddNew ni Edit) :

Private Sub Commande6_Click()
'Dim Rst_Table As AccessObject
Dim rep, Nom_Img As String
'obtient le premier fichier ou répertoire qui est dans Dossier : ex
:C:Mes Images
Dossier = "C:TempImages"
rep = Dir(Dossier & "*.jpg", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Set Rst_Table = CurrentDb.OpenRecordset("T_stations_schemas2")
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Img = rep
Rst_Table.adresse = Nom_Img
End If
Suite:
'passe à l'élément suivant
rep = Dir

Loop
GoTo Fin
Erreur: MsgBox Dossier & rep & "Erreur N° " & Err.Number & ":" &
Err.Description
Resume Suite
Fin:
Rst_Table.Close
Set Rst_Table = Nothing
End Sub

Camille

"Fabien" a écrit dans le message de news:

Ellimac a écrit :
Bonjour,

Je cherche une procédure pour automatiser l'import de fichiers images
dans un champ de ma BD. But final obtenir un état avec cette image
incorporée.
Il faut automatiser car j'ai plus de 3500 images...

Merci


Camille


Bonjour,
Idéalement il te faut une table qui contienne un champ pour le chemin
d'accès et le nom du fichier et une procédure qui scanne le/les
répertoires pour alimenter cette table.


Sub Import_contenu_repertoire(Dossier As String)
Dim Rst_Table as dao.recordset
Dim rep, Nom_Img As String
'obtient le premier fichier ou répertoire qui est dans Dossier : ex :
C:Mes Images
rep = Dir(Dossier & "*.jpg", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Set Rst_Table=currentdb.openrecordset ("Latable")
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Img = rep
With Rst_Table
.Addnew
!Fichierimmage=Nom_Img
.Update
End with
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
GoTo Fin
Erreur:
msgbox Dossier & rep & "Erreur N° " & Err.Number & ":" &
Err.Description
Resume Suite
Fin:
Rst_Table.close
Set Rst_Table=nothing
End Sub

Pour le reste ....
@+




Ok
Sur quelle critère fait tu le lien entre ton enregistrement de la table
a mettre a jour et le fichier image ?
Parce que là telle que tu t'y prend, tu parcours le répertoire
c:tempimages et dés que tu trouve un fichier *.jpg tu cherche a mettre
a jour le champ [Adresse] du premier enregistrement de ta table.
En plus si on corrige la syntaxe en ajoutant

With Rst_Table
.edit
!Adresse=Nom_Image
.update
EndWith

tu va changer la valeur du champ autant de fois qu'il y a d'images dans
ton dossier et au final un seul enregistrement aura été modifié et
contiendra le chemin d'accès au dernier fichier trouvé dans le dossier
:-(
@+





Attention a l'ordre de la table. Celui que tu vois a l'écran n'est pas
celui que tu pourrais obtenir en balayant la table.
On vois çà lundi si tu veux.
Bon Week






Salut,
Alors revenons a nos moutonS
Si le nom de ton image est composé de Schema_ + contenu d'un champs de
ta table , pourquoi vouloir le stocker dans la table ?
Autant le reconstituer lorsque tu veux accéder à ton image :
Nom_fichier="c:tempimagesSchema_" & [lechampquicontientlenom] & ".jpg"

@+
Avatar
Ellimac
Bonjour,

Certes certes mais comment je fais pour qu'il m'affiche dans mon état toutes
les images, si elles ne sont pas stockées dans le champ. Quelle propriété
définir et où dans l'état ?

Merci encore

Camille

"Fabien" a écrit dans le message de news:

Ellimac a écrit :
OK merci beaucoup

Camille

"Fabien" a écrit dans le message de news:
O$
Ellimac a écrit :
C'est bien ce qui me manque : pouvoir balayer tous les enregistrements,
un genre For Each de la table.
Le nom du fichier peut être une combinaison du nom d'un champ de la
table avec le mot Schema_ devant.
Sinon prendre les fichiers 1 par 1 fonctionne aussi car le répertoire
ne contient que les images que l'on veut et dans le même ordre que les
enregistrements de la table.

Camille



"Fabien" a écrit dans le message de news:

Ellimac a écrit :
Bonjour,

En fait je ne veux pas ajouter de nouvel enregistrement à la table
mais renseigner le fichier image pour un champ et ce pour les 3600
fiches environ.

J'ai modifié comme suit mais cela plante (erreur 3020 Update ou
CancelUpdate effectué sans appeler AddNew ni Edit) :

Private Sub Commande6_Click()
'Dim Rst_Table As AccessObject
Dim rep, Nom_Img As String
'obtient le premier fichier ou répertoire qui est dans Dossier : ex
:C:Mes Images
Dossier = "C:TempImages"
rep = Dir(Dossier & "*.jpg", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Set Rst_Table = CurrentDb.OpenRecordset("T_stations_schemas2")
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Img = rep
Rst_Table.adresse = Nom_Img
End If
Suite:
'passe à l'élément suivant
rep = Dir

Loop
GoTo Fin
Erreur: MsgBox Dossier & rep & "Erreur N° " & Err.Number & ":" &
Err.Description
Resume Suite
Fin:
Rst_Table.Close
Set Rst_Table = Nothing
End Sub

Camille

"Fabien" a écrit dans le message de
news:
Ellimac a écrit :
Bonjour,

Je cherche une procédure pour automatiser l'import de fichiers
images dans un champ de ma BD. But final obtenir un état avec cette
image incorporée.
Il faut automatiser car j'ai plus de 3500 images...

Merci


Camille


Bonjour,
Idéalement il te faut une table qui contienne un champ pour le
chemin d'accès et le nom du fichier et une procédure qui scanne
le/les répertoires pour alimenter cette table.


Sub Import_contenu_repertoire(Dossier As String)
Dim Rst_Table as dao.recordset
Dim rep, Nom_Img As String
'obtient le premier fichier ou répertoire qui est dans Dossier : ex
: C:Mes Images
rep = Dir(Dossier & "*.jpg", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Set Rst_Table=currentdb.openrecordset ("Latable")
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Img = rep
With Rst_Table
.Addnew
!Fichierimmage=Nom_Img
.Update
End with
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
GoTo Fin
Erreur:
msgbox Dossier & rep & "Erreur N° " & Err.Number & ":" &
Err.Description
Resume Suite
Fin:
Rst_Table.close
Set Rst_Table=nothing
End Sub

Pour le reste ....
@+




Ok
Sur quelle critère fait tu le lien entre ton enregistrement de la
table a mettre a jour et le fichier image ?
Parce que là telle que tu t'y prend, tu parcours le répertoire
c:tempimages et dés que tu trouve un fichier *.jpg tu cherche a
mettre a jour le champ [Adresse] du premier enregistrement de ta
table.
En plus si on corrige la syntaxe en ajoutant

With Rst_Table
.edit
!Adresse=Nom_Image
.update
EndWith

tu va changer la valeur du champ autant de fois qu'il y a d'images
dans ton dossier et au final un seul enregistrement aura été modifié
et contiendra le chemin d'accès au dernier fichier trouvé dans le
dossier :-(
@+





Attention a l'ordre de la table. Celui que tu vois a l'écran n'est pas
celui que tu pourrais obtenir en balayant la table.
On vois çà lundi si tu veux.
Bon Week






Salut,
Alors revenons a nos moutonS
Si le nom de ton image est composé de Schema_ + contenu d'un champs de ta
table , pourquoi vouloir le stocker dans la table ?
Autant le reconstituer lorsque tu veux accéder à ton image :
Nom_fichier="c:tempimagesSchema_" & [lechampquicontientlenom] & ".jpg"

@+


Avatar
Fabien
Ellimac a écrit :
Bonjour,

Certes certes mais comment je fais pour qu'il m'affiche dans mon état toutes
les images, si elles ne sont pas stockées dans le champ. Quelle propriété
définir et où dans l'état ?

Merci encore

Camille

"Fabien" a écrit dans le message de news:

Ellimac a écrit :
OK merci beaucoup

Camille

"Fabien" a écrit dans le message de news:
O$
Ellimac a écrit :
C'est bien ce qui me manque : pouvoir balayer tous les enregistrements,
un genre For Each de la table.
Le nom du fichier peut être une combinaison du nom d'un champ de la
table avec le mot Schema_ devant.
Sinon prendre les fichiers 1 par 1 fonctionne aussi car le répertoire
ne contient que les images que l'on veut et dans le même ordre que les
enregistrements de la table.

Camille



"Fabien" a écrit dans le message de news:

Ellimac a écrit :
Bonjour,

En fait je ne veux pas ajouter de nouvel enregistrement à la table
mais renseigner le fichier image pour un champ et ce pour les 3600
fiches environ.

J'ai modifié comme suit mais cela plante (erreur 3020 Update ou
CancelUpdate effectué sans appeler AddNew ni Edit) :

Private Sub Commande6_Click()
'Dim Rst_Table As AccessObject
Dim rep, Nom_Img As String
'obtient le premier fichier ou répertoire qui est dans Dossier : ex
:C:Mes Images
Dossier = "C:TempImages"
rep = Dir(Dossier & "*.jpg", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Set Rst_Table = CurrentDb.OpenRecordset("T_stations_schemas2")
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Img = rep
Rst_Table.adresse = Nom_Img
End If
Suite:
'passe à l'élément suivant
rep = Dir

Loop
GoTo Fin
Erreur: MsgBox Dossier & rep & "Erreur N° " & Err.Number & ":" &
Err.Description
Resume Suite
Fin:
Rst_Table.Close
Set Rst_Table = Nothing
End Sub

Camille

"Fabien" a écrit dans le message de
news:
Ellimac a écrit :
Bonjour,

Je cherche une procédure pour automatiser l'import de fichiers
images dans un champ de ma BD. But final obtenir un état avec cette
image incorporée.
Il faut automatiser car j'ai plus de 3500 images...

Merci


Camille


Bonjour,
Idéalement il te faut une table qui contienne un champ pour le
chemin d'accès et le nom du fichier et une procédure qui scanne
le/les répertoires pour alimenter cette table.


Sub Import_contenu_repertoire(Dossier As String)
Dim Rst_Table as dao.recordset
Dim rep, Nom_Img As String
'obtient le premier fichier ou répertoire qui est dans Dossier : ex
: C:Mes Images
rep = Dir(Dossier & "*.jpg", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Set Rst_Table=currentdb.openrecordset ("Latable")
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Img = rep
With Rst_Table
.Addnew
!Fichierimmage=Nom_Img
.Update
End with
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
GoTo Fin
Erreur:
msgbox Dossier & rep & "Erreur N° " & Err.Number & ":" &
Err.Description
Resume Suite
Fin:
Rst_Table.close
Set Rst_Table=nothing
End Sub

Pour le reste ....
@+




Ok
Sur quelle critère fait tu le lien entre ton enregistrement de la
table a mettre a jour et le fichier image ?
Parce que là telle que tu t'y prend, tu parcours le répertoire
c:tempimages et dés que tu trouve un fichier *.jpg tu cherche a
mettre a jour le champ [Adresse] du premier enregistrement de ta
table.
En plus si on corrige la syntaxe en ajoutant

With Rst_Table
.edit
!Adresse=Nom_Image
.update
EndWith

tu va changer la valeur du champ autant de fois qu'il y a d'images
dans ton dossier et au final un seul enregistrement aura été modifié
et contiendra le chemin d'accès au dernier fichier trouvé dans le
dossier :-(
@+




Attention a l'ordre de la table. Celui que tu vois a l'écran n'est pas
celui que tu pourrais obtenir en balayant la table.
On vois çà lundi si tu veux.
Bon Week





Salut,
Alors revenons a nos moutonS
Si le nom de ton image est composé de Schema_ + contenu d'un champs de ta
table , pourquoi vouloir le stocker dans la table ?
Autant le reconstituer lorsque tu veux accéder à ton image :
Nom_fichier="c:tempimagesSchema_" & [lechampquicontientlenom] & ".jpg"

@+






tu base ton etat sur ta table
tu ajoute dans l'état le champ [Code bassinNuméro station] que tu met en
invisible
Tu ajoutes un champ image dans ton état qui pointe sur une image quelconque.
Dans l'événement sur Formattage de ton détail tu changes le nom de
l'image grace la propriété .picture="c:tempimagesschema_" &
Mid(Me.[Code bassinNuméro station], 2)
C'est la même solution que t'a indiqué 3stone ;-)
@+
Avatar
Ellimac
Bonjour,

Super, le problème venait de ce que j'attribuait le code à un champ de la
table de type OLE. En l'attribuant à une image tout fonctionne nickel.

Mille fois merci

Camille
"Fabien" a écrit dans le message de news:
%
Ellimac a écrit :
Bonjour,

Certes certes mais comment je fais pour qu'il m'affiche dans mon état
toutes les images, si elles ne sont pas stockées dans le champ. Quelle
propriété définir et où dans l'état ?

Merci encore

Camille

"Fabien" a écrit dans le message de news:

Ellimac a écrit :
OK merci beaucoup

Camille

"Fabien" a écrit dans le message de news:
O$
Ellimac a écrit :
C'est bien ce qui me manque : pouvoir balayer tous les
enregistrements, un genre For Each de la table.
Le nom du fichier peut être une combinaison du nom d'un champ de la
table avec le mot Schema_ devant.
Sinon prendre les fichiers 1 par 1 fonctionne aussi car le répertoire
ne contient que les images que l'on veut et dans le même ordre que
les enregistrements de la table.

Camille



"Fabien" a écrit dans le message de
news:
Ellimac a écrit :
Bonjour,

En fait je ne veux pas ajouter de nouvel enregistrement à la table
mais renseigner le fichier image pour un champ et ce pour les 3600
fiches environ.

J'ai modifié comme suit mais cela plante (erreur 3020 Update ou
CancelUpdate effectué sans appeler AddNew ni Edit) :

Private Sub Commande6_Click()
'Dim Rst_Table As AccessObject
Dim rep, Nom_Img As String
'obtient le premier fichier ou répertoire qui est dans Dossier : ex
:C:Mes Images
Dossier = "C:TempImages"
rep = Dir(Dossier & "*.jpg", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Set Rst_Table = CurrentDb.OpenRecordset("T_stations_schemas2")
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Img = rep
Rst_Table.adresse = Nom_Img
End If
Suite:
'passe à l'élément suivant
rep = Dir

Loop
GoTo Fin
Erreur: MsgBox Dossier & rep & "Erreur N° " & Err.Number & ":" &
Err.Description
Resume Suite
Fin:
Rst_Table.Close
Set Rst_Table = Nothing
End Sub

Camille

"Fabien" a écrit dans le message de
news:
Ellimac a écrit :
Bonjour,

Je cherche une procédure pour automatiser l'import de fichiers
images dans un champ de ma BD. But final obtenir un état avec
cette image incorporée.
Il faut automatiser car j'ai plus de 3500 images...

Merci


Camille


Bonjour,
Idéalement il te faut une table qui contienne un champ pour le
chemin d'accès et le nom du fichier et une procédure qui scanne
le/les répertoires pour alimenter cette table.


Sub Import_contenu_repertoire(Dossier As String)
Dim Rst_Table as dao.recordset
Dim rep, Nom_Img As String
'obtient le premier fichier ou répertoire qui est dans Dossier :
ex : C:Mes Images
rep = Dir(Dossier & "*.jpg", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Set Rst_Table=currentdb.openrecordset ("Latable")
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Img = rep
With Rst_Table
.Addnew
!Fichierimmage=Nom_Img
.Update
End with
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
GoTo Fin
Erreur:
msgbox Dossier & rep & "Erreur N° " & Err.Number & ":" &
Err.Description
Resume Suite
Fin:
Rst_Table.close
Set Rst_Table=nothing
End Sub

Pour le reste ....
@+




Ok
Sur quelle critère fait tu le lien entre ton enregistrement de la
table a mettre a jour et le fichier image ?
Parce que là telle que tu t'y prend, tu parcours le répertoire
c:tempimages et dés que tu trouve un fichier *.jpg tu cherche a
mettre a jour le champ [Adresse] du premier enregistrement de ta
table.
En plus si on corrige la syntaxe en ajoutant

With Rst_Table
.edit
!Adresse=Nom_Image
.update
EndWith

tu va changer la valeur du champ autant de fois qu'il y a d'images
dans ton dossier et au final un seul enregistrement aura été modifié
et contiendra le chemin d'accès au dernier fichier trouvé dans le
dossier :-(
@+




Attention a l'ordre de la table. Celui que tu vois a l'écran n'est pas
celui que tu pourrais obtenir en balayant la table.
On vois çà lundi si tu veux.
Bon Week





Salut,
Alors revenons a nos moutonS
Si le nom de ton image est composé de Schema_ + contenu d'un champs de
ta table , pourquoi vouloir le stocker dans la table ?
Autant le reconstituer lorsque tu veux accéder à ton image :
Nom_fichier="c:tempimagesSchema_" & [lechampquicontientlenom] &
".jpg"

@+






tu base ton etat sur ta table
tu ajoute dans l'état le champ [Code bassinNuméro station] que tu met en
invisible
Tu ajoutes un champ image dans ton état qui pointe sur une image
quelconque.
Dans l'événement sur Formattage de ton détail tu changes le nom de l'image
grace la propriété .picture="c:tempimagesschema_" & Mid(Me.[Code
bassinNuméro station], 2)
C'est la même solution que t'a indiqué 3stone ;-)
@+


Avatar
Fabien
Ellimac a écrit :
Bonjour,

Super, le problème venait de ce que j'attribuait le code à un champ de la
table de type OLE. En l'attribuant à une image tout fonctionne nickel.

Mille fois merci

Camille
"Fabien" a écrit dans le message de news:
%
Ellimac a écrit :
Bonjour,

Certes certes mais comment je fais pour qu'il m'affiche dans mon état
toutes les images, si elles ne sont pas stockées dans le champ. Quelle
propriété définir et où dans l'état ?

Merci encore

Camille

"Fabien" a écrit dans le message de news:

Ellimac a écrit :
OK merci beaucoup

Camille

"Fabien" a écrit dans le message de news:
O$
Ellimac a écrit :
C'est bien ce qui me manque : pouvoir balayer tous les
enregistrements, un genre For Each de la table.
Le nom du fichier peut être une combinaison du nom d'un champ de la
table avec le mot Schema_ devant.
Sinon prendre les fichiers 1 par 1 fonctionne aussi car le répertoire
ne contient que les images que l'on veut et dans le même ordre que
les enregistrements de la table.

Camille



"Fabien" a écrit dans le message de
news:
Ellimac a écrit :
Bonjour,

En fait je ne veux pas ajouter de nouvel enregistrement à la table
mais renseigner le fichier image pour un champ et ce pour les 3600
fiches environ.

J'ai modifié comme suit mais cela plante (erreur 3020 Update ou
CancelUpdate effectué sans appeler AddNew ni Edit) :

Private Sub Commande6_Click()
'Dim Rst_Table As AccessObject
Dim rep, Nom_Img As String
'obtient le premier fichier ou répertoire qui est dans Dossier : ex
:C:Mes Images
Dossier = "C:TempImages"
rep = Dir(Dossier & "*.jpg", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Set Rst_Table = CurrentDb.OpenRecordset("T_stations_schemas2")
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Img = rep
Rst_Table.adresse = Nom_Img
End If
Suite:
'passe à l'élément suivant
rep = Dir

Loop
GoTo Fin
Erreur: MsgBox Dossier & rep & "Erreur N° " & Err.Number & ":" &
Err.Description
Resume Suite
Fin:
Rst_Table.Close
Set Rst_Table = Nothing
End Sub

Camille

"Fabien" a écrit dans le message de
news:
Ellimac a écrit :
Bonjour,

Je cherche une procédure pour automatiser l'import de fichiers
images dans un champ de ma BD. But final obtenir un état avec
cette image incorporée.
Il faut automatiser car j'ai plus de 3500 images...

Merci


Camille


Bonjour,
Idéalement il te faut une table qui contienne un champ pour le
chemin d'accès et le nom du fichier et une procédure qui scanne
le/les répertoires pour alimenter cette table.


Sub Import_contenu_repertoire(Dossier As String)
Dim Rst_Table as dao.recordset
Dim rep, Nom_Img As String
'obtient le premier fichier ou répertoire qui est dans Dossier :
ex : C:Mes Images
rep = Dir(Dossier & "*.jpg", vbDirectory)
'boucle tant que le répertoire n'a pas été entièrement parcouru
On Error GoTo Erreur
Set Rst_Table=currentdb.openrecordset ("Latable")
Do While (rep <> "")
'teste si c'est un fichier ou un répertoire
If (GetAttr(Dossier & rep) And vbDirectory) = vbDirectory Then
'MsgBox "Répertoire " & rep
Else
Nom_Img = rep
With Rst_Table
.Addnew
!Fichierimmage=Nom_Img
.Update
End with
End If
Suite:
'passe à l'élément suivant
rep = Dir
Loop
GoTo Fin
Erreur:
msgbox Dossier & rep & "Erreur N° " & Err.Number & ":" &
Err.Description
Resume Suite
Fin:
Rst_Table.close
Set Rst_Table=nothing
End Sub

Pour le reste ....
@+




Ok
Sur quelle critère fait tu le lien entre ton enregistrement de la
table a mettre a jour et le fichier image ?
Parce que là telle que tu t'y prend, tu parcours le répertoire
c:tempimages et dés que tu trouve un fichier *.jpg tu cherche a
mettre a jour le champ [Adresse] du premier enregistrement de ta
table.
En plus si on corrige la syntaxe en ajoutant

With Rst_Table
.edit
!Adresse=Nom_Image
.update
EndWith

tu va changer la valeur du champ autant de fois qu'il y a d'images
dans ton dossier et au final un seul enregistrement aura été modifié
et contiendra le chemin d'accès au dernier fichier trouvé dans le
dossier :-(
@+




Attention a l'ordre de la table. Celui que tu vois a l'écran n'est pas
celui que tu pourrais obtenir en balayant la table.
On vois çà lundi si tu veux.
Bon Week




Salut,
Alors revenons a nos moutonS
Si le nom de ton image est composé de Schema_ + contenu d'un champs de
ta table , pourquoi vouloir le stocker dans la table ?
Autant le reconstituer lorsque tu veux accéder à ton image :
Nom_fichier="c:tempimagesSchema_" & [lechampquicontientlenom] &
".jpg"

@+





tu base ton etat sur ta table
tu ajoute dans l'état le champ [Code bassinNuméro station] que tu met en
invisible
Tu ajoutes un champ image dans ton état qui pointe sur une image
quelconque.
Dans l'événement sur Formattage de ton détail tu changes le nom de l'image
grace la propriété .picture="c:tempimagesschema_" & Mid(Me.[Code
bassinNuméro station], 2)
C'est la même solution que t'a indiqué 3stone ;-)
@+






ok bonne continuation
1 2