Home > Visual Basic > Menyimpan dan menampilkan foto di ms access

Menyimpan dan menampilkan foto di ms access

December 29, 2009

Disini saya tidak akan menjelaskan bagaimana melakukan koneksi ke database access, intinya aplikasi Anda sudah siap menjalankan perintah SELECT, INSERT, UPDATE, dan DELETE. Jika Anda masih kesulitan bisa dilihat disini.

Untuk kasus disini kita akan menyimpan data mahasiswa dengan tiga field saja, lihat gambar berikut :

Khusus untuk field foto tipe yang dipilih adalah OLE Object, kita langsung aja copy paste kode berikut di module :

Option Explicit

Public Const CHUNK_SIZE     As Long = 16384

Dim rsImage                 As ADODB.Recordset

Dim i                       As Long
Dim lsize                   As Long
Dim iChunks                 As Long
Dim nFragmentOffset         As Long
Dim lchunks                 As Long

Dim nHandle                 As Integer
Dim varChunk()              As Byte

Public Function fileExists(ByVal strNamaFile As String) As Boolean
    If Not (Len(strNamaFile) > 0) Then fileExists = False: Exit Function

    If Dir$(strNamaFile, vbNormal) = "" Then
        fileExists = False
    Else
        fileExists = True
    End If
End Function

Public Sub closeRecordset(ByVal vRs As ADODB.Recordset)
    On Error Resume Next

    If Not (vRs Is Nothing) Then
        If vRs.State = adStateOpen Then
            vRs.Close
            Set vRs = Nothing
        End If
    End If
End Sub

Public Function addImageToDB(ByVal query As String, ByVal imageName As String, ByVal imageField As String) As Boolean
    On Error GoTo errHandle

    Set rsImage = New ADODB.Recordset
    rsImage.Open query, conn, adOpenKeyset, adLockOptimistic
    If Not rsImage.EOF Then
        nHandle = FreeFile
        Open imageName For Binary Access Read As nHandle
        lsize = LOF(nHandle)
        If nHandle = 0 Then Close nHandle

        lchunks = lsize / CHUNK_SIZE
        nFragmentOffset = lsize Mod CHUNK_SIZE

        ReDim varChunk(nFragmentOffset)
        Get nHandle, , varChunk()
        rsImage(imageField).AppendChunk varChunk()

        ReDim varChunk(CHUNK_SIZE)
        For i = 1 To lchunks
            Get nHandle, , varChunk()
            rsImage(imageField).AppendChunk varChunk()
            DoEvents
        Next
        rsImage.Update
    End If
    Call closeRecordset(rsImage)

    addImageToDB = True

    Exit Function
errHandle:
    addImageToDB = False
End Function

Public Function getImageFromDB(ByVal query As String) As IPictureDisp
    Dim sFile           As String

    On Error GoTo errHandle

    Set rsImage = New ADODB.Recordset
    rsImage.Open query, conn, adOpenForwardOnly, adLockReadOnly
    If Not rsImage.EOF Then
        If Not IsNull(rsImage(0).Value) Then
            nHandle = FreeFile

            sFile = App.Path & "\output.bin"
            If fileExists(sFile) Then Kill sFile
            DoEvents

            Open sFile For Binary Access Write As nHandle

            lsize = rsImage(0).ActualSize
            iChunks = lsize \ CHUNK_SIZE
            nFragmentOffset = lsize Mod CHUNK_SIZE

            varChunk() = rsImage(0).GetChunk(nFragmentOffset)
            Put nHandle, , varChunk()
            For i = 1 To iChunks
                 ReDim varChunk(CHUNK_SIZE) As Byte

                 varChunk() = rsImage(0).GetChunk(CHUNK_SIZE)
                 Put nHandle, , varChunk()
                 DoEvents
            Next
            Close nHandle

            Set getImageFromDB = LoadPicture(sFile, , vbLPColor)

        Else
            Set getImageFromDB = Nothing
        End If

    Else
        Set getImageFromDB = Nothing
    End If
    Call closeRecordset(rsImage)

    Exit Function
errHandle:
    Set getImageFromDB = Nothing
End Function

Untuk di form cukup dengan kode sederhana berikut :

Private Sub cmdSimpan_Click()
    'untuk format gambar bisa JPG atau BMP
    strSql = "INSERT INTO mhs (nim, nama) VALUES ('" & txtNIM.Text & "', '" & txtNama.Text & "')"
    conn.Execute strSql

    If fileExists(txtLokasiFoto.Text) Then
        strSql = "SELECT nim, foto FROM mhs WHERE nim = '" & txtNIM.Text & "'"
        If Not addImageToDB(strSql, txtLokasiFoto.Text, "foto") Then MsgBox "Foto mahasiswa gagal disimpan !"
    End If
End Sub

Private Sub cmdTampil_Click()
    strSql = "SELECT foto FROM mhs WHERE nim = '" & txtNIM.Text & "'"
    Set picMhs.Picture = getImageFromDB(strSql)
End Sub

Selamat mencoba🙂

  1. shoufan
    January 28, 2010 at 4:12 am

    tangs

  2. tami
    April 26, 2010 at 2:57 am

    assalamualaikum,mas
    saya yg wktu itu nanya2,
    saya kesulitan lagi ne mas,,
    saya sebenernya mau bikin kamus digital yang bisa ngeluarin suara juga dari kata yang dicari,
    nah saya kan nyoba simpan file suaranya (WAV) ke database ms.access nyontek script simpan foto mas yang dipostingan ini,,tpi ga bisa kesimpen mas,,,bisa tolong kasih solusi saya salah dimana mas, pesan errornya suara tidak tersimpan,,,
    saya mohon banget bantuannya yah mas,,,

  3. April 26, 2010 at 7:02 am

    Waalaikumussalam
    Coba download samplenya diSINI

  4. tami
    May 1, 2010 at 4:13 am

    assalamu’alaikum,,,
    mas, saya coba untuk menampilkan dan memplay file suaranya di form yg berbeda dari form tempat menginput file suara,,,
    saya coba copykan, tidak ada pesan error tetapi suaranya tidak main, mas…
    mohon bantuannya mas,,,

  5. May 1, 2010 at 9:39 am

    tami :

    assalamu’alaikum,,,
    mas, saya coba untuk menampilkan dan memplay file suaranya di form yg berbeda dari form tempat menginput file suara,,,
    saya coba copykan, tidak ada pesan error tetapi suaranya tidak main, mas…
    mohon bantuannya mas,,,

    Waalaikumussalam
    Mungkin seperti INI

    Selamat mencoba🙂

  6. tami
    May 6, 2010 at 4:37 am

    assalamu’alaikum mas,,,
    terima kasih ya mas,,,suara dari kata d kamus saya sudah berhasil,,,makasih bantuan n bimbingannya,,, ^^
    sukses teruss yah,,, ^^

    • April 14, 2014 at 9:48 am

      mas bs krm cth aplikasi kmus mas gk..
      coss sy ad tgs kul utk nampilin suara jg,,,,
      thx

  7. May 6, 2010 at 5:21 am

    Waalaikumussalam
    Oke sama2x

  8. me
    May 13, 2010 at 7:09 pm

    thx kk.. dari kamaren saia butek gag bisa keload” foto na.. huh..

  9. May 14, 2010 at 1:06 am

    me :

    thx kk.. dari kamaren saia butek gag bisa keload” foto na.. huh..

    makanya biar enggak butek, sering2x berkunjung kesini😀

  10. June 3, 2010 at 2:52 pm

    Assalamualaikum.

    Trimakasih ats infonya.

    Mas, saya sedang ad tgas bwt aplkasi sederhana pngolahan citra mengakses gambar sebagai database.
    saya berencana memanggil gambar didatabase sebagai objek berjalan dan menjadi tampilan grayscale kemudian tampilan grasycale akan tersimpan otomatis sebagai data penganalisaan.
    Mhon infonya mas, klo ga keberatan.
    trimakasih.

  11. June 3, 2010 at 10:20 pm

    Waalaikumussalam
    Sy masih belum jelas dg pertanyaannya, tapi klo hanya ingin menyimpan gambar yang ada di picturebox, Anda bisa menggunakan kode berikut :

    Private Sub cmdSavePicture_Click()
        Call SavePicture(Picture1.Picture, "c:\tess.jpg")
    End Sub
    

    Trus tinggal Anda kembangkan agar bisa langsung menyimpan ke database dengan memanggil method addImageToDB yang ada di artikel ini.

    Selamat mencoba🙂

  12. deni
    July 25, 2010 at 7:11 am

    numpang mampir y… saya pengen banget belajar vb6.0 dan saya udah copy paste code di atas tapi kok masih ada perintah error… “user-defined type not defined…”
    apa yang salah dengan perintah itu,, pada hal code gak di ubah2..
    mohon pencerahan’y,, trus klo upload code mohon dicantumkan kebutuhan component2 yg diperlukan donk,, biar gak bingung!! makasih

  13. July 25, 2010 at 7:54 am

    deni :

    numpang mampir y… saya pengen banget belajar vb6.0 dan saya udah copy paste code di atas tapi kok masih ada perintah error… “user-defined type not defined…”
    apa yang salah dengan perintah itu,, pada hal code gak di ubah2..
    mohon pencerahan’y

    Tq mas udah mampir, klo enggak salah kode yang ke blok error ini ya ?

    Dim rsImage As ADODB.Recordset
    

    VB 6 punya library standar untuk akses database, sy rasa library “ADODB” bukan library yang asing bagi yg mulai belajar akses database dg vb.

    Seharusnya Anda sudah mengenal library “ADODB” seperti Anda mengenal komponen CommandButton, TextBox, Label dan lain-lain.

    Sy yakin Anda sudah tau library ini :

    Microsoft ActiveX DAta Objects 2.x Library
    

    dan bagaimana cara menambahkannya ke project VB🙂

    deni :
    trus klo upload code mohon dicantumkan kebutuhan component2 yg diperlukan donk,, biar gak bingung!! makasih

    Klo upload sample program yg menggunakan komponen non standar vb, biasanya memang sy kasih petunjuk penggunaan sebelum membuka source codenya.

  14. yuli
    October 12, 2010 at 3:20 am

    Thanks infonya ! Sangat membantu.
    Saya mau coba dulu mas, yang sy cari mengubah ukuran yang tersimpan di database sama semua tidak tergantung sumber gambarnya.

  15. October 15, 2010 at 1:38 am

    yuli :

    Thanks infonya ! Sangat membantu.

    oke sama2x

    yuli :
    Saya mau coba dulu mas, yang sy cari mengubah ukuran yang tersimpan di database sama semua tidak tergantung sumber gambarnya.

    wah klo ini sy juga belum pernah coba, klo udah ketemu share ya?😀

  16. faizal
    October 27, 2010 at 3:45 am

    Asalammualaikum
    Gan mau tanya dong!
    contoh program yang MHS+Foto di atas gimana seh?
    mungkin bisa di jelaskan lebih spesifik,dengan gambar beserta keterangan!
    trims gan untuk Help nya
    ditunggu ya jawabannya

    • October 29, 2010 at 3:16 am

      Kurang jelas ya?, coba gini aja :
      1. Buat database + tabel seperti contoh diatas
      2. Buat project baru trus tambahkan referensi ADO kemudian simpan satu folder dg databasenya
      3. Testing buat koneksi ke database, jika pada tahap ini sudah berhasil baru bisa dilanjutkan dg artikel diatas.

      @om faizal sory ya sy lagi males coding, jadi belum bisa bantu😀

  17. upin
    November 26, 2010 at 4:19 am

    Assala’mualaikum mas, sy lg bingung dengan pembuatan rancangan flowchart dr program yg akan sy bwt, sebelumnya sy sertakan cth aplikasi & rancangan flowchart yg sebagian sudh sy bwt d sini http://www.4shared.com/file/789_okqD/file.html

    tolong d bantu y mas, mngkin pertanyaan sy agak melenceng dikit dr coding..

    • November 26, 2010 at 7:09 am

      Waalaikumsalam

      Sy udah cek dan penulisan flowchart programnya udah benar jadi tinggal dilanjutkan aja😀, cuma saran saya sebaiknya untuk simbol penghubung/connector pake yg lingkaran aja karna sudah umum digunakan😀 CMIIW.

      • upin
        November 26, 2010 at 10:14 am

        Admin :
        Waalaikumsalam
        Sy udah cek dan penulisan flowchart programnya udah benar jadi tinggal dilanjutkan aja , cuma saran saya sebaiknya untuk simbol penghubung/connector pake yg lingkaran aja karna sudah umum digunakan CMIIW.

        siap, tp sy masih bingung ni mas dengan rancangan flowchart bwt menu metronomenya bs tlong d bantu gk mas ??

        • November 27, 2010 at 4:42 am

          Sory om, jadwal coding lagi padat nih jadi belom bisa bantu😦

  18. ucup
    November 30, 2010 at 3:38 am

    mas..punya referensi coding metode Madm (multiple attributes decision making) menggunakan VB.06 ap ngg…pliss bntu yaa mas, ud buntu bnget nih🙂

    • November 30, 2010 at 5:15 am

      Sy lebih buntu om😀 baru dengan istilah itu, ternyata salah satu algoritmanya fuzzy toh😆

      • ucup
        November 30, 2010 at 6:44 pm

        wah sma2 buntu..cri peta dmn yaa..biar ngg mandeg d jlan buntu ini😀 …yaa klu kiranya mas buat gtu ( ngarep ) atw nemu share k sya yaa mas he..he..Go..VB Go..

  19. sofian
    November 30, 2010 at 5:39 pm

    mas..plizz bantu saya😥 saya uda coba script d ats dn ud ikutin smw aturan yg ada,ud ngg tau brapa hari dn minggu ttp aja ngg bsa, saya combine dgn script vb saya ,saya dpt tugas membuat data karyawan,d awal ud d Acc,tp ktika progres slanjutnya eh malah d suruh nmbahin foto untuk tiap karyawan nya,haduh mna sya msih newbi,sma skli blm prnah belajar yg pke save load gmbar..btw dibawah saya lampirkan link kerjaan saya yg saya upload..mgkn mas bs cek…pliss cm gra2 poto ud hmpir 2 bln ngg maju progress😥 help me mas….

    http://www.mediafire.com/?q2wvi5ig9bqadbw

    • December 1, 2010 at 1:31 am

      Wah si om ngapusi, mana source untuk menyimpan dan menampilkannya katanya udah dicoba ?

      • sofian
        December 1, 2010 at 4:50 am

        yaa sapa yg ngapusi,wah mas..itu sngaja saya ksh yg msh asli pnya saya..sya pkir dr source asli yg sya ksih k mas,masnya ud bs ksh arahan buat saya..lg pula yg kerjaan saya yg make source mas sampai saat ini msh error truss…kn jd malu😥, maklum newbi n otodidak mas…

        ni sya lampirkan ujicoba pny saya dr source ny mas..plizz d bntu yaa mas pliz🙂

        http://www.mediafire.com/?z67t3p1xthac2o7

        • December 1, 2010 at 5:56 am

          re embohh

          • sofian
            December 1, 2010 at 8:01 am

            wah trims mas..ud ane cb n bisa save n load..tp ni ane cb tmbahin update ny krn td ane coba blm bisa plus nyoba ngeotomatisin ukuran foto nya…yaa mg2 bs…skli lg trims yaa mas,mksih bngt..:)

            • December 1, 2010 at 2:52 pm

              Oke om semoga sukses😀

  20. mrsatan
    December 2, 2010 at 12:16 pm

    Kalo database nya MySQL gmana?Type nya Long Blob?
    Saya nyimpan bisa klo Ngeload nya gagal terus mas……

    • December 3, 2010 at 12:56 am

      Iya om, artikel ini memang belum bisa menghandle untuk database MySQL, jadi om bisa coba langsung artikel yang ada disini.

      Selamat mencoba🙂

  21. mrsatan
    December 3, 2010 at 2:08 am

    Gan Punya Contoh Gak, heeeeee! Maaf Ni Ngrepotin, tadi malam utak-atik punya Agan ini gak bisa2…..
    Maklum Newbie!!!!!

    • December 3, 2010 at 3:21 am

      Makanya yang di otak-atik itu yang INI.

      Tapi pake referensi Microsoft ActiveX Data Object 2.5 Library

      Selamat mencoba🙂

  22. arif kurniawan
    July 25, 2011 at 4:03 am

    Ass Wr.Wb Mas Programmer ..
    Mohon pencerahannya mas broo , saya kesulitan sekali nih mencari2 referensi tentang program yang saya akan buat , sampai akhirnya kbuka juga n nemuin link nya mas broo , langsung aja yah mas broo , begini ceritanya😀 , he he , saya rencana akan membuat aplikasi parkir menggunakan capture gambar dengan device nya webcame, yang nantinya gambar akan tercapture melaluli webcame dan file gambar yang telah tercapture akan tersimpan ke database , database yang digunakan adalah SQL Server 2000, mohon mass broo pencerahannya ….. terimakasih banyak🙂

    NB : Mas broo klo ada contohnya minta tolong di posting disini bwt pembelajaran juga untuk temen2 programmer yang laen …. or ke arif_chucky1405@yahoo.co.id

    Maaf Mas Broo Newbie nih ….. mohon sangad pencerahannya ……..🙂

    • July 26, 2011 at 1:59 am

      Coba cek disini om, sudah banyak yg membahas masalah ini.

  23. herricardo kaka
    May 29, 2012 at 9:25 am

    mas mau tanya untuk coding navigasi untuk yg dibawah ini :
    Private Sub Form_Load()
    ‘array load photo
    Call bukadatabase
    Dim Index As Long
    Dim recCount As Long
    Set rs = New ADODB.Recordset
    rs.Open “select * from menu_resto order by kode_menu”, db, adOpenDynamic, adLockBatchOptimistic

    If Not rs.EOF Then
    rs.MoveLast
    recCount = rs.RecordCount
    rs.MoveFirst

    For Index = 1 To recCount
    Photo1(Index – 1).LoadPhoto rs!Image
    XPText1(Index – 1).Text = rs!nama_menu
    If Index > Photo1.UBound Then Exit For
    If Index > XPText1.UBound Then Exit For

    rs.MoveNext
    Next
    End If
    end sub

    • May 30, 2012 at 9:01 am

      Lagi males coding nih om😀
      Mungkin bisa dicoba contoh yg disini dulu😀.

  24. June 1, 2012 at 10:36 pm

    malam mas
    saya mw tanya misal saya mw buat aplikasi client server
    di mana client yang bertindak adlh cs dan operator
    trus databasenya ada di server
    nah ntinya cs akan menyimpan file ke database server dengan menggunakan mysql
    lalu operator akan mendownload file tersebut
    informasi yang di simpan itu berupa informasi biasa kyk harga kode
    dll beserta ada file corel misalnya
    nah ada tidak contoh menyimpan file ke mysql di server dari client
    dan download file dari mysql
    tq sebelumnya
    mohon bantuannya

    • June 2, 2012 at 9:21 am

      Ini file apa ya om ? Kok ada informasi harga, kode dll ?
      Bukannya informasi itu langsung disimpan di tabel ? Kenapa harus pake file lagi ?

  25. YourHeart
    February 2, 2013 at 4:51 pm

    mas cepet mana ya akses database, pake sql command yang di execute di vb6 atau pake vb6 command seperti .addnew sedangkan kalo sql command biasanya kan insert

  26. taufiq
    November 15, 2013 at 12:21 pm

    mas minta tolong,,
    saya lagi nyusun skirpsi nech mas kbetulan coding untuk menampilkan foto di form cari saat di klik 2 kali digrid siswanya,,,,
    bisa bantu ga mas mintta source codenya n ini file punya saya http://www.4shared.com/rar/qjj_q_32/login1.html
    boekit.alay@gmail.com
    tanks atas bantuannya mas,,

  27. taufiq
    November 15, 2013 at 8:01 pm

    maaf mas ini file yang betul yang di atas tadi salah,,
    mohon bantuan dan pencerahannya,,,

  28. taufiq
    November 15, 2013 at 8:01 pm
  1. August 8, 2012 at 2:34 am
Comments are closed.
%d bloggers like this: