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

IHM Discussion :

Insérer des photos non stockées dans la base dans un sous-état Access en mode continu


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Insérer des photos non stockées dans la base dans un sous-état Access en mode continu
    Bonjour,

    J'ai utilisé le tutoriel suivant concernant l'affichage de photos dans un formulaire en mode continu :
    http://dolphy35.developpez.com/artic.../formcontinus/
    Cela fonctionne parfaitement. Merci au créateur !!!

    En revanche, je bute sur un problème similaire dans un sous-état en mode continu.

    Je m'explique :
    J'ai un formulaire de saisie d'un film, qui est relié à un formulaire de saisie des acteurs (en mode continu). Là, tout fonctionne avec le tutoriel (qui me permet de saisir mes acteurs tout en affichant leur photo selon la procédure du tuto et surtout sans stocker les images dans la base).

    Dans mon formulaire de saisie des films, j'ai un bouton me permettant d'ouvrir un état (une jaquette du film relié à la table Film) dans lequel il y a un sous-état relié à une table "Jouer" reliée au film, d'une part, et aux acteurs d'autre part - dans un film il y a plusieurs acteurs.
    Les acteurs qui jouent dans le film apparaissent dans le sous-état (nom + photo). Et c'est là que ça bloque. Comment faire apparaître les photos dans mon sous-état sans avoir à stocker celles-ci dans la base ? Je précise qu'il y a toujours 6 photos à afficher, jamais plus.

    En outre, pour l'affiche du film, j'ai réussi à faire afficher l'affiche du film sans stocker le fichier image dans la base. Donc, je me dis que cela doit être faisable pour le sous-formulaire mais étant débutant en VBA, j'ai du mal...

    Dors et déjà, merci pour votre gentillesse qui m'a permis d'avancer. Et merci d'avance pour les éventuelles solutions que vous pourrez m'apporter.


    Salas99

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    J'utilise Access2000 (donc antérieure à celle utilisée dans le tutoriel cité).
    Tu trouveras ici : http://claudeleloup.developpez.com/t...plic-ploc/#LII
    une autre méthode (Arkham46) qui fonctionne tant pour un formulaire en continu que pour un état.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 21
    Points : 15
    Points
    15
    Par défaut Fonctionnement parfait
    Bonjour,

    Ce module est parfait, c'est une merveille. En effet, tout fonctionne parfaitement.

    Mes photos portant le nom et prénom de chaque acteur, j'ai adapté la source du cadre d'objet indépendant de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ImageToOLE([CurrentProject].[path] & "\Acteurs\" & [PrénomActeur] & " " & [NomActeur] & ".jpg";[OleImg];-1;-1)
    Cela fonctionne très bien (bien entendu, il ne faut pas de doublons).

    En revanche, sur 5 000 photos, j'en ai à peu près 2 000 en format png.
    J'ai commencé à les enregistrer sous le format jpg.
    Je m'interroge toutefois sur la possibilité d'indiquer dans la source qu'une photo peut avoir une extension ".jpg" ou ".png".
    Je n'ai pas trouvé la formule.

    Mille merci à l'auteur du module (dans lequel j'avoue ne pas avoir tout compris). La taille de ma base est passée de 210 Mo à 6,8 Mo sans les photos des acteurs et sans les affiches de films.
    Encore merci.


    Salas99

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour,

    Je m'interroge toutefois sur la possibilité d'indiquer dans la source qu'une photo peut avoir une extension ".jpg" ou ".png".
    Dans l'événement Sur activation (On Current) cherche quelle extension a l'image et aménage la propriété à la volée.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Merci. Mais comment faire référence à l'extension dans le code ?

    Salas99

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Bonjour,
    Il faut tester l'existence du fichier avant d'y faire référence. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim sNameFile as String
    sNameFile  = CurrentProject.path & "\Acteurs\" & [PrénomActeur] & " " & [NomActeur]
     
    if dir(sNameFile & ".jpg")<>"" then
       sNameFile  =sNameFile   & ".jpg"
    else if  dir(sNameFile & ".png")<>"" then
       sNameFile  =sNameFile   & ".png"
    else
       sNameFile  =CurrentProject.path & "\" & "imageAbsente.jpg"
    endif
     
    me.image.picture = sNameFile
    "imageAbsente.jpg" correspond à une image à afficher si aucune image ne correspond. ça évite les erreurs.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Bonjour Salas99, Bonjour Fabrice,

    Le code fourni par Fabrice est évidemment correct, mais le problème est ici un peu plus compliqué.

    On exploite la méthode décrite par Arkham46 ici : http://www.developpez.net/forums/d10...a/#post5650876
    Arkham46 nous propose deux versions 1 et 1.bis.
    Si on désire utiliser des images .png, il faut utiliser la version 1.bis.

    Je crois que Salas99 s’est inspiré de mon article : http://claudeleloup.developpez.com/t...plic-ploc/#LII

    Dans cet article, j’utilise la version 1 => les images .png ne sont donc pas utilisables.

    N.B. Pour utiliser la version 1.bis, il faut installer la gdiplus.dll.
    Je la mets en P.J., il faut l’installer dans le répertoire de l’application Access.

    En deuxième P.J., je mets un exemple d’utilisation avec des images .jpg, .bmp, .png, .gif, .ico
    Fichiers attachés Fichiers attachés
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Utiliser la bibliothèque GdiPlus pour faire de l'affichage d'images me semble un peu extrême. Un peu comme utiliser un fusil de chasse pour tuer un moustique.

    MS Access reconnaît la plupart des formats d'images, il suffit simplement d'y faire référence dans la propriété Picture du contrôle Image indépendant.

    Maintenant détecter si un fichier image dont on ne stocke ni le nom ni le type existe, le plus simple est d'utiliser la fonction Dir().

    Pourquoi se compliquer l'existence ?! Faire simple et encore la meilleure approche dans un développement.

    Mais peut être que je me trompe.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 281 907
    Points
    281 907
    Par défaut
    Ça t’a sans doute échappé : il s’agit d'une image dans un contrôle indépendant qui varie à chaque enregistrement d’un formulaire en continu ou d’un état.

    La source du contrôle :




    … et pour trouver l’image qui correspond à cet enregistrement, j’utilise effectivement la fonction DIR() :
    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
    Option Compare Database
    Option Explicit
     
    Public Function PhotoOK(AuteurPk As Long) As String
     
      If Dir(CurrentProject.Path & "\Images\" & AuteurPk & ".jpg") = AuteurPk & ".jpg" Then
          PhotoOK = CurrentProject.Path & "\Images\" & AuteurPk & ".jpg"
          Exit Function
        ElseIf Dir(CurrentProject.Path & "\Images\" & AuteurPk & ".gif") = AuteurPk & ".gif" Then
            PhotoOK = CurrentProject.Path & "\Images\" & AuteurPk & ".gif"
            Exit Function
        ElseIf Dir(CurrentProject.Path & "\Images\" & AuteurPk & ".bmp") = AuteurPk & ".bmp" Then
                 PhotoOK = CurrentProject.Path & "\Images\" & AuteurPk & ".bmp"
                 Exit Function
        ElseIf Dir(CurrentProject.Path & "\Images\" & AuteurPk & ".png") = AuteurPk & ".png" Then
                 PhotoOK = CurrentProject.Path & "\Images\" & AuteurPk & ".png"
        ElseIf Dir(CurrentProject.Path & "\Images\" & AuteurPk & ".ico") = AuteurPk & ".ico" Then
                 PhotoOK = CurrentProject.Path & "\Images\" & AuteurPk & ".ico"
                 Exit Function
             Exit Function
     
        Else: PhotoOK = CurrentProject.Path & "\Images\Default.bmp"
      End If
     
    End Function
    C’est la fonction ImageToOLEPlus() écrite par Arkham46 qui nécessite la bibliothèque GdiPlus.
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 015
    Points : 24 552
    Points
    24 552
    Par défaut
    Il y a une incohérence là. Vous parlez de champ Ole alors que Salas indique bien :

    qui me permet de saisir mes acteurs tout en affichant leur photo selon la procédure du tuto et surtout sans stocker les images dans la base
    Tout cela est foncièrement illogique. Si le image sont externes autant utiliser un contrôle image non lié et ne pas utiliser la Gdiplus qui permet beaucoup de chose soit mais est anecdotique sur ce cas là.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/04/2012, 09h28
  2. Réponses: 4
    Dernier message: 02/09/2011, 16h06
  3. insérer des photos de la base de données dans un datareport
    Par melancolie dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 06/09/2010, 10h01
  4. Réponses: 1
    Dernier message: 29/12/2009, 10h01
  5. Insérer des photos dans une bd Access
    Par cedric/copy dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 07/10/2008, 10h07

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