Bonjour à toutes et tous,

Je me suis lancé dans Access il y a deux mois. Après avoir passé de loooongues soirées sur Developpez.com qui regorge d’infos précieuses, je suis coincé sur un code manquant ou erroné.

J’ai une base de données dans laquelle j’ai lié des photographies. Les chemins d’accès aux photos se trouvent dans les champs de type texte « Photo1 », « Photo2 » et « Photo3 ». Un enregistrement peut contenir un nombre aléatoire de photos liées : aucune, 1, 2 ou 3.

Je souhaite copier automatiquement les fichiers des photos liées aux enregistrements filtrés par une requête dans un autre répertoire.
Répertoire source des photos : « c:\cmi\photos »
Répertoire cible des photos : « c:\cmi\envoi »
Requête contenant les enregistrements : « QryExport »

A l’exécution de la commande, le message suivant apparaît : « Data type mismatch in criteria expression »

Merci d'avance de votre aide

Voici le code utilisé :

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
'Vider le répertoire "Envoi"
    Kill "c:\cmi\envoi\*.*"

'Récupération des adresses des photos importées dans la base de données
'Les adresses des photos sont contenues dans les champs Photo1, Photo2 et Photo3 de la requête QryExport
    Dim oRst As DAO.Recordset
    Dim oDb As DAO.Database
    Set oDb = CurrentDb
    Set oRst = oDb.OpenRecordset("SELECT Photo1,Photo2,Photo3 FROM QryExport WHERE (Photo1) > 0 AND (Photo2) > 0 AND (Photo3) > 0", dbOpenDynaset)
    Dim Adresse1, Adresse2, Adresse3 As String
    Adresse1 = Rst.Fields(Photo1).Value
    Adresse2 = Rst.Fields(Photo2).Value
    Adresse3 = Rst.Fields(Photo3).Value
    oRst.Close
    oDb.Close
    Set oRst = Nothing
    Set oDb = Nothing

'Sélection du fichier des photos dans Adresse1, Adresse2 et Adresse3
'Sachant que toutes les photos se trouvent dans le répertoire c:\cmi\photos\
    Dim Fichier1, Fichier2, Fichier3 As String
    Fichier1 = Mid(Adresse1, 15)
    Fichier2 = Mid(Adresse2, 15)
    Fichier3 = Mid(Adresse3, 15)


'Copie de la BD "Echange_donnees" et des adresses des photos dans le répertoire c:\cmi\envoi
    Dim sEmplacementInitial As String, sEmplacementFinal As String
    Dim sEmplacementInitial1 As String, sEmplacementFinal1 As String
    Dim sEmplacementInitial2 As String, sEmplacementFinal2 As String
    Dim sEmplacementInitial3 As String, sEmplacementFinal3 As String

    sEmplacementInitial = "c:\cmi\Echange_donnees.mdb"
    sEmplacementFinal = "c:\cmi\envoi\Echange_donnees.mdb"
    sEmplacementInitial1 = Adresse1
'Emplacement final est c:\cmi\envoi\"nom de la photo"
'Concaténation du tronc commun c:\cmi\envoi et du nom de la photo (=Fichier1)
    sEmplacementFinal1 = "c:\cmi\envoi\" & Fichier1
    sEmplacementInitial2 = Adresse2
'Emplacement final est c:\cmi\envoi\"nom de la photo"
'Concaténation du tronc commun c:\cmi\envoi et du nom de la photo (=Fichier2)
    sEmplacementFinal2 = "c:\cmi\envoi\" & Fichier2
    sEmplacementInitial3 = Adresse3
'Emplacement final est c:\cmi\envoi\"nom de la photo"
'Concaténation du tronc commun c:\cmi\envoi et du nom de la photo (=Fichier3)
    sEmplacementFinal3 = "c:\cmi\envoi\" & Fichier3

    FileCopy sEmplacementInitial, sEmplacementFinal
    FileCopy sEmplacementInitial1, sEmplacementFinal1
    FileCopy sEmplacementInitial2, sEmplacementFinal2
    FileCopy sEmplacementInitial3, sEmplacementFinal3