Problème de recordset pour récupérer des données filtrées

Fermé
Itriel Messages postés 27 Date d'inscription vendredi 23 juin 2017 Statut Membre Dernière intervention 20 juin 2018 - 30 août 2017 à 14:25
Itriel Messages postés 27 Date d'inscription vendredi 23 juin 2017 Statut Membre Dernière intervention 20 juin 2018 - 30 août 2017 à 16:50
Bonjour à tous, je vous présente mon problème.

J'ai adapté un code me permettant de récupérer toutes les pièces jointes de ma DB et de les stocker sur mon disque local.
Le seul problème étant que je souhaite récupérer toutes les pièces jointes mais seulement des entrées filtrées suite à l'application d'un filtre sur mon formulaire de recherche, mais je bloque sur le code et la manière de le rédiger et je dois au plus tard le finir pour demain... Pour le moment, j'ai ceci en code pour ma fonction enregistrer :

Private Function Enregistrer()

Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("SELECT certificat.filedata, Certificat.filename FROM t_références WHERE certificat.filedata is not null;")
While Not rs.EOF
Debug.Print rs("Certificat.filedata")
rs.Fields("Certificat.filedata").SaveToFile ("C:\Certif")
rs.Movenext
Wend
End Function


Ca marche très bien mais comme dit, ca ne prends pas en compte le filtre.
Pour se situer un peu plus : mes tables sont :

- t_références : toutes les entrées de la base de données
- t_départements : table avec des départements

J'ai une requete qui m'affiche les champs en source du formulaire sinon je n'arrivais pas à afficher le département mais seulement la clé primaire du département.

On m'a conseillé de partir de ce code afin de régler mon problème :
Private Function Enregistrer()

Dim rs As Recordset
Set rs = Me.RecordsetClone
rs.MoveFirst
While Not rs.EOF
While Not rs.EOF
Debug.Print rs("Certificat.filedata")
If rs.["tonchamp"] = tacondition Then
rs.Fields("Certificat.filedata").SaveToFile ("C:\")
End If

rs.Fields("Certificat.filedata").SaveToFile ("C:\Certif")
rs.Movenext
Wend
End Function


Mais j'ai une erreur sur le If rs.["tonchamp"] qui me dit qu'il ne trouve pas la méthode ou la donnée.
Auriez vous des conseils à me donner ? Et notamment pour bien renseigner mon champ dans If rs.["tonchamp"] ?

Je peux vous fournir ma DB si besoin, le lien est le suivant :

https://www.sendbox.fr/index.php?/b6200316d2052dac/AtR_DB_Final_-_28_aout_-_Copie_-_Copie.zip

Merci beaucoup par avance.



A voir également:

1 réponse

Itriel Messages postés 27 Date d'inscription vendredi 23 juin 2017 Statut Membre Dernière intervention 20 juin 2018
30 août 2017 à 16:50
Résolu ! Le code final est :

Private Function Enregistrer()

Dim rs As Recordset
Set rs = Me.RecordsetClone
rs.MoveFirst
While Not rs.EOF
Debug.Print rs.Fields("[t_références.Certificat.FileData]")
rs.Fields("[t_références.Certificat.filedata]").SaveToFile ("C:\Certif")
rs.Movenext
Wend
End Function
0