Access, images (lire les bmp-->nwind.mdb)

Soyez le premier à donner votre avis sur cette source.

Vue 11 557 fois - Téléchargée 1 031 fois

Description

Récupére les images contenues dans la database NWIND.MDB et les affiches dans un objet image.

Source / Exemple :


'objets du form1 :
'--> image : Name Image1
'--> label : Name lblProduit
'--> CommandButton : cmdNext
'--> CommandButton : cmdPrevious
'---------------------------
'référence (menu projet, références)
'--> Microsoft activeX data objects 2.5 ou + (pour ADODB.Stream)
'---------------------------------
'   But :
'   Afficher les images contenues dans la base de données NWIND.MDB
'modifier le chemin si besoin...
    Option Explicit

Const MDBPATH = "C:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB"
'---------------------------------
'objet recordset
Dim rsCategories As ADODB.Recordset
'objet connexion
Dim cnNwind As ADODB.Connection
'objet stream
Dim bStream As ADODB.Stream
'chaine de connexion
Const STRCONN = "Provider=Microsoft.Jet.OLEDB.3.51;" _
& "Persist Security Info=False;" _
& "Data Source=" & MDBPATH
'-------------------------------
'taille du buffer (cf plus loin)
Const BFSIZE = 78
'*******************************
'Remarque :
'   Ceci correspond au dernier emplacement
'   contenant 'l'entête' du fichier bmp
'   généré par MS Access.
'   Tout ce qui est après 78 correspond à l'image elle même.
'   Pour voir, ouvrir le fichier temp.bmp et temp2.bmp
'   dans un éditeur exadécimal et constater la <>...
'*******************************
Private Sub cmdNext_Click()
    With rsCategories
        .MoveNext
        If .EOF Then .MoveLast
    End With
    '----
    getPicture rsCategories, Image1
    lblProduit.Caption = rsCategories!Description
End Sub
'-----------------------------
Private Sub cmdPrevious_Click()
    With rsCategories
        .MovePrevious
        If .BOF Then .MoveFirst
    End With
    '----
    getPicture rsCategories, Image1
    lblProduit.Caption = rsCategories!Description
End Sub

'------------------------------
Private Sub Form_Load()
    Set cnNwind = New ADODB.Connection
    Set rsCategories = New ADODB.Recordset
    '----
    cnNwind.Open STRCONN
    rsCategories.Open "select * from catégories", _
        cnNwind, adOpenKeyset, adLockPessimistic
    '----
    getPicture rsCategories, Image1
    lblProduit.Caption = rsCategories!Description
End Sub
'------------------------------
Public Function getPicture(RS As ADODB.Recordset, objCnt As Object)
    Dim strTemp As String
    Set bStream = New ADODB.Stream
    bStream.Type = adTypeBinary
    bStream.Open
    '----
    bStream.Write RS.Fields("Illustration").Value
    bStream.SaveToFile "C:\Temp.bmp", adSaveCreateOverWrite
    '78 items en trop BM = début du fichier bmp en exa
    Open "C:\Temp.bmp" For Binary As #1 'Source
    Open "C:\Temp2.bmp" For Binary Access Write As #2  'Destination
    Dim data As String
    data = String(BFSIZE, 0)
    Get #1, , data
    data = String(LOF(1) - BFSIZE, 0)
    Get #1, , data
    Put #2, , data
    Close #1, #2
    objCnt.Picture = LoadPicture("c:\temp2.bmp")
End Function

Conclusion :


Si vous n'avez pas ADO 2.5 --> http://www.simplysoftware-uk.com/html/bin/mdac_typ.exe
@+!

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

reivon
Messages postés
81
Date d'inscription
lundi 18 février 2002
Statut
Membre
Dernière intervention
4 février 2005
-
ecoute, j'ai pas encore essayer, mais ca m'interresse enormement puisque j'en avais justement besoin !! un petit detail pour ceux qui ont access 2000, au debut il faut mettre Provider = "Microsoft.jet.OLEDB.4.0" a la place de 3.51 ! Ouais, chez moi, quand je mettais 3.51, il voulait pas lire les bases .....
a+
reivon
reivon
Messages postés
81
Date d'inscription
lundi 18 février 2002
Statut
Membre
Dernière intervention
4 février 2005
-
bon, ba ca marche pas, me dit qu'il manque la bibliotheque, je la met, mais apres il y a une erreur utilisateur avec la declaration du Stream, je le shinte en le mettant en commentaire, mais apres il met une erreur avec le adopenkeyset ... bon c'est pe etre moi que fe une erreur de config ... alors dis moi comment config please !
VicoLaChips2
Messages postés
439
Date d'inscription
dimanche 20 janvier 2002
Statut
Membre
Dernière intervention
2 février 2010
1 -
Stream ne fonctionne qu'avec ADO 2.5 et au dessus. Le source contient maintenant une référence au ctrl ADO 2.5 au lieu du 2.7 que j'avais choisi.
Si Dans projet références il n'y a pas Microsoft activeX data objects 2.5 de 'sélectionnable', ça ne marchera pas !! -:)
@+
cs_Snoow
Messages postés
4
Date d'inscription
lundi 14 avril 2003
Statut
Membre
Dernière intervention
4 novembre 2003
-
Code sympathique et utile !

Cependant, serait t'il possible de faire la meme chose directement en mémoire (sans passer par une fichier temp) ?
Commenter la réponse de reivon

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.