none
Récuperer images stockée dans une table / champ OLE

    Question

  • Bonjour ces gens ;-)

    J'ai une base de données qui va voyager un peu partout comme applicatif en mode runtime.

    J'ai trois images BMP stockées dans une table / champ OLE.  L'une doit servir d'icône pour la base et même dans le systray, et les deux autres comme images de bouton bascule.

    Puis-je exploiter ces images directement ?

    Ou dois-je d'abord les extraire, les enregistrer sur le disque pour les exploiter ?
    Dans ce dernier cas, comment faire ?

    Merci,

    Blaise


    jeudi 17 mai 2012 11:11

Réponses

  • Oyez oyez (pas ole ole ;-) bonnes gens,

    Les champs OLE ne sont pas fait pour cela et j'ai trouvé une solution pour contourner ce problème, en vague souvenir d'une conversation lue il y a quelques temps.

    1/ Ne pas utiliser de champ OLE, mais MEMO !
    2/ Y sauvegarder l'image en HEXA
    3/ Y relire le texte, transformer en binaire et le sauvegarder.

    Çà fonctionne nickel !

        Dim iFile As Integer
        Dim lI As Long
        Dim b As Byte
        Dim sNF As String, sS As String
        iFile = FreeFile
    
        sNF = "Nom du fichier à lire" 
        Open sNF For Binary Access Read As #iFile
        Do While Not EOF(iFile) ' lecture du fichier octet (byte) par octet
            Get #iFile, , b
            sS = sS & Format(Hex(b), "@@") ' écriture sur deux caractères
        Loop
        Close
        iFile = FreeFile
        sNF = "Nom du fichier à écrire" 
        Open sNF For Binary Access Write As #iFile
        For lI = 1 To Len(sS) Step 2
            b = "&h" & Trim(Mid(sS, lI, 2)) 'convertit l'hexa en "binaire"
            Put #iFile, , b 'écriture dans le fichier
        Next lI
        Close
    

    • Marqué comme réponse blaise032 samedi 19 mai 2012 16:42
    samedi 19 mai 2012 16:09

Toutes les réponses

  • Bonjour Blaise,

    Il me semble qu'il faut effectivement utiliser une image enregistrer sur le disque.

    La solution pour eporter sur disque est dans cette base de données "SaveOLEBitmapToAuto.zip". Elle contient certaines fonctionnalités qui devraient répondre à votre besoin. Pour la télécharger aller à la page suivante : OLEtoDisk

    Bonne continuation !


    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    jeudi 17 mai 2012 13:27
  • Bonjour MehdiH,

    Merci pour la réponse, mais elle ne me convient pas : il faut trimbaler une DLL.

    Autant se contenter de quelques images.  Je voulais une solution où seule la .MDE pouvait voyager avec reconstruction des images dans son répertoire.  Même avec API !

    Merci quand même pour l'effort,Blaise

    vendredi 18 mai 2012 14:09
  • Oyez oyez (pas ole ole ;-) bonnes gens,

    Les champs OLE ne sont pas fait pour cela et j'ai trouvé une solution pour contourner ce problème, en vague souvenir d'une conversation lue il y a quelques temps.

    1/ Ne pas utiliser de champ OLE, mais MEMO !
    2/ Y sauvegarder l'image en HEXA
    3/ Y relire le texte, transformer en binaire et le sauvegarder.

    Çà fonctionne nickel !

        Dim iFile As Integer
        Dim lI As Long
        Dim b As Byte
        Dim sNF As String, sS As String
        iFile = FreeFile
    
        sNF = "Nom du fichier à lire" 
        Open sNF For Binary Access Read As #iFile
        Do While Not EOF(iFile) ' lecture du fichier octet (byte) par octet
            Get #iFile, , b
            sS = sS & Format(Hex(b), "@@") ' écriture sur deux caractères
        Loop
        Close
        iFile = FreeFile
        sNF = "Nom du fichier à écrire" 
        Open sNF For Binary Access Write As #iFile
        For lI = 1 To Len(sS) Step 2
            b = "&h" & Trim(Mid(sS, lI, 2)) 'convertit l'hexa en "binaire"
            Put #iFile, , b 'écriture dans le fichier
        Next lI
        Close
    

    • Marqué comme réponse blaise032 samedi 19 mai 2012 16:42
    samedi 19 mai 2012 16:09
  • Merci pour le retour Blaise

    En espérant avoir pu rendre service (MehdiH)
    Retrouvez moi sur Office Users

    dimanche 20 mai 2012 12:07