IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Gestion Pièces/Documents Joints sous Access 2003.


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 49
    Points : 46
    Points
    46
    Par défaut Gestion Pièces/Documents Joints sous Access 2003.
    Bonjour,

    J'ai lu que contrairement à Access 2007, la version 2003 ne permet pas d'ajouter un PJ (PDF, photos JPG etc) à un enregistrement dans une table.

    J'ai fait quelques recherches, en vain sur les forums

    Connaîtriez vous des techniques pour simuler l'ajout d'une PJ à un record ?

    J'ai besoin de faire cette gestion pour une application de suivi d'incident où l'opérateur peut être amené à inclure de 1 à N documents joints à son compte-rendu.

    Je vous remercie d'avance pour vos lumières.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Je ne sais pas pour 2003 mais toutes les versions antérieures permettent d'ajouter des objets OLE qui peuvent être n'importe quoi Excel, Word, JPG, BMP.

    Ceci dit je ne te le conseille pas car cela alourdi énormément ta BD. Pesronnellement ce que je stocke dans mes BD c'est uniquement le chemin d'accès au document puis j'appèle Windows et je lui demande de l'ouvrir quand j'en ai besoin.

    Voici du code qui permet l'ouvreture d'un document externe.

    Je ne l'ai pas écrit mais il marche très bien. À mettre dans un module.

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    Option Compare Database
    Option Explicit
     
    Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
                                  (ByVal hwnd As Long, ByVal lpszOp As String, _
                                   ByVal lpszFile As String, ByVal lpszParams As String, _
                                   ByVal LpszDir As String, ByVal FsShowCmd As Long) _
                                   As Long
    Declare Function GetDesktopWindow Lib "user32" () As Long
     
    Const SW_SHOWNORMAL = 1
     
    Const SE_ERR_FNF = 2
    Const SE_ERR_PNF = 3
    Const SE_ERR_ACCESSDENIED = 5
    Const SE_ERR_OOM = 8
    Const SE_ERR_DLLNOTFOUND = 32
    Const SE_ERR_SHARE = 26
    Const SE_ERR_ASSOCINCOMPLETE = 27
    Const SE_ERR_DDETIMEOUT = 28
    Const SE_ERR_DDEFAIL = 29
    Const SE_ERR_DDEBUSY = 30
    Const SE_ERR_NOASSOC = 31
    Const ERROR_BAD_FORMAT = 11
     
    Public Function StartDoc(DocName As String) As Long
        Dim Scr_hDC As Long
        Scr_hDC = GetDesktopWindow()
        StartDoc = ShellExecute(Scr_hDC, "open", DocName, _
                                "", "C:\", SW_SHOWNORMAL)
    End Function
     
     
     
    Public Function ErrorCheck(r As Long) As Integer
     
        Dim msg As String
     
        If r <= 32 Then
            'There was an error
            Select Case r
                Case SE_ERR_FNF
                    msg = "Fichier non trouvé"
                Case SE_ERR_PNF
                    msg = "Chemin non trouvé"
                Case SE_ERR_ACCESSDENIED
                    msg = "Accès refusé"
                Case SE_ERR_OOM
                    msg = "Mémoire insufisante"
                Case SE_ERR_DLLNOTFOUND
                    msg = "DLL non trouvée"
                Case SE_ERR_SHARE
                    msg = "Une violation de partage a eu lieu"
                Case SE_ERR_ASSOCINCOMPLETE
                    msg = "Association de fichier incomplète ou invalide"
                Case SE_ERR_DDETIMEOUT
                    msg = "Dépassement du temps d'attente pour DDE"
                Case SE_ERR_DDEFAIL
                    msg = "Échec de transactiob DDE"
                Case SE_ERR_DDEBUSY
                    msg = "DDE occupé"
                Case SE_ERR_NOASSOC
                    msg = "Pas de programme associé à l'extention du fichier"
                Case ERROR_BAD_FORMAT
                    msg = "Fichier EXE invalide ou erreur dans une image EXE"
                Case Else
                    msg = "Erreur" & r & " inconnue"
            End Select
            MsgBox msg & " "
        End If
    End Function
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 49
    Points : 46
    Points
    46
    Par défaut Pièce Jointe sous Access 2003
    Je te remercie pour ce code. Je saisis le fonctionnement.

    Si je comprends bien, il faudra un code pour copier une PJ d'un endroit à un autre (espace serveur partagé par ex.) et ne mémoriser que le chemin d'accès dans la base. Le clic devra lancer le code que tu as transmis.

    Comment fait on pour copier physiquement un fichier d'un endroit à un autre par VBA Access (et VBA Excel aussi j'imagine...) ?

    Sincèrement, merci.

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    pour copier, tu as filecopy
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 49
    Points : 46
    Points
    46
    Par défaut
    Merci pour cette piste.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Taille d'une zone de texte dans un état sous Access 2003
    Par Petite grenouille dans le forum Contribuez
    Réponses: 4
    Dernier message: 15/05/2006, 19h39
  2. Problème de table liées sous Access 2003
    Par FuRioX dans le forum Access
    Réponses: 2
    Dernier message: 05/04/2006, 12h19
  3. Probleme formulaire sous access 2003
    Par pedrosystem dans le forum Access
    Réponses: 2
    Dernier message: 28/02/2006, 17h02
  4. PB importation classeur excel sous access 2003
    Par techinfo37 dans le forum Access
    Réponses: 6
    Dernier message: 04/10/2005, 20h41
  5. Imprimer un document publisher sous access
    Par alkmehd dans le forum Access
    Réponses: 2
    Dernier message: 22/09/2005, 12h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo