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
@+!
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.