Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/06/2011, 08h53   #1
Invité de passage
 
Sylvie Serplet
Inscription : décembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Sylvie Serplet

Informations forums :
Inscription : décembre 2010
Messages : 19
Points : 4
Points : 4
Par défaut Probleme de gestion du champ ''attachment''

Bonjour,

Je m occupe d une base de donnees qui gere le statut de different documents par leur nom et autres caracteristiques dont un champ multi valeur ''attachment''. Ces documents attaches sont en pdf, xls et doc.
J ai cree une requete dont le resultat est le dernier document attache en date.
La mise en forme de cette requete a ete faite dans un etat.
J ai ecrit un module de classe qui me permet de creer un dossier sur mon bureau et d y sauvegarder mon etat qui a ete imprimer en PDF. Jusque la tout va bien.
Je souhaite aussi pouvoir exporter et sauvegarder dans ce meme dossier les documents attaches a mon etat et la probleme. J ai tout d abord decouvert que les recordsets ne sont pas geres dans les etats mais uniquement dans les formulaires donc j ai change le code source a l ouverture de l etat.
Maintenant autre probleme je rencontre l erreur ''3265- Item not found in this collection'' sur la ligne 28: Set rsAttach = rs.Fields("Attachment").Value
Apparament il s agit d un probleme de nom du champ. Mon champ s appelle ''Attachment'' dans ma table, ma requete et mon etat. Donc je suppose qu il s agit d un probleme lie a la multivaleur du champ, mais je ne sais pas comment le resoudre.
Mon code doit parcourir toutes les lignes de mon rapport et exporter tous les attachment (parfois plus d un par enregistrement). Voici mon code:

Code :
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
Private Sub Report_Open(Cancel As Integer)
 
Dim Db As DAO.Database
Dim rs As DAO.Recordset
 
Set Db = CurrentDb
 
Set rs = Db.OpenRecordset("QryStatusallDoc", dbOpenDynaset)
 
Me.RecordSource = rs.Name
 
End Sub
 
Private Sub SaveAttachment_Click()
 
Dim Db As DAO.Database
Dim rs As DAO.Recordset2
Dim rsAttach As DAO.Recordset2
 
Set Db = CurrentDb
Set rs = Db.OpenRecordset("QryStatusallDoc", dbOpenDynaset)
 
With rs
.MoveFirst
 
While Not rs.EOF
 
Set rsAttach = rs.Fields("Attachment").Value
 
rsAttach.OpenRecordset
 
rsAttach.Fields("Attachment.FileData").SaveToFile ("C:\Documents and Settings\sylvie.serplet\Desktop\Doc Control")
 
.MoveNext
 
Wend
 
.Close
 
End With
 
Exit_SaveAttachment:
 
Set rsAttach = Nothing
Set rs = Nothing
 
End Sub
Merci d avance pour votre aide.
Cordialement,
Sylvie
ultima67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 08h45   #2
Invité de passage
 
Sylvie Serplet
Inscription : décembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Sylvie Serplet

Informations forums :
Inscription : décembre 2010
Messages : 19
Points : 4
Points : 4
Bonjour,

J ai trouve sur l aide en ligne de Microsoft un code qui pourrait repondre a mes besoins mais petit probleme.
Le record source de mon etat est une requete basee sur une sous requete.
Le code marche lorsque je met le nom de la sous requete pour ouvrir le recordset mais pas lorsque je met le nom de la requete. J ai toujours le meme message d erreur : item not found in this collection.
Malheureusement la sous requete ne repond pas aux criteres definis dans ma requete.
Il s agit peut etre juste d une question de script -sous requete de requete-
[SubQryStatusDoc.QryStatusallDoc] ou "SubQryStatusDoc".QryStatusallDoc"
J ai essaye plusieurs possibilites mais je n ai pas trouve la bonne.
Si vous avez une idee?

Merci d avance pour votre aide.
Cordialement,
Sylvie
ultima67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 09h20   #3
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 939
Points : 7 939
bjr,

j'aurais déjà évité de nommer un champ "Attachment", ce mot étant déjà utilisé par Access, cela le perturbe peut-être

sinon si ça marche avec la sous-requête mais pas la requête principale, est-ce qu'il y a plusieurs champs "Attachment" dans cette requête?

peut-être faut-il préciser le nom de la table source
Code :
Set rsAttach = rs.Fields("LaTableSource.Attachment").Value
reste la possibilité de mettre un point d'arrêt et de regarder le contenu de la collection Fields (dans la fenêtre variables locales par exemple) pour y voir les noms des champs (et vérifier du coup que le champ recherché y est bien avec le nom attendu)
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 01h16   #4
Invité de passage
 
Sylvie Serplet
Inscription : décembre 2010
Messages : 19
Détails du profil
Informations personnelles :
Nom : Sylvie Serplet

Informations forums :
Inscription : décembre 2010
Messages : 19
Points : 4
Points : 4
Merci beaucoup, cela marche.

Cordialement,
Sylvie
ultima67 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h41.


 
 
 
 
Partenaires

Hébergement Web