Sedikiit berbagi lagi.. Mungkin Teman2 ada kesulitan mengenai memunculkan file Image Database Acces ke VB. Saya menggunakan dua Cara untuk mewujudkan hal tersebut:
- Me-Load Gambar dalam Kontrol Image dari String Alamat Gambar yang telah ada di Field Database, jadi Field dalam tabel bertype Text. Keuntungannya Database berukuran lebih Kecil dibanding cara kedua.
- Meload Gambar Dari Field yang bertype OLE Object kedalam kontrol Image. Keuntungannya semua gambar dalam satu database sehingga dapat sebagai pustaka gambar.
Kali ini kita akan menggunakan cara yang kedua, Buat Database Acces bernama "BioData.mdb" terdiri atas satu Tabel yaitu "TblPhotoSaja" dan di dalamnya buat field Type Ole Object beri nama "Image",serta satu field lagi Bertype AutoNumber berinama "Id", Langsung saja ^_^ ini saourcenya..
Copy Paste Code Dibawah Ini Dalam form
Option Explicit Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long Private Declare Function lOpen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long Private Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long Private Declare Function GetFileSize Lib "kernel32" (ByVal hFile As Long, lpFileSizeHigh As Long) As Long Private lpFSHigh As Long Private strfilepath As String Private Buffer As String Private Const OF_READ = &H0& Private db As ADODB.Connection Private WithEvents adoPrimaryRSImageName As Recordset Private Type OPENFILENAME lStructSize As Long hwndOwner As Long hInstance As Long lpstrFilter As String lpstrCustomFilter As String nMaxCustFilter As Long nFilterIndex As Long lpstrFile As String nMaxFile As Long lpstrFileTitle As String nMaxFileTitle As Long lpstrInitialDir As String lpstrTitle As String Flags As Long nFileOffset As Integer nFileExtension As Integer lpstrDefExt As String lCustData As Long lpfnHook As Long lpTemplateName As String End Type Private Function GetFile(ByRef frm As Form) As String Dim OFName As OPENFILENAME OFName.lStructSize = Len(OFName) 'Set the parent window OFName.hwndOwner = frm.hWnd 'Set the application's instance OFName.hInstance = App.hInstance 'Select a filter OFName.lpstrFilter = "Bitmap (*.bmp)" + Chr$(0) + _ "*.bmp" + Chr$(0) + _ "Jpg (*.jpg)" + Chr$(0) + _ "*.jpg" + Chr$(0) + _ "Icons (*.ico)" + Chr$(0) + _ "*.ico" + Chr$(0) + _ "Windows Metafiles (*.wmf)" + Chr$(0) + _ "*.wmf" + Chr$(0) + _ "Jpeg (*.jpeg)" + Chr$(0) + _ "*.jpeg" + Chr$(0) + _ "Gif (*.gif)" + Chr$(0) + _ "*.gif" + Chr$(0) + _ "All Files (*.*)" + Chr$(0) + _ "*.*" + Chr$(0) 'create a buffer for the file OFName.lpstrFile = Space$(254) 'set the maximum length of a returned file OFName.nMaxFile = 255 'Create a buffer for the file title OFName.lpstrFileTitle = Space$(254) 'Set the maximum length of a returned file title OFName.nMaxFileTitle = 255 'Set the initial directory 'OFName.lpstrInitialDir = "C:\" 'Commented so that the box opens on the last directory browsed 'Set the title OFName.lpstrTitle = "Open Dialog Box" 'No flags OFName.Flags = 0 'Show the 'Open File'-dialog If GetOpenFileName(OFName) Then GetFile = Trim$(OFName.lpstrFile) Else GetFile = "" End If End Function Private Sub SaveBitmap(ByRef adoRS As ADODB.Recordset, ByVal strField As String, ByVal SourceFile As String) 'This sub copies the actual file into a byte array. 'This byte array is then used as the value for 'the field having an image data type Dim Arr() As Byte Dim Pointer As Long Dim SizeOfThefile As Long Pointer = lOpen(SourceFile, OF_READ) 'size of the file SizeOfThefile = GetFileSize(Pointer, lpFSHigh) lclose Pointer 'Resize the array, then fill it with 'the entire contents of the field ReDim Arr(SizeOfThefile) Open SourceFile For Binary Access Read As #1 Get #1, , Arr Close #1 adoRS(strField).Value = Arr Exit Sub End Sub Private Sub cmdFirst_Click() If adoPrimaryRSImageName.BOF And adoPrimaryRSImageName.RecordCount = 0 Then MsgBox "Anda Tidak Memiliki Data Record, Klik Tombol " & """" & "Tambah Record" & """" & " untuk Membuat Record." Else adoPrimaryRSImageName.MoveFirst End If End Sub Private Sub cmdLast_Click() If adoPrimaryRSImageName.EOF And adoPrimaryRSImageName.RecordCount = 0 Then MsgBox "Anda Tidak Memiliki Data Record." Else adoPrimaryRSImageName.MoveLast End If End Sub Private Sub cmdNext_Click() If adoPrimaryRSImageName.EOF And adoPrimaryRSImageName.RecordCount = 0 Then MsgBox "Anda Tidak Memiliki Data Record." End If If Not adoPrimaryRSImageName.EOF Then adoPrimaryRSImageName.MoveNext If adoPrimaryRSImageName.EOF And Not adoPrimaryRSImageName.RecordCount = 0 Then Beep adoPrimaryRSImageName.MoveLast End If End Sub Private Sub cmdPrevious_Click() If adoPrimaryRSImageName.BOF And adoPrimaryRSImageName.RecordCount = 0 Then MsgBox "Anda Tidak Memiliki Data Record" End If If Not adoPrimaryRSImageName.BOF Then adoPrimaryRSImageName.MovePrevious If adoPrimaryRSImageName.BOF And Not adoPrimaryRSImageName.RecordCount = 0 Then Beep adoPrimaryRSImageName.MoveFirst End If End Sub Private Sub CariSimpanImage_Click() strfilepath = GetFile(Me) If strfilepath <> "" Then Image1.Picture = LoadPicture(strfilepath) SaveBitmap adoPrimaryRSImageName, "Image", strfilepath End If End Sub Sub Koneksi() Set db = New ADODB.Connection db.CursorLocation = adUseClient db.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "\BioData.mdb" Set adoPrimaryRSImageName = New ADODB.Recordset adoPrimaryRSImageName.Open "TblPhotoSaja", db, adOpenDynamic, adLockOptimistic Set Image1.DataSource = adoPrimaryRSImageName End Sub Private Sub Form_Load() Koneksi End Sub Private Sub Form_Unload(Cancel As Integer) Set db = Nothing Set adoPrimaryRSImageName = Nothing Unload Me End Sub