Skip to main content

Tentang Blog Ini

Access Terapan adalah sebuah blog yang dibuat untuk memberikan pengetahuan, apa itu Microsoft Access dan Visual Basic for Application (VBA) yang ada ada di Access. Blog ini disusun berdasarkan pengalaman pribadi, saat pemilik blog bekerja sebagai staff akuntansi di sebuah perusahaan, di mana pada saat itu, perusahaan belum memiliki software akuntansi yang baku.

Di dalam blog ini, kita banyak menjumpai kode VBA. Tidak seperti Excel atau Word, Access yang merupakan salah satu aplikasi perkantoran yang dibuat oleh Microsoft, bagi kebanyakan orang terlihat rumit. Apalagi orang yang tidak memahami logika pemrograman. Bila di Excel atau Word, pengguna hanya menekan tombol seperlunya, semua bentuk laporan sudah dapat disajikan. Di Access, kita harus membuat semacam perlakuan agar data yang ditampilkan bisa sesuai dengan keinginan. Perlakuan inilah yang banyak melibatkan VBA/Macro, yang bagi kebanyakan orang tampak memusingkan.

Untuk lebih mudah bagi kita dalam memahami apa itu VBA, maka kita dapat mengaplikasikannya langsung dalam pembuatan program akuntansi seperti telah tersedia di Daftar Isi. Bila mengalami kesulitan dalam memperoleh kode VBA, maka pembaca blog Access Terapan dipersilakan untuk memperoleh kode VBA dengan membaca buku Membuat Program Akuntansi dengan MS Access VBA + CD


Comments

  1. halo,
    saya mau tanya file akuntansi yang final.
    apalagi yang harus saya lakukan setelah mengisi administrasi sistem?

    saya melihat, pada jurnal sudah ada angka saldo akhir, dimana saya bisa mengubahnya?
    terima kasih.
    Harlen

    ReplyDelete
    Replies
    1. Terima kasih sudah membeli buku saya. Software yang ada di Bonus CD itu murni untuk proses belajar. Setelah administrasi sistem, pengisian kode rekening yang dibutuhkan, dan periode akuntansi, kita bisa memasukkan saldo awal untuk setiap rekening yang ada melalui jurnal temporer.

      Kalau mau digunakan serius, sebaiknya bagian table dikosongkan lebih dahulu (tanpa data), terus login dengan menggunakan Id Pengguna=admin dan password dikosongkan. Nah, dari sini kita benar2 mulai dari awal,

      Bila ada kendala lebih detail, silakan ajukan pertanyaan di sini atau lewat email spt tertulis di buku saya.

      Terima kasih.

      Delete
  2. Slm kenal pak yanto
    Mau izin download filenya
    Mohon dibalas emailnya pak

    ReplyDelete
  3. Sudah. Silakan buka Collection-nya. Selamat mencoba

    ReplyDelete
  4. Ya tar sy coba pelajari...
    Maaf pak daftar isi blog ini memang sampai bab itu saja ya (tidak sampai artikel yg terakhir)

    ReplyDelete
    Replies
    1. Daftar isi sementara ini cuma untuk buku saja. Saya memang ada rencana membuat daftar isi yang lain, tetapi karena belum sepenuhnya lengkap, jadi belum dipublish. Masih sedikit isinya.

      Delete
  5. sekarang saya sudah beli bukunya pak... nanti mohon bimbingannya bila masih bingung.
    saya compile tidak bisa ya ( error di frmResponBiaya ada combo12 di VBA tapi di form combonya tidak ada) apa namanya diganti/gmn?

    ReplyDelete
    Replies
    1. Terima kasih sudah membeli buku saya dan terima kasih juga masukannya. Itu "Private Sub Command14_Click" pada frmResponBiaya dihapus saja, tidak ada gunanya. (Saya lupa menghapus)

      Silakan kalau ada yang perlu ditanyakan, bisa nulis komen di post yg relevan atau di page ini bila tidak tahu persis.

      Delete
  6. Salam kenal,saya lagi cari buku bpk di toko,
    mau nanya lansung saja:

    Transaksi Debet. Kredit. Sisa akhir
    1.Saldo. 10000. 0. 10000
    2.beli. 2000. 9000
    3.jual. 500. 0. 9500

    Saldo akhir=saldo akhir+(debet-kredit)
    Bagaimana cara menuliskan rumus saldo akhir di query
    Di excel ini gampang, apa bisa di query,atau form, mohon bantuannya pak, sebelumnya saya ucapkan trimakasih

    ReplyDelete
  7. Perbaikan posting saya:

    Transaksi........Debet........Kredit.....Saldo akhir
    Saldo. ........10000...................10000
    Beli1. .........0 ........5000..... ..9500
    Jual1. .........2000..........0........11000

    Saldo akhir= saldo akhir+(debet-kredit)

    Bagaimana pak cara menuliskan rumus saldo akhir di kolom query atau di form pak, terimakasih pak

    ReplyDelete
  8. Perbaikan posting saya:

    Transaksi........Debet........Kredit.....Saldo akhir
    Saldo. ........10000...................10000
    Beli1. .........0 ........5000..... ..9500
    Jual1. .........2000..........0........11000

    Saldo akhir= saldo akhir+(debet-kredit)

    Bagaimana pak cara menuliskan rumus saldo akhir di kolom query atau di form pak, terimakasih pak

    ReplyDelete
    Replies
    1. Bu Amelia,
      Access beda dengan Excel. Di Access, untuk membuat saldo akhir seperti yang ibu inginkan (seperti di Excel) tidak bisa langsung menggunakan select query, tetapi harus menggunakan Insert Query plus menggunakan kode VBA dalam modul.

      Insert query ini juga harus dibuat dengan menggunakan statement loop for ... next. Nah di dalam loop ini, kita membuat insert query.

      Di posting yang berjudul http://access-terapan.blogspot.co.id/2015/02/membuat-laporan-buku-besar.html, gambar 1 atau gambar 2, di situ ada text box yang bernama SaldoAkhir. Cara menghitungnya sama dengan seperti yang Ibu Amel tulis di atas. Kode VBA-anya lumayan rumit karena melibatkan parameter kode rekening dan periode dalam rentang waktu tertentu.

      Sebelum insert query dilakukan, kita harus membuat semacam tabel temporer yang digunakan untuk menampung data pembuatan laporan seperti yang ibu buat. Contohnya dapa dilihat di posting http://access-terapan.blogspot.co.id/2015/02/membuat-form-buku-besar.html, pada gambar 2. Pada gambar 2 itu, ada tabel temporer yang bernama tblBukuBesar. Di tblBukuBesar itu ada field yang bernama SaldoAkhir yang digunakan untuk mengisi text box SaldoAkhir. Nah, dengan tblBukuBesar itu, kita baru membuat select query yang melibatkan tabel master seperti pada gambar 2 di http://access-terapan.blogspot.co.id/2015/02/membuat-form-buku-besar.html itu.

      Contoh query beserta kode vbanya ada di bonus CD. Atau, kalau mau ngambil dari web ini, ya Ibu Amel harus belajar dari daftar isi di http://access-terapan.blogspot.co.id/p/blog-page_14.html, dari awal sampai paling tidak bagian III dari
      buku Membuat Program Akuntansi dengan MS Access VBA. Semoga membantu.

      Salam

      Delete
  9. Pak Yanto... selama ini sy menulis kode langsung(tanpa ON ERROR)... tapi disini Tiap menulis fungsi kenapa harus disertai ON ERROR.......? padahal tanpa ditulis pun kalau error ada pesan kesalahan dari ms.acces... Apak ada perbedaannya / fungsinya ketika disertai ON ERROR, mohon pencerahannya

    ReplyDelete
    Replies
    1. Kalau fungsi yg dibuat semakin banyak dan kompleks, maka kita perlu menggunakan ON ERROR supaya bisa melacak kesalahan yg terjadi

      Selain itu, kita bisa mengatur pesan kesalahan sesuai dng keinginan kita supaya mudah dipahami oleh programmer.

      Delete
  10. Dimana kah kita bisa nenemukan tabel kode dan pesan error description ms.access... Sy coba cari tp belum ketemu.... Penginnya sih saya translate ke bhs indonesia untuk dijadikan modul on error biar mudah dipahami... Atau gimana pak caranya?

    ReplyDelete
    Replies
    1. Ya... itu salah satu cara. Tujuan utama ON ERROR itu sebenarnya untuk memberitahu programmer, melalui end user, fungsi apa yg bermasalah.

      Jadi misalnya, ada kesalahan dalam sebuah fungsi yg disusun oleh programmer. ON ERROR dapat menampilkan fungsi yg salah beserta kode kesalahan itu. Jadi programmer dpt langsung fokus ke fungsi yg salah itu.

      Kalau tabel kode dan pesan error description, Access 2010 ke atas mungkin hanya tersedia secara online. Tapi kalau Access 2007 ke bawah daftar tabel kesalahan bisa diproleh dng menggunakan tombol F1 (Help) lalu search error code. Access akan menampilkan hasil pencarian yg betkaitan dng error code dan list-nya.

      FYI, untuk proses belajar Access, sebaiknya memang menggunakan versi 2007 karena ada offline help yg sangat membantu kita memahami Access dan VBA. Access 2010 ke atas, semuanya menggunakan online help yv harus connect ke internet.

      Delete
    2. Ya pak ternyata memang beda kalau dikasih on error...
      Ini saya menemukan kode di internet untuk error msg
      Tapi gimana menampilkannya ya?

      Sub ListErrors()
      Dim dbs As DAO.Database
      Dim rst As DAO.Recordset
      Dim i As Long
      Dim strErr As String
      Set dbs = CurrentDb
      Set rst = dbs.OpenRecordset("Error Codes", dbOpenDynaset)
      For i = 1 To 65535
      strErr = AccessError(i)
      If strErr <> "" And strErr <> "Application-defined or object-defined error" Then
      rst.AddNew
      rst!Err = i
      rst!Error = Left(strErr, 255)
      rst.Update
      End If
      Next i
      rst.Close
      Set rst = Nothing
      Set dbs = Nothing
      End Sub

      Delete
    3. Buat tabel dng nama Error Codes yg berisi field Err (integer) dan Error (string/text). Coba SUB diganti FUNCTION. Terus, di bawah Error Codes disisipkan debug.print strErr.

      Delete
  11. Maf Pak yanto mau nanya lagi....cara buat barkode dan cara agar bisa input data otomatis ketika memakai scaner barkode gimana yaa?

    ReplyDelete
    Replies
    1. Pada dasarnya, Access jugs bisa menampung data dng menggunakan barcode.

      Untuk pengaturan lebih detail, coba kamu tanya ke penyedia barcode-nya langsung.

      Delete
  12. Dear Pak Yanto,

    untuk hal mengenai laporan keuangan seperti laporan neraca, perubahaan modal, profit and loss ada tidak ya caranya ?


    Thanks
    Hendy

    ReplyDelete
    Replies
    1. Pak Hendy, kita bisa saja membuat laporan perubahan modal, rugi laba, dan neraca di Access. Hanya saja, caranya terlihat rumit karena kita harus membuat tabel yg khusus digunakan untuk mengelompokkan rekening ke setiap laporan tsb di atas.

      Di sisi lain, kita tahu bahwa ada banyak pihak yg berkepentingan dengan laporan keuangan dan bentuknya belum tentu sama. Mereka minta laporan bentuk ini itu yg secara pengelompokkan berbeda, tetapi bottom linenya sama.

      Nah, cara paling gampang membuat laporan perubahan modal, rugi laba, dan neraca adalah dengan mengekspor data laporan neraca lajur dari Access ke Excel.

      Di Excel, kita bisa mengelompokkan lagi, nana rekening2 yg akan menjadi dasar penyusunan laporan perubahan modal, rugi laba, dan neraca sesuai dengan pihak yg berkepentingan. Caranya seperti yg dipelajari di mata kuliah Akuntansi Dasar.

      Delete
  13. Function fsBaru()
    CmdBaru.enabled= false
    CmdEdit .enabled= false
    CmdSimpan .enabled= true
    CmdHapus .enabled= false
    CmdBatal .enabled= true
    End function

    Maf pak... Bagaimana cara agar fungsi diatas menjadi fungsi global ( bisa dipakai di setiap form) cmdbaru,cmdsimpan dll.adalah tombol2 yg kita buat tiap form

    ReplyDelete
    Replies
    1. Function fsBaru(strFrm as string, strCtl as string)
      Forms("strFrm").Controls("strCtl").enabled=false
      End function

      Fungsi di atas disimpan di sebuah modul standard. Setiap detail Cmd dkibuat sepert di atas.

      Buatlah tombol perintan command button di sebuah form.

      Pada event On_Click, sisipkan fungsi =fsBaru()

      Coba jalankan tombol perintahnya. Bila berhasil, tambahkan tombol lainnya.

      Delete
    2. Masih belum bisa...gagal faham..
      Maf kalo kasih contoh kongkrit / posting artikel tentang materi ini bisa pak Yanto?

      Delete
    3. Sorry, ada yang kurang. Penjelasan lebih detail silakan baca di sini: http://access-terapan.blogspot.com/2017/07/membuat-fungsi-global-yang-berkaitan-dengan-objek-form-dan-control.html

      Delete
  14. Saya ingin membeli buku Anda, tetapi sudah tidak tersedia lagi di Gramedia Solo dan sekitarnya (stok habis), juga toko2 buku di sekitaran sini. Bisa bantu saya untuk mendapatkannya? Jika tdk ada versi cetak, ebook pun tdk masalah. Terimakasih...

    ReplyDelete
    Replies
    1. Mas Kangban, buku saya hanya dicetak 2000 eks. Sampai saat ini, saya belum dapat info dr pihak Gramedia, apakah mau diperbarui atau tidak. Kalau tidak diperbarui, saya memang berencana untuk membuat e-book.

      Tapi, saran saya, kalau Mas Kangban, telaten, ikuti saja panduan yang ada di halaman Daftar Isi blog ini. Buku yang saya tulis sama dengan apa yang ada di daftar isi blog, demikian pula dengan koding VBAnya, semuanya sama. Mas Kangban hanya perlu mendownload databasenya, lalu ikuti saja panduan/tutor yang ada di daftar isi itu.

      Satu lagi keuntungannya kalau mau belajar Access via blog ini, Mas Kangban banyak sekali menemukan tutor membuat berbagai macam aplikasi, terutama bila database-nya benar2 terpisah dengan aplikasi Access. Sangat banyak.

      Sudah banyak pembaca yang memperoleh manfaat dari belajar Access via blog ini. Jadi, silakan saja, nanti kalau ada pertanyaan, ajukan saja di artikel yang relevan dengan pertanyaannnya. Sebisa mungkin, saya akan coba membantu.

      Delete
    2. Terimakasih atas saran dan bantuannya. Saat ini saya sedang membuat program utk menangani pemesanan-pembelian bahan-stok bahan-pengiriman-penagihan menggunakan Access 2010. Program akan dipakai bersama 5-7 orang melalui jaringan LAN ~tanpa server. Diharapkan program ini dpt mengatasi kekacauan pencatatan yg selama ini terjadi. Alhamdulillah, saat diujicoba bisa berjalan baik... Kendalanya adalah: program kurang responsif, terutama di user yg komputernya jadul. Nah, di blog Anda ini saya menemukan cara pembuatan program yg sepertinya berbeda dng apa yg saya lakukan dan saya tertarik utk mencoba mengikuti alur kerjanya...

      Delete
  15. Maaf pak Yanto, Kalo fungsi ms Access untuk upload file ke google drive gimana ya?

    ReplyDelete
    Replies
    1. Kalaupun ada, secara teknis sangat rumit, karena melibatkan dua lingkungan yg berbeda sama sekali. Google mungkin menyediakan kode API yg bisa diaplikasikan di PHP, tetapi belum tentu di VB.

      Delete
  16. Maaf Pak yanto nanya Lagi.... Cara mengkompres file / folder dengan perintah Ms.acces gimana yaa...Trims

    ReplyDelete
  17. Salam kenal Pak, saya ada seorang yang baru belajar MS. Acces yang ingin saya tanyakan bagaimana caranya membuat tombol tambah data yang saya desain sendiri tanpa menggunakan pembuatan tombol yang disediakan, karna ada beberapa hal kontorol yang ingin saya masukan dalam tombol tambah data, seperti jika text1 tidak bernilai "a" dan text2=0 maka akan mumcul pesan " Data 2 tidak boleh kosong" dan kursor otomatis akan kembali ke text1, tujuan kontrol ini agar jika text1 tidak bernilai "a" makan text2 harus diatas nilai 0 untuk menghindari text2 lupa di isi. demikian Pak, mohon solusinya...

    ReplyDelete
    Replies
    1. Yang Joles tanyakan itu terkait dengan prosess validasi data. Jadi, pada event on click dari tommbol itu harus dibuat terlebih dulu kode VBA untuk memastikan bahwa record/data yang ada sudah valid (sudah memenuhi persyaratan yang diprogramkan terlebih dulu), seperti jika text1 tidak bernilai "a" dan text2=0 maka akan mumcul pesan " Data 2 tidak boleh kosong" dan kursor otomatis akan kembali ke text1. Jadi saat mau menambah data, user tidak bisa melakukannya.

      Validasi record/data ada bermacam-macam, salah satunya seperti yang Joles inginkan itu. Jadi, Joles bisa membuat function untuk memvalidasi record/data sebanyak mungkin dan menjalankannya saat berada di event on click.

      Delete
  18. Terima kasih Pak, ia Pak saya sudah masuk ke even on clik di propertis tombol itu, hanya ketika saya mengganti mode event on clik dan memasukan persyaratan yang saya maksudkan tombol tambah datanya tidak bisa menambah data, mungkin karna tombolnya dibuat di mode macro jadi ketika saya ganti ke event prosedure tombolnya tidak berfungsi. mohon bantuanya snytax tombol tambah data pada function di VBA, anggap lah saya menggunakan meenggunakan tabel nama dan nama field panjang. terima kasihh sebelumnya Pak

    ReplyDelete
    Replies
    1. Convert saja [Embedded Macro] ke VBA. Caranya, buka form dengan mode Design View, lalu pada tab Design, pilih Convert Form's Macros to Visual Basic

      Delete
  19. Terima kasih Infonya Pak.

    ReplyDelete
  20. Maaf Pak Yanto ingin bertanya lagi. saya sudah membuat sebuah form dengan subform di dalamnya, agar lebih memudahkan saya membuat form dengan menu more form yaitu model split form, saya sudah menambahkan tombol yang saya inginkan, hanya ada satu masalah yaitu proses edit, saya ingin membuat data-data yang ditampilkan pada subform (berbentuk data sheet) itu hanya bisa dilihat dan dicopy tanpa bisa diedit, untuk editing datanya saya inginkan di form utamanya, yang jadi masalah ketika propertis textnya bagian lockednya saya jadikan yes maka yg di form utama juga ikut terkunci,sehingga tidak bisa dilakukan edit data, juga saya ingin membuat shortkey pada tombol yang saya desain sendiri sehingga jika dibutuhkan saya cukup menekan kombinasi keyboard sudah bisa menjalankan tombol yang dibuat tanpa harus diklik dahulu, demikian mohon solusinya.. terima kasih sebelumnya

    ReplyDelete
    Replies
    1. Pada event on open di subform coba isikan:
      Forms("NamaSubform").Locked=True

      Untuk kombinasi shortkey, silakan pada caption sebuah control, tambahkan karakter "&". Misalnya

      Caption &Tambah Data, maka tampilannya akan menjadi huruf "T" dengan garis bawah lalu "ambah Data". Joles hanya perlu menekan Alt+T

      Delete
  21. Terima kasih atas infonya Pak, namun ketika saya membuat form dengan cara split form pada design viewnya tidak nampak mana yang menjadi sub form dan form utamanya, sehingga saya tidak bisa menuliskan kode diatas, saya mencoba membuat dua form dari satu sumber tabel yang sama, satu form yang utama itu modelnay columnar (menambilkan data per record) dan satu lagi form dgn model data sheet ( tabular) untuk menampilkan semua record data. Lalu form ke dua saya coba coba drag ke form utama sehingga menjadi sub form pada form utama, dsni saya bisa mengatur propertis sub formnya menjadi locked, namun yang kemudian menjadi masalah antara form utama dan sub form seolah2 tidak ada hubungan dan berjalan masing, saya berupaya membuat tombol filter pada form utama yang tujuannya untuk memfilter data yang akan ditampilkan pada sub form anggaplah filter berdasarkan tahun sehingga ketika saya memfilter tahun 2018 maka pada sub form yang tampil cuma semua data yang tahunnya 2018, dari data yg tampil di subform itu, ketika salah satu baris pad tabel saya sorot maka datanya akan muncul di form utama juga ( mirip model pada split form ketika data di sub form di klik maka data pada record tersebut akan ditampilkan pada form utama), terima kasih sebelumnya dan mohon solusinya Pak

    ReplyDelete
    Replies
    1. Pada dasarnya, secara teknis, yang Joles inginkan bisa dibuat secara interaktif di form utama dan subformnya. Hanya penjelasannya mesti menggunakan semacam contoh yang berisi kode VBA yang lumayan panjang dan tidak bisa dijelaskan di bagian diskusi komentar ini.

      Kalau dari penjelasan Joles, saya cenderung untuk mengatur properti Allow Edits dan Allow Additions pada subform diberi nilai False (bukan mengatur properti Locked menjadi True) sehingga keseluruhan subform tidak bisa diedit dan hanya bisa dibaca saja. Setelah itu, saat sebuah record pada subform dalam posisi On Focus, form utama akan membaca primary key yang ada di subform.

      Begitu kira-kira yang bisa saya jelaskan di sini. Semoga membantu.

      Delete
  22. Ia Pak terima kasih atas infonya, akhirnya saya mensiasati dengan memodifikasi tombol filter, dengan mengambil value pada record yang on focus di subform sebagai dasar memfilter data. untuk link antara form dan subform sekrang sudah bisa. dan untuk filter data subform untuk skrng saya masih menggunakan filter data yang ada pada acces (filter data record yang ada pada model data sheet)
    trims atas infonya

    ReplyDelete
  23. Selamat Siang Pak,
    maaf kembali menganggu, trima kasih atas bantuan bapak untuk aplikasi yg saya buat kemarin sudah sangat membantu pekerjaan saya,
    Skrng saya lagi membuat satu lagi aplikasi Absensi Pak, secara garis besar saya baru membuat 2 tabel, yaitu tabel data_Pegawai dan Tabel Harian.
    saya berencana untuk proses inputnya pada data harian pada bagian input tanggal saya letakan bagian head form jadi cukup sekali input tanggal kerja hari itu dan di bagian detail baru saya input data per pegawai untuk input data pegawai saya ambil dari tabel data pegawai, yang ingin saya tanyakan pak kode pada VB agar mengecek tabel harian jika di temukan pada tanggal kerja yang saya input sebelumny sudah pernah dilakukan entry data, akan muncul pesan bahwa" pegawai " A " telah dientry data pada tanggal tersebut. apakah anda tetap ingin mengentry data lain atau ingin keluar "

    terima kasih sebelumny Pak
    Mohon solusinya.

    ReplyDelete
    Replies
    1. Bila Tabel Harian terdiri dari satu tabel saja, maka gunakan fungsi DCount untuk mengecek apakah pegawai A sudah tercatat dalam Tabel Harian. Kriteria yang digunakan adalah nomor ID pegawai dan tanggal. Bia hasil fungsi DCount = 1, maka pegawai A sudah ada dalam Tabel Harian di tanggal kerja yang diinput. Bia hasil fungsi DCount = 0, maka pegawai A belum ada dalam Tabel Harian di tanggal kerja yang diinput dan dicatat/disimpan dalam Tabel Harian.

      Bila Tabel Harian terdiri dari dua tabel, tabel master dan tabel slave, maka kedua tabel itu harus dijadikan satu tabe menggunakan query Tabel Harian. Setelah itu gunakan fungsi DCount untuk mengecek apakah pegawai A sudah tercatat dalam query Tabel Harian. Kriteria yang digunakan adalah nomor ID pegawai dan tanggal. Bia hasil fungsi DCount = 1, maka pegawai A sudah ada dalam query Tabel Harian di tanggal kerja yang diinput. Bia hasil fungsi DCount = 0, maka pegawai A belum ada dalam Tabel Harian di tanggal kerja yang diinput dan dicatat/disimpan dalam Tabel Harian (bagian slave).

      Untuk contoh penggunaan fungsi DCount silakan baca https://access-terapan.blogspot.com/2018/09/fungsi-dcount-di-ms-access.html

      Delete
  24. Terima kasih banyak atas solusinya Pak.

    ReplyDelete
  25. Selamat malam Pak Yanto, terima kasih atas solusi tentang penggunaan Rumus Dcount,
    Terkait penggunaan Dcount saya coba mengembangkan keadaanya pada kasus Data Penyedia Barang sebagai rekanan seumpama saya mempunyai 3 tabel, yaitu : tabel Pelanggan yang berisi ID_Pelanggan(Primary Key), Nama_Pelanggan, Alamat dan No_Hp, table Barang berisi Kode_Barang (Primary Key), Nama dan Harga serta tabel detail yang merupakan kombinasi dua table tadi yang berisi ID_Pelanggan (diambil dari data pelanggan), Kode_Barang (diambil dari table barang), Nama(otomatis berdasarkan kode barang), Harga (otomatisberdasarkan kode barang), jumlah (diinput terakhir)
    Pada proses pembuatan formnya untuk data ID_Pelanggan, Nama_Pelanggan, Alamat dan No_Hp saya ambil dari table pelanggan (agar tidak terjadi double entry data pelanggan) sedangkan untuk data kode_Barang, Nama, Harga dan Jumlah dari table detail, sehingga formnya menjadi form utama (pelanggan) dan sub form (detail ).
    Untuk otomatisasi nama barang dan harga berdasarkan kode barang mengacu pada table barang semua sudah berjalan namun yang menjadi masalah adalah ketika saya mengisi data detailnya, masih ada kemungkinan untuk penyedia barang yg sama bisa mengisi kode barang yg sama berulang kali, saya coba membuat rumus dcount pada tombol tambah untuk mencegah input kode barang yg sama pada penyedia barang yg sama namun tidak bisa berjalan sesuai yang sya inginkan pesan yang selalu muncul ketika saya klik tombol tambah adalah " Barang sudah masuk dalam Daftar, silakan edit jumlah barang" dengan menggunakan kode
    Private Sub Tambah_Click()
    If (DCount("ID_Pelanggan", "Detail", "ID_Pelanggan=ID_Pelanggan") > 0 And (DCount("Kode_Barang", "Detail", "Kode_Barang=Kode_Barang") > 0)) Then
    MsgBox " Barang sudah masuk dalam Daftar, silakan edit jumlah barang"
    Nama_Pelanggan.Setfocus
    Else
    On Error GoTo Tambah_Click_Err

    On Error Resume Next
    DoCmd.GoToRecord , "", acNewRec
    If (MacroError <> 0) Then
    Beep
    MsgBox MacroError.Description, vbOKOnly, ""
    End If


    Tambah_Click_Exit:
    Exit Sub

    Tambah_Click_Err:
    MsgBox Error$
    Resume Tambah_Click_Exit
    MsgBox " Data Pelanggan telah tersimpan"
    End If
    End Sub
    Mohon solusinya ( untuk kode tambah merupakan hasil conver forms macros to visual basic)
    Terima kasih sebelumnya

    ReplyDelete
    Replies
    1. Coba ganti

      If (DCount("ID_Pelanggan", "Detail", "ID_Pelanggan=ID_Pelanggan")

      Dengan

      If (DCount("ID_Pelanggan", "Detail", "ID_Pelanggan=" & NamaControlIDpelangganYgAdaDiForm)

      NamaControlIDpelangganYgAdaDiForm adalah nama ID Pelanggan yang ada di form, misalnya Me.ID_Pelanggan.

      NamaControlIDpelangganYgAdaDiForm tergantung tipe data, ya... bila tipe data text maka harus ada tanda petik tunggal, bila tipe data numerik, tanpa perlu tanda apa pun.

      Lakukan hal yang sama untuk Kode_Barang

      Delete
  26. Saya sudah mencoba kode dibawah ini karena ID_Pelanggan dan Kode Barang semuanya text

    If (DCount("ID_Pelanggan", "Detail", "ID_Pelanggan='& "Me.ID_Pelanggan.Value") > 0 And (DCount("Kode_Barang", "Detail", "Kode_Barang=" & "Me.Kode_Barang.Value") > 0)) Then
    MsgBox " Barang sudah masuk dalam Daftar, silakan edit jumlah barang"

    Namun kode diatas selalu saja merah ketika saya hendak save kemudian saya mencoba kombinasi dengan kode dlookup yang saya gunakan pada pemberina nama dan harga otomatis menjadi kode dibawah ini

    If (DCount("ID_Pelanggan", "Detail", "ID_Pelanggan='" & Me.ID_Pelanggan.Value & "'") > 0 And (DCount("Kode_Barang", "Detail", "Kode_Barang='" & Me.Kode_Barang.Value & "'") > 0)) Then
    MsgBox " Barang sudah masuk dalam Daftar, silakan edit jumlah barang"

    Yang muncul pesan compile eror method or data not found
    Dan pesanya mengarah pada kode “ Me.Kode_Barang.Value”
    apakah ini karna kode barang terletak pada sub form yang bisa sya isi lebih dari satu kode barang pada saat input bersamaan dengan id pelanggan yang sama ? karena subformnya berbentk data sheet

    Mohon solusinya pak kira2 bagaimana agar sya bisa menginput kode barang yang berbeda pada satu ID pelanggan namun ada fungsi mengecek pada saat menginput apakah kode barang tersebut sudah pernh diinput, sehingga operator cukup megedit jumlah barang yg disediakan pelanggan tersebut tanpa menginput dua kali dan mencegah double kode barang.

    Terima kasih pak

    ReplyDelete
    Replies
    1. Karena ada dua tabel (tabel pelanggan dan detail barang), maka buatlah sebuah query yang merupakan gabungan dari dua tabel di atas. Misalnya, beri nama query itu qryPelangganBarang. Setelah itu, dengan menggunakan qryPelangganBarang, buatlah pengecekan seperti berikut ini:

      If (DCount("Kode_Barang", "qryPelangganBarang", "ID_Pelanggan='" & Me.ID_Pelanggan.Value & "' AND Kode_Barang='" & Me.Kode_Barang.Value & "'") > 1

      Lakukan pengecekan di atas pada event After_Update dari pemasukkan kode barang ya.... paham?

      Delete
  27. Terima kasih atas solusinya Pak.

    ReplyDelete

Post a Comment

Posting Terpopuler

Normalisasi, Denormalisasi, dan Anomali Database

Membuat Relasi Database

Menampilkan Data MySQL dalam Form di Access