Minggu, 29 April 2012

Kriteria Text, Angka Dan Tanggal

Dikarenakan ada lumayan banyak yang bertanya kepada penulis mengenai perbedaan penulisan dalam kriteria sebuah fungsi, maka sepertinya penulis harus menyampaikan lagi tentang cara penulisan dalam sebuah kriteria dari fungsi atau statemen dalam VBA. Sebenarnya penulis telah memposting hal ini, yaitu pada halaman yang berjudul Penulisan Kriteria Fungsi dalam blog ini. Disini penulis hanya ingin menjelaskan lebih jauh lagi mengenai penulisan kriteria untuk sebuah fungsi atau statemen dalam vba.
Dalam tulisan sebelumnya penulis telah memberikan contoh mengenai cara penulisan kriteria dari sebuah fungsi, dimana pada tulisan tersebut, yang harus anda sesuaikan untuk menulis kriteria dalam sebuah form adalah Type Data dari field dalam tabel yang menjadi kriteria tersebut, bukan format dari Textbox atau Combobox atau ListBox atau yang lainnya dalam form tersebut.
Jika Field dalam table anda adalah bertipe Text (walaupun mungkin data dalam field tersebut berupa angka), maka penulisan kriterianya harus menggunakan tanda penghubung petik tunggal ('), Jika Field dalam table anda (yang menjadi kriteria) bertipe data angka, maka anda tidak boleh menggunakan operator penghubung. Dan jika Field dalam table anda bertipe data tanggal, maka operator yang harus digunakan adalah tanda kres/pagar (#). Contohnya :
  1. DLookUp("nama_karyawan", "tblDetailKaryawan", "[id_karyawan] = '" & Me.idKaryawan & "'")
  2. DLookUp("nama_karyawan", "tblDetailKaryawan", "[nomor_karyawan] =" & Me.NomorKaryawan)
  3. DLookUp("nama_karyawan", "tblDetailKaryawan", "[tanggal_masuk] = #" & Me.TglMasuk & "#")
Perhatikan yang penulis tandai dengan warna Merah.

Contoh nomor 1 adalah contoh penulisan fungsi DLookUp dengan kriteria field id_karyawan dalam tabel tblDetailKaryawan bertipe data Text, sehingga dalam penulisan kriterianya harus menggunakan operator penghubung tanda petik tunggal (')

Contoh nomor 2 adalah contoh penulisan fungsi DLookUp dengan kriteria field nomor_karyawan dalam tabel tblDetailKaryawan bertipe data angka (Number), sehingga dalam penulisan kriterianya tidak boleh menggunakan tanda operator penghubung.

Contoh nomor 3 adalah contoh penulisan fungsi DLookUp dengan kriteria tanggal_masuk dalam tabel tblDetailKaryawan bertipe data tanggal (Date/Time), sehingga dalam penulisan kriterianya harus menggunakan operator penghubung tanda kres/pagar (#).

Jika anda salah dalam menggunakan operator penghubungnya, maka anda akan mendapatkan error Type Missmatch, atau bisa juga (kadang-kadang) tidak menampilkan pesan apa-apa, namun untuk case ini sepertinya tidak akan terjadi, jika anda tidak menggunakan statemen On Error Resume Next, atau error handling yang sejenisnya. Anda jangan melihat pada Form yang anda buat, ataupun data dalam tabel anda, akan tetapi (sekali lagi) yang harus anda perhatikan dan sesuaikan adalah hanya pada tipe data (Data Type) dari Field yang akan anda jadikan kriteria dalam fungsi atau statemen anda.

Semoga Bermanfaat..


Rabu, 25 April 2012

Kontrol Scrollbars Pada Subform

Pada postingan kali ini, penulis akan membahas tentang bagaimana caranya untuk mengontrol tampilnya Scrollbars pada sebuah subform. Kontrol disini maksudnya adalah kita menentukan apakah Scrollbars akan ditampilkan atau tidak berdasarkan batasan dari jumlah data atau record dalam suatu subform yang telah kita tentukan. Trik untuk menampilkan atau menyembunyikan Scrollbars sangat sederhana dan simple, akan tetapi penulis baru tahu trik ini beberapa bulan yang lalu. Scrollbars bisa kita temui pada sebuah form atau textbox. Berikut ini adalah gambar settingan Scrollbars yang bisa kita temukan pada menu Help VBA Access:
Gambar Settingan Property Scrollbars
Penjelasan dalam bahasa Indonesianya :
Neither (untuk Form) dan None (untuk Textbox) -> Code dalam VBA : 0
--> Untuk Textbox, settingan ini adalah defaultnya, dimana dengan settingan ini maka Scrollbars tidak ditampilkan.
Horizontal Only (hanya untuk Form) -> Code dalam VBA : 1
--> Scrollbar yang ditampilkan hanya scrollbar horizontal, Textbox tidak mendukung settingan ini.
Vertical Only (untuk Form) dan Vertical (untuk Textbox) -> Code dalam VBA : 2
--> Scrollbar yang ditampilkan hanya scrollbar vertical.
Both (hanya untuk Form) -> Code dalam VBA : 3
--> Untuk Form, settingan ini adalah defaultnya, dimana scrollbar vertical dan horizontal ditampilkan, Textbox tidak mendukung settingan ini.

Settingan diatas akan kita gunakan untuk mengontrol tampilnya scrollbars pada sebuah subform. Penulis akan mengambil contoh sebuah case berikut ini :
Misalnya, penulis telah membuat sebuah form yang akan dijadikan sebagai subform untuk form yang lainnya menggunakan Wizard dari access 2003, dan nama dari form tersebut adalah frmDetailData (dengan settingan Scroll Bars = Neither). Dan form tersebut (frmDetailData) lalu dimasukkan kedalam Form yang bernama frmLaporan sebagai subformnya, lalu diatur sedemikian rupa sehingga subform tersebut hanya bisa menampilkan 10 data/record (data ke sebelas dan seterusnya tersembunyi, sehingga untuk melihat data kesebelas dan seterusnya maka user harus melakukan scrolling kebawah pada subform tersebut). Dalam case ini berarti Scrollbars Vertical harus ditampilkan jika data/record dari frmDetailData adalah lebih dari 10 (sepuluh), jika data/recordnya hanya berjumlah 10 (sepuluh) atau kurang, maka scrollbar tidak ada yang ditampilkan. Sebelum penulis mengetahui trik yang simplenya, penulis menggunakan fungsi DCount dan code berikut ini kedalam Event On Current dari Form frmDetailData :
Private Sub Form_Current()
If DCount("id_number", "tblDetailTransaction", "[Transaction_Date]=#" & txtReportDate & "#") > 10 Then
Me.ScrollBars = 2
Else
Me.ScrollBars = 0
End If 
End Sub

Penjelasan dari code diatas :
If DCount("id_number", "tblDetailTransaction", "[Transaction_Date]=#" & txtReportDate & "#") > 10 Then
--> Untuk mengetahui jumlah data dari field id_number dengan kriteria Transaction_Date adalah tanggal yang ditentukan pada textbox yang bernama txtReportDate dalam Form frmLaporan.
Me.ScrollBars = 2
--> Jika jumlah datanya adalah lebih dari 10, maka scrollbar vertical akan ditampilkan.
Me.ScrollBars = 0
--> Jika jumlah datanya adalah 10 atau kurang, maka tidak ada scrollbar yang ditampilkan.

Ternyata setelah penulis berburu atau mencari-cari di internet ada cara yang lebih mudah dan lebih simple (penulis temukan di databasedev) yang jika diterapkan untuk aplikasi penulis akan seperti ini :
Private Sub Form_Current()
If Me.RecordsetClone.RecordCount > 10 Then
Me.ScrollBars = 2
Else
Me.ScrollBars = 0
End If
End Sub

Penjelasan untuk code ini sama dengan penjelasan code sebelumnya.

Namun untuk aplikasi yang telah penulis buat sebelumnya, penulis tidak mengganti code yang telah penulis buat dengan code baru yang penulis dapatkan diatas. Salah satu alasan mengapa penulis tetap mempertahankan code yang lama, adalah karena code tersebut murni berasal dari ide penulis untuk diri penulis sendiri (walaupun mungkin banyak juga orang yang menggunakan code seperti code pertama penulis), yang dalam hal ini semakin menguatkan diri penulis untuk meyakini jika untuk menyelesaikan suatu case/masalah dalam pembuatan aplikasi, tidak melulu harus menggunakan code-code yang belum kita pahami, akan tetapi (mungkin) bisa juga dengan mengeksplorasi code-code atau fungsi-fungsi atau statemen-statemen yang telah kita ketahui.

Semoga Bermanfaat..

Jumat, 20 April 2012

Membuat Form Tambah User

Membuat Form Untuk Menambah Data User Baru.

Setelah sebelumnya penulis telah membahas tentang cara pembuatan form ganti password, dimana form tersebut ditujukan agar user yang menggunakan aplikasi kita, dapat mengganti password mereka sendiri. Sekarang penulis akan share tentang cara pembuatan form untuk menambah data user baru. Hal ini tentunya agar kita sebagai pembuat aplikasi tidak direpotkan dengan masalah penambahan user baru, karena jika kita tidak membuatkan form untuk menambah data user baru, sudah tentu dan pasti pula jika suatu saat ada penambahan user yang menggunakan aplikasi kita, maka kita harus mengakses ke tabel yang menyimpan data-data user yang menggunakan aplikasi tersebut. Iya kalau cuma sesekali, lha kalau berkali-kali atau frekuensi adanya user baru itu sering kan jadi repot tuh. Nah untuk mengantisipasi hal tersebut, biasanya setiap aplikasi memiliki fitur Manajemen User atau dalam bahasa inggrisnya User Management, dimana dalam fitur tersebut akan ada fitur untuk menambah data user baru, mengedit data user yang telah ada atau yang lainnya yang berhubungan dengan user, yang tentu saja user yang bisa mengakses fitur tersebut haruslah user dengan level administrator (umumnya sih begitu), sehingga anda bisa menyerahkan tugas penambahan user baru kepada orang-orang atau user-user yang telah anda jadikan administrator dalam aplikasi anda, dan anda bisa duduk santai setelah bekerja keras membuat aplikasi tersebut, atau anda bisa tenang untuk membuat aplikasi yang lainnya, dengan tidak direpotkan oleh urusan tambah-menambah data user baru.
Okay, kita langsung ke pokok pembahasan kita sekarang ini yaitu mengenai pembuatan Form untuk Menambah data user baru. Dalam pembahasan kali ini penulis menggunakan file database ms access yang telah penulis buat sebelumnya ketika membuat artikel Pembuatan Form Ganti Password, jika anda belum membacanya, silahkan anda baca sekarang atau nanti juga tidak apa-apa, tetapi yang penting anda harus mempunyai file yang telah penulis buat sebelumnya agar and tidak tersesat dalam mengikuti langkah-langkah yang akan penulis berikan dalam pembuatan form ini. Jika anda belum memilikinya sekarang, anda bisa mendownloadnya terlebih dahulu di 4Shared (terbuka pada tab baru), jika anda sudah memilikinya, silahkan lanjutkan ke langkah-langkahnya berikut ini

Buka file yang telah anda download sebelumnya (tentang Form Ganti Password). dalam membuka file tersebut anda harus pastikan jendela databasenya ikut ditampilkan.

Buat sebuah form baru, form yang berjenis Unbound, dengan cara klik dua kali pada Create form in design view.

Masukkan 2 (dua) buah TextBox kedalam form tersebut dan ganti namanya masing-masing dengan :
txtUserName -> Untuk memasukkan nama user yang baru
txtPassword -> Password untuk user yang baru (tambahan: penulis setting default value untuk txtPassword adalah 1234)

Masukkan 1 (satu) buah Combo Box menggunakan Wizard, pilih RowSourcenya dari table mstLevel (atur yang lainnya sesuai kebutuhan anda) dan beri nama Combo Box tersebut dengan cboLevelUser, Combo Box ini yang akan menjadi source data untuk field UserLevel dalam table tblUser. Langkah opsional untuk cboLevelUser :
Default Value = cboLevelUser.ItemData(0)
Limit To List = Yes

Masukkan 1 (satu) buah Check Box, atur default valuenya menjadi 1, dan ganti namanya menjadi cbxActive, dan ganti caption dari labelnya menjadi Active, Check Box ini yang akan menjadi source data untuk field StatusUser dalam table tblUser.

Masukkan 3 (tiga) buah command button, masing-masing dengan nama :
cmdSave -> Caption = SAVE
cmdAddNew -> Caption = ADD NEW
cmdClose -> Caption = CLOSE

Lalu masukkan code berikut ini kedalam event On Click pada cmdSave :
Dim dbCnn As ADODB.Connection, dbRcr As ADODB.Recordset
Dim strCnn As String, strMsg As String

strCnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.CurrentProject.Path & "\Nama File Databasenya.mdb"

If IsNull(Me.txtUserName) Or Me.txtUserName.Value = "" Then
MsgBox "Username tidak boleh kosong.", vbExclamation
txtUserName.SetFocus
ElseIf IsNull(Me.txtPassword) Or Me.txtPassword.Value = "" Then
    MsgBox "Password tidak boleh kosong.", vbExclamation
    txtPassword.SetFocus
ElseIf DCount("NamaUser", "tblUser", "[NamaUser]='" & txtUserName & "'") > 0 Then
        MsgBox "Username " & txtUserName & " Sudah ada, silahkan masukkan username yang lain.", vbExclamation
        txtUserName.SetFocus
Else

Set dbCnn = New ADODB.Connection
dbCnn.Open strCnn

Set dbRcr = New ADODB.Recordset
dbRcr.CursorType = adOpenKeyset
dbRcr.LockType = adLockOptimistic
dbRcr.Open "tblUser", dbCnn, , , adCmdTable
   
dbRcr.AddNew
    dbRcr!NamaUser = txtUserName
    dbRcr!Password = txtPassword
    dbRcr!UserLevel = cboLevelUser
    dbRcr!StatusUser = cbxActive
    dbRcr.Update
strMsg = "Berhasil menambahkan user baru, dengan detail :" & vbCr & vbCr
strMsg = strMsg & "Username: '" & txtUserName & "' Password " & txtPassword & "." & vbCr
strMsg = strMsg & "Level User: " & cboLevelUser
MsgBox strMsg, vbInformation
Call cmdAddNew_Click

dbRcr.Close
dbCnn.Close
End If

Silahkan anda rubah "Nama File Databasenya.mdb" sesuai dengan nama file yang sedang anda kerjakan.

Lalu masukkan code berikut ini kedalam event On Click dari cmdAddNew
Me.txtUserName = Null
Me.txtPassword = 1234
Me.txtUserName.SetFocus

Lalu masukkan code berikut ini kedalam event On Click dari cmdClose
DoCmd.Close acForm, "frmTambahUser"

Anda juga boleh tambahkan statement On Error pada awal code diatas (untuk berjaga-jaga jika terjadi error).

Jika anda mengatur properti Limit To List dari cboLevelUser menjadi Yes, maka anda harus masukkan code berikut ini kedalam event On Not In List dari cboLevelUser
MsgBox "Level " & NewData & " tidak ada dalam daftar, silahkan pilih level yang telah ada dalam daftar atau hubungi administrator."
Response = acDataErrContinue

Code Opsional (yang bisa anda tambahkan atau tidak, namun menurut penulis lebih baik anda tambahkan code berikut ini :
Event After Update cboLevelUser
If IsNull(Me.cboLevelUser) Or Me.cboLevelUser.Value = "" Then
cboLevelUser = cboLevelUser.ItemData(0)
End If

Event On KeyPress txtUserName
Select Case KeyAscii
    Case 97 To 122
    KeyAscii = KeyAscii - 32
    Case Else
End Select

Code-code diatas tidak baku, anda bisa dan boleh untuk merubah kata-kata dalam pesan MsgBox menjadi seperti yang anda inginkan.
Setelah semua code telah anda masukkan pada masing-masing event dari masing-masing control, lalu atur properti dari form tersebut sesuai dengan selera dan kebutuhan anda, dan anda simpan form tersebut dengan nama frmTambahUser. Berikut adalah tampilan form versi penulis :

Maka selesailah pembuatan form untuk menambah data user baru.
Tutup jendela VBA editor, lalu test form yang baru saja anda buat.
Semoga Berhasil...

Untuk file contoh form penambahan user baru, bisa anda download dari 4Shared.com.

Semoga Bermanfaat...

Rabu, 18 April 2012

Membuat Form Ganti Password

Cara / Trik membuat form penggantian Password User

Seperti yang selalu penulis katakan pada setiap artikel atau postingan penulis sebelumnya, jika ada banyak cara untuk menghandle apa yang lagi kita inginkan dalam setiap permasalahan/case dalam membuat sebuah aplikasi (khususnya dalam ms access 2003). "Banyak jalan menuju roma", begitu pepatah lama mengatakan, yang tentunya anda sudah mengetahui apa arti dari pribahasa tersebut bukan ?, Yup betul artinya adalah (kurang lebihnya) banyak cara untuk mencapai suatu tujuan, atau bisa juga banyak solusi untuk menyelesaikan sebuah masalah, atau bisa juga yang lainnya (tergantung dari apa yang sedang terjadi). Begitu juga dengan ms access 2003, menurut pengalaman penulis, ternyata ada banyak cara dalam ms access 2003 untuk memenuhi apa yang kita inginkan, disini maksud penulis adalah, anda jangan terlalu fokus pada satu solusi jika anda sedang mengalami kesulitan dalam menentukan metode apa yang harus anda gunakan untuk memenuhi apa yang sedang anda inginkan dalam ms access 2003 atau pada aplikasi yang sedang anda buat. Karena hal itu selain akan "membuang" waktu anda, juga akan menghentikan proses kreatifitas anda dalam mengeksplor fungsi-fungsi yang tersedia dalam ms access 2003. Contohnya adalah seperti pada postingan penulis sebelumnya yang berjudul Form Login Sederhana, sewaktu penulis masih diawal-awal tahap mempelajari ms access 2003, penulis juga sudah menggunakan petunjuk-petunjuk dari para ahli dalam ms access 2003 untuk membuat sebuah form login, dimana petunjuk yang mereka berikan banyak sekali menggunakan metode-metode, fungsi-fungsi, serta statement-statement yang "belum" saatnya untuk penulis pelajari (karena waktu itu kan penulis masih dalam status pemula atau beginner atau newbie dalam ms access), yang hasilnya aplikasi ms access yang penulis buat ukuran filenya "membengkak" menjadi sekitar 75mb (aplikasinya belum ada datanya), padahal aplikasi yang penulis buat adalah aplikasi yang cuma sekedar input data dan cetak data saja, dan penulis juga sudah melakukan Compact and repair databasenya berkali-kali, namun tetap saja ukuran filenya tetap besar. Nah loh kok malahan jadi curhat ya :D
Oke sekarang kita langsung saja pada pokok bahasan, yaitu membuat Form untuk Mengganti Password dari user yang sedang login. Untuk membuat sebuah form agar user bisa mengganti password mereka, penulis gunakan aplikasi ms access 2003 yang telah penulis buat sebelumnya yaitu form login sederhana yang bisa anda download dari 4Shared. Alurnya adalah diasumsikan jika user telah login dan membuka aplikasinya dan telah masuk dalam Form Utama. Dalam aplikasi ms access 2003 (Form Login dengan sensitive case) yang penulis buat sebelumnya, jika anda telah mendownloadnya, maka anda harus tambahkan field-field dibawah ini kedalam tblUser terlebih dahulu.
UserLevel (Text) : Level user, misalnya ADMINISTRATOR, AUDIT, INPUT DATA
LoginTerakhir (General Date) : Tanggal dan waktu user login ke aplikasi
StatusLogin (Text) : Status dari user, apakah sedang login atau tidak

Untuk lebih jelasnya anda bisa lihat pada postingan penulis sebelumnya Form Login Sederhana, Form Login Sederhana 2 dan Form Login Sederhana 3. Silahkan anda ikuti dahulu postingan penulis tersebut. Setelah anda selesai mengikuti apa yang penulis tulis dalam postingan-postingan tersebut, berikut ini adalah langkah-langkah untuk membuat Form Ganti Password :

Buat sebuah form unbound yang bernama frmGantiPassword dengan cara klik Forms pada jendela database, lalu klik dua kali pada Create form in design view lalu atur property form seperti dibawah ini atau sesuai dengan kebutuhan anda :
     Scroll Bars : Neither
     Record Selectors : No
     Navigation Buttons : No
     Dividing Lines : No
     Auto Center : Yes
     Border Style : Thin
     Control Box : Yes
     Min Max Buttons : None
     Close Button : Yes
Masukkan 3 buah textbox dengan nama dibawah ini :
     txtPasswordLama
     txtPasswordBaru
     txtConfirmPasswordBaru
     Dengan Input Mask untuk ketiga Textbox tersebut adalah Password.
Buat 2 buah Label dengan nama seperti dibawah ini :
     lblNamaUser, Caption = "Nama User :"
     lblUserName, Caption = "USERNAME"
Buat 3 Command Button dengan nama seperti dibawah ini :
     cmdSimpan, Caption = SIMPAN
     cmdCancel, Caption =CANCEL
     cmdKeluar, Caption =KELUAR
Opsional :
Masukkan 1 buah Checkbox, misalnya dengan property :
     Nama Checkbox : cbxPassword
     Default Value : 0

Silahkan anda percantik lagi tampilan Formnya menurut selera anda, kalau penulis Form Ganti Password yang telah penulis buat seperti dibawah ini :
Dengan Detail :
Form Ganti Password Dengan Detail
Ketika Dijalankan :
Form Ganti Password Ketik Dijalankan
Jika anda telah membuatnya, maka langkah selanjutnya adalah memasukkan code-codenya. Berikut ini adalah code-code yang dibutuhkan untuk masing-masing control dalam form tersebut.

Untuk Form (Event On Open)
     Private Sub Form_Open(Cancel As Integer)
     On Error Resume Next
     Dim strUser As String
     If DCount("NamaUser", "tblUser", "[StatusLogin]='ACTIVE'") > 0 Then
     strUser = DLookup("NamaUser", "tblUser", "[StatusLogin]='ACTIVE'")
     Me.lblUserName.Caption = strUser
     Else
     Me.lblUserName.Caption = "NO USER LOGIN"
     End If
     End Sub
Code ini akan mengecek dan mencari data NamaUser dari tabel tblUser yang data StatusLogin-nya adalah ACTIVE, lalu memasukkannya ke caption dari lblUserName.

Untuk Command Button (Event On Click) :
cmdCancel
     Private Sub cmdCancel_Click()
     Me.txtPasswordLama = ""
     Me.txtPasswordBaru = ""
     Me.txtConfirmPasswordBaru = ""
     Me.txtPasswordLama.SetFocus
     End Sub
Code ini akan mengembalikan nilai/value dari masing-masing textbox yang ada menjadi null (Bahasanya Cancel, padahal hanya membuat null doang :D)

cmdKeluar
     Private Sub cmdKeluar_Click()
     DoCmd.Close acForm, "frmGantiPassword"
     DoCmd.OpenForm "frmUtama"
     End Sub
Code ini akan menutup form ganti password lalu membuka form utama

cmdSimpan
     Private Sub cmdSimpan_Click()
     Dim strPasswordLama As String
     If Me.lblUserName.Caption = "NO USER LOGIN" Then
     MsgBox "Tidak ada user yang sedang login pada aplikasi ini.", vbCritical
     Else
     strPasswordLama = DLookup("Password", "tblUser", "[NamaUser] = '" & lblUserName.Caption & "'")
     If IsNull(Me.txtPasswordLama) Or Me.txtPasswordLama.Value = "" Then
     MsgBox "Silahkan Masukkan Password Lama Anda Terlebih Dahulu", vbCritical
     Me.txtPasswordLama.SetFocus
     ElseIf IsNull(Me.txtPasswordBaru) Or Me.txtPasswordBaru.Value = "" Then
        MsgBox "Silahkan Masukkan Password Baru Anda !", vbCritical
        Me.txtPasswordBaru.SetFocus
     ElseIf IsNull(Me.txtConfirmPasswordBaru) Or Me.txtConfirmPasswordBaru.Value = "" Then
        MsgBox "Anda Harus Mengkonfirmasi Password Baru Anda Terlebih Dahulu !", vbCritical
        Me.txtConfirmPasswordBaru.SetFocus
     ElseIf StrComp(txtPasswordLama, strPasswordLama, vbBinaryCompare) <> 0 Then
        MsgBox "Password Lama Anda Salah ! Perhatikan Huruf Besar Dan Kecil.", vbCritical
        Me.txtPasswordLama.SetFocus
     ElseIf StrComp(txtPasswordBaru, txtConfirmPasswordBaru, vbBinaryCompare) <> 0 Then
        MsgBox "Password Baru Anda Tidak Sama! Perhatikan Huruf Besar Dan Kecil.", vbExclamation
     Else
        CurrentDb.Execute "UPDATE tblUser SET Password='" & txtConfirmPasswordBaru & "' where NamaUser='" & lblUserName.Caption & "';"
        MsgBox "Password Anda Berhasil Dirubah", vbInformation
        Call cmdCancel_Click
     End If
     End If
     End Sub
Code ini akan mengecek nilai dari lblUserName terlebih dahulu, lalu mengecek masing-masing textbox, apakah ada yang null atau tidak, lalu membandingkan Password lama yang dimasukkan user, apakah sama dengan password yang tersimpan dalam tabel, lalu mengecek apakah password baru yang dimasukkan sama dengan konfirmasi password baru, dimana metode yang digunakan sebagai pembanding adalah sensitive case. Jika tidak ada yang salah, maka akan ditampilkan pesan "Password Anda Berhasil Dirubah", lalu mengosongkan nilai/value dari masing-masing textbox.

Jika anda juga membuat Checkbox seperti petunjuk opsional diatas, maka masukkan code berikut ini :
cbxPassword (Event After Update)
     Private Sub cbxPassword_AfterUpdate()
     If cbxPassword = True Then
     Me.txtPasswordLama.InputMask = ""
     Me.txtPasswordBaru.InputMask = ""
     Me.txtConfirmPasswordBaru.InputMask = ""
     Else
     Me.txtPasswordLama.InputMask = "Password"
     Me.txtPasswordBaru.InputMask = "Password"
     Me.txtConfirmPasswordBaru.InputMask = "Password"
     End If
     End Sub

Selesai lalu klik Save pada toolbar, Untuk berjaga-jaga, silahkan test dari awal (minimal dari Form Login-nya terlebih dahulu).
Untuk file contohnya bisa anda download dari 4shared

Semoga Bermanfaat...

Selasa, 17 April 2012

Membuat Digital Certificate Pada Access 2003

Membuat Digital Certificate/Sertifikat Digital Pada Access 2003
Sebelum kita masuk pada membuat Digital Certificate atau Sertifikat Digital, kita harus tahu dahulu mengapa kita harus membuatnya.
Menurut penjelasan dari ms access help, ada istilah Macro Virus, yaitu jenis virus untuk komputer yang tersimpan dalam macro, kode-kode VBA, Form atau Report yang didalamnya terdapat ActiveX Control, dan beberapa jenis query(action-query, data-definition query, pass-through query, atau update query). Hal inilah (tapi tergantung dari settingan ms office anda) yang membuat ketika anda membuka atau menjalankan aplikasi database ms access 2003 yang telah anda buat, akan muncul dialog peringatan Security Warning seperti gambar dibawah ini :
Gambar Jendela Security Warning
Munculnya jendela dialog peringatan Security Warning tersebut dikarenakan settingan atau pengaturan Security Level untuk ms office access anda adalah Medium (anda bisa lihat di menu Tools -> Macro -> Security...) seperti gambar dibawah ini :
Gambar Pengaturan Security Level
Seperti yang anda lihat pada gambar diatas, ada 3 level security, yaitu :
  1. Low -> Semua macro dan atau kode-kode vba, atau yang lainnya akan selalu dijalankan (walaupun mengandung virus). saran dari ms access sih, jika anda mau mengaturnya ke Low, maka anda harus memiliki program antivirus yang mumpuni, atau paling tidak anda sangat yakin jika aplikasi database yang dijalankan berasal dari sumber terpercaya.
  2. Medium -> Anda bisa memutuskan apakah tetap akan menjalankan aplikasi database tersebut atau tidak
  3. High -> Hanya bisa membuka file aplikasi database ms access yang telah memiliki Digital Certificate/ Sertifikat Digital
Penulis sarankan untuk memilih opsi yang Medium, yang tentunya dengan konsekuensi akan menampilkan pesan dialog Security Warning. Nah untuk menghindari tampilnya jendela peringatan Security Warning, maka tentunya kita harus membuat sebuah Digital Certificate/Sertifikat Digital untuk aplikasi kita agar jendela peringatan Security Warning tidak tampil (opsi Medium) atau agar bisa aplikasi kita bisa dijalankan (opsi High). Salah satu cara membuat Digital Certificate/Sertifikat Digital untuk aplikasi ms access milik kita adalah dengan menggunakan sebuah file yang bernama Selfcert.exe, namun file Selfcert.exe ini secara default tidak diikut sertakan pada saat kita menginstal ms office pertama kali. Untuk mendapatkan file Selfcert.exe ini maka kita harus melakukan perubahan pada aplikasi ms office kita yang telah terinstal terlebih dahulu. dan berikut adalah cara untuk mendapatkan file Selfcert.exe tersebut (Penulis menggunakan Microsoft Office Professional Edition 2003, Win Xp Pro SP3)
  • Klik Start -> Control Panel -> Add or Remove Programs
  • Klik Change pada Microsoft Office Professional Edition 2003 (jika diperlukan masukkan CD Installer dari ms Office milik anda) lalu akan tampil jendela maintenance seperti gambar dibawah ini
Gambar Maintenance Mode Office 2003 - 1
  • Pilih Add or Remove Features, lalu klik Next
  • Lalu akan muncul jendela berikutnya seperti gambar dibawah ini
Gambar Maintenance Mode Office 2003 -2
  • Beri tanda centang pada Checkbox Choose advanced customization of applications. Lalu klik next
  • Maka akan muncul jendela berikutnya, dalam jendela yang muncul anda cari pilihan "Digital Certificate for VBA Projects". Kalau dalam komputer penulis ada di "Office Shared Features" seperti dibawah ini
Gambar Maintenance Mode Office 2003 -3
  • Klik tanda panah kebawah (disamping tulisan Digital Certificate for VBA Projects) lalu pilih "Run from My Computer", sehingga gambarnya akan seperti dibawah ini (perhatikan yang penulis lingkari).
Gambar Maintenance Mode Office 2003 -4
  • Klik Update, tunggu sampai selesai dengan tampilnya jendela seperti dibawah ini
Gambar Maintenance Mode Office 2003 - Sukses
Setelah selesai, anda buka Explorer pada komputer anda (bisa dengan Start -> My Computer atau dengan klik kanan Start lalu pilih Explore All Users, atau dengan cara lainnya -bebas-).
Lalu masuk ke direktori file instalan program office anda, kalau dalam komputer penulis berada di "C:\Program Files\Microsoft Office\OFFICE11". Pastikan ada file yang bernama SELFCERT.exe (lihat gambar berikut ini)
Gambar Lokasi File SELFCERT.exe
Untuk membuat Digital Certificate/Sertifikat Digital, maka anda harus menggunakan file SELFCERT.exe tersebut. caranya adalah
  • Klik dua kali pada file SELFCERT.exe, maka akan tampil jendela seperti gambar dibawah ini :
Gambar jendela Pembuatan Digital Certificate/Sertifikat Digital
  • Ketikkan nama anda (atau nama siapa saja juga boleh) pada kotak Your certificate's name, misalnya Nugie Abadi lalu klik OK, maka akan muncul pesan konfirmasi jika telah sukses membuat sertifikat baru seperti gambar dibawah ini 
Gambar Pesan Sukses Membuat Digital Certificate/Sertifikat Digital
  • Klik OK maka jendela pembuatan Digital Certificate/Sertifikat Digital akan menghilang.
Jika anda telah membuat sertifikatnya, maka langkah selanjutnya adalah memasukkan sertifikat tersebut kedalam VBA aplikasi anda. Caranya adalah sebagai berikut :
  • Buka aplikasi database ms access anda, lalu buka jendela VBA Editor. Misalnya dengan cara klik Forms pada jendela object database lalu pilih salah satu form yang telah anda buat, dan pada Menubar klik View -> Code. Atau dengan cara lainnya yang anda ketahui (bebas yang penting jendela VBA editor bisa dibuka).
  • Pada jendela Project Explorer (disebelah kiri) anda pilih project/nama aplikasi anda, misalnya seperti gambar dibawah ini :
Gambar Jendela VBA Editor
  • Setelah memilih nama project atau aplikasi anda, pada Menubar VBA Editor klik Tools -> Digital Signature, maka akan tampil jendela berikut ini
Gambar Pemilihan Digital Certificate/Sertifikat Digital - 1
  • Klik Choose pada jendela yang tampil, maka akan tampil jendela baru yang berisi daftar dari Digital Certificate/Sertifikat Digital yang telah dibuat sebelumnya. Seperti gambar dibawah ini
Gambar Pemilihan Digital Certificate/Sertifikat Digital - 2
  • Pilih nama sertifikat yang telah anda buat sebelumnya, lalu klik OK, dan klik OK sekali lagi. lalu simpan dengan cara klik toolbar Save atau pada menu File -> Save(nama aplikasi anda).
Pada saat akan membuka aplikasi anda pertama kali setelah diberikan digital certificate/sertifikat digital, maka akan muncul jendela peringatan Security Warning seperti gambar dibawah ini :
Gambar Security Warning Digital Certificate/Sertifikat Digital
Agar jendela tersebut tidak tampil lagi pada saat aplikasi anda dibuka lain waktu, maka beri tanda centang pada Checkbox "Always trust files from this publisher and open them automatically." lalu klik Open.

Yang harus anda ingat adalah, Digital Certificate/Sertifikat Digital yang telah anda buat hanya berlaku pada komputer dimana Digital Certificate/Sertifikat Digital tersebut dibuat. Jadi untuk menggunakannya pada komputer lain, maka anda harus membuat Digital Certificate/Sertifikat Digital tersebut menjadi sebuah file dengan cara mengekspornya dari komputer yang membuatnya, lalu mengimpornya pada komputer yang anda inginkan. cara ekspornya adalah sebagai berikut :

  1. Klik Start -> Control Panel, klik dua kali pada Internet Options
  2. Pada jendela Internet Options, pilih tab Content, lalu klik Certificates
  3. Pilih tab Personal pada jendela yang muncul, lalu pilih Digital Certificate/Sertifikat Digital yang telah dibuat sebelumnya.
  4. Klik Export...
  5. Lalu akan muncul Certificate Export Wizard
  6. Klik Next, Next, Next dan tentukan nama file serta tempat penyimpanan filenya (secara default tempat penyimpanannya adalah di My Documents (langkah ini menggunakan nilai default dari Wizard, jika diperlukan maka anda bisa menyesuaikan settingan pada setiap jendela wizard yang tampil)
  7. Lalu klik Next sekali lagi, dan klik Finish. tunggu sampai keluar pesan "The export was successful." lalu klik OK.

Untuk mengimpornya, anda tinggal lakukan seperti langkah diatas, namun dengan memilih Import... dan ikuti instruksi dari Wizard pada komputer yang lain.

Refferences : Signing a VBA Project , OFF2000: Using SelfCert to Create a Digital Certificate for VBA Projects

Semoga Bermanfaat...

Minggu, 15 April 2012

Menampilkan Atau Menyembunyikan Menubar

Pada artikel sebelumnya, penulis telah sedikit membahas tentang cara membuat custom menubar/menubar buatan sendiri dalam ms access. Jika anda belum tahu caranya silahkan buka artikel Membuat Menubar/Toolbar sendiri dalam blog ini sebelumnya. Dan kali ini penulis akan share tentang bagaimana cara menampilkan custom menubar tersebut pada saat ms access/aplikasi database yang kita buat diload/dibuka.
Untuk menampilkan menubar, baik itu menubar buatan sendiri ataupun menubar standar/bawaan dari ms access, maka perintah yang digunakan adalah DoCmd.ShowToolbar. Struktur dari perintah ini adalah sebagai berikut :
DoCmd.ShowToolbar "Nama Toolbarnya", acToolbarYes/acToolbarNo/acToolbarWhereApprop
acToolbarYes -> Untuk menampilkan menubar/toolbar
acToolbarNo -> Untuk menyembunyikan menubar/toolbar
acToolbarWhereApprop -> Untuk menampilkan menubar/toolbar pada objek yang didukung oleh menubar/toolbar tersebut ketika objek tersebut ditampilkan/dalam keadaan aktif.

Pada artikel membuat custom menubar yang lalu, penulis membuat sebuah custom menubar dengan nama MenuSendiri, sehingga jika di implementasikan, maka perintahnya menjadi :
DoCmd.ShowToolbar "MenuSendiri", acToolbarYes

Mungkin akan ada pertanyaan, dimana saya harus menempatkan kode tersebut ?, jawabannya ya tergantung dari keperluan anda heheheheh, namun biasanya (untuk penulis), penulis akan menempatkannya pada event On Close atau On UnLoad dari form yang dijadikan sebagai StartUp ketika aplikasinya dibuka (lihat cara membuat form startup pada artikel sebelumnya.)

Nah kadang-kadang kan kita juga mau untuk menyembunyikan menubar/toolbar standar access dan hanya menampilkan menubar/toolbar buatan kita sendiri
Untuk menyembunyikan menubar standar access 2003, sejauh yang penulis tahu ada 2 (atau mungkin lebih tepatnya baru 2 cara yang penulis tahu).

Cara pertama adalah dengan menggunakan perintah DoCmd.ShowToolbar.
Dengan cara ini maka kita bisa memilah dan memilih menubar/toolbar apa saja yang tidak kita perlukan, dan menubar/toolbar apa saja yang kita butuhkan. Namun tentunya jika menggunakan cara ini anda harus tahu nama dari masing-masing menubar/toolbar standar access 2003. Dan menuliskannya satu persatu. Misalnya:
DoCmd.ShowToolbar "Menu Bar", acToolbarNo -> untuk menyembunyikan menubar access.
Untuk nama-nama toolbar yang lainnya bisa anda lihat pada menu Tools->Customize, nama-nama toolbar standar access berada pada tab Toolbars.

Cara kedua adalah dengan menggunakan statement For Next, dengan perintah Commandbars
Dengan cara ini maka seluruh menubar/toolbar bisa langsung disembunyikan, dan salah satu kentungan dari menggunakan cara ini adalah penulisan codenya sedikit, simple dan tidak "memakan" tempat. Namun jika menggunakan cara ini akan sedikit sulit jika anda mau memilah dan memilih menubar/toolbar apa saja yang mau disembunyikan atau ditampilkan.
Berikut adalah contoh codenya :
Dim intMTstd As Integer
For intMTstd = 1 To CommandBars.Count
CommandBars(intMTstd).Enabled = False
Next intMTstd

Berikut ini adalah langkah-langkah implementasi dari cara yang kedua (soalnya kalau cara pertama panjang nulisnya) :D versi yang biasa penulis lakukan.
Langkah Pertama:
Buat dahulu sebuah Form startup (form yang dijadikan startup ketika aplikasi dibuka). misalnya dengan nama frmStartUp seperti contoh yang pernah penulis buat dalam artikel Membuat Form StartUp.
Jika menggunakan Form Utama, maka persiapkan dahulu form utama tersebut, misalnya dengan nama frmUtama
Langkah berikutnya tergantung dari keperluan anda, namun disini penulis akan menyembunyikan semua menubar/toolbar, baik itu menubar/toolbar standar access maupun menubar/toolbar buatan sendiri pada saat frmStartUp dibuka/diload. Untuk keperluan tersebut maka penulis akan memasukkan code berikut ini kedalam event OnLoad dari frmStartUp :
Dim intMTstd As Integer
For intMTstd = 1 To CommandBars.Count
CommandBars(intMTstd).Enabled = False
Next intMTstd
DoCmd.ShowToolbar "MenuSendiri", acToolbarNo

Sehingga codenya akan menjadi seperti ini :
Private Sub Form_Load()
On Error Resume Next
Dim intMTstd As Integer
For intMTstd = 1 To CommandBars.Count
CommandBars(intMTstd).Enabled = False
Next intMTstd
DoCmd.ShowToolbar "MenuSendiri", acToolbarNo
End Sub

Efek dari code diatas adalah pada saat frmStartUp diload, maka semua menubar/toolbar akan disembunyikan.

Jika anda tidak menggunakan frmUtama, berarti anda akan menggunakan menubar/toolbar buatan sendiri, untuk itu maka anda tentunya harus menampilkan menubar/toolbar tersebut. Jika anda mengikuti apa yang penulis lakukan, maka yang harus anda lakukan adalah menempatkan code berikut ini kedalam event On Close atau On Unload dari frmStartUp atau pada form terakhir yang dibuka/diload pada saat aplikasi baru dijalankan. Namun jika anda menggunakan frmUtama, maka anda harus menentukan saat yang paling tepat untuk meletakkan code dibawah ini. Codenya adalah :
DoCmd.ShowToolbar "MenuSendiri", acToolbarYes

Sehingga codenya akan menjadi seperti ini :
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
DoCmd.ShowToolbar "MenuSendiri", acToolbarYes
End Sub

Efek dari code diatas adalah pada saat frmStartUp diunload, maka menubar/toolbar buatan sendiri akan ditampilkan, akan tetapi menubar/toolbar standar access akan tetap disembunyikan (karena tidak ada perintah dari kita untuk menampilkannya).

Untuk mengembalikan settingan menubar/toolbar menjadi standar, maka kita perlu memberikan perintah kepada access, yang menurut penulis lebih baik perintah tersebut diletakkan pada form/sebuah kondisi yang akan menutup aplikasi. Misalnya jika anda tidak menggunakan frmUtama, maka anda buat sebuah custom menubar dengan caption Exit (seperti dalam contoh pembuatan custom menubar dalam blog ini sebelumnya). Sekedar mengingatkan, jika pada artikel sebelumnya penulis membuat sebuah sub yang bernama Sub Keluar(), dengan codenya :
Sub Keluar()
If MsgBox("Apakah anda yakin mau keluar ?", vbQuestion + vbYesNo) = vbYes Then
DoCmd.Quit
End If
End Sub

Yang perlu anda tambahkan adalah code dibawah ini :
Dim intMTstd As Integer
For intMTstd = 1 To CommandBars.Count
CommandBars(intMTstd).Enabled =True
Next intMTstd
DoCmd.ShowToolbar "MenuSendiri", acToolbarNo

Sehingga code Sub Keluar() akan menjadi seperti ini:
Sub Keluar()
Dim intMTstd As Integer
If MsgBox("Apakah anda yakin mau keluar ?", vbQuestion + vbYesNo) = vbYes Then
For intMTstd = 1 To CommandBars.Count
CommandBars(intMTstd).Enabled =True
Next intMTstd
DoCmd.ShowToolbar "MenuSendiri", acToolbarNo
DoCmd.Quit
End If
End Sub

Efek dari code diatas adalah ketika user memilih Yes pada pesan pertanyaan, maka seluruh menubar/toolbar standar access akan ditampilkan kembali, dan menubar/toolbar buatan sendiri akan disembunyikan.

Semoga apa yang penulis sampaikan cukup menjelaskan, semoga berhasil dan Semoga Bermanfaat...

Sabtu, 14 April 2012

Form StartUp

Kali ini penulis akan share tentang cara membuat form startup untuk aplikasi yang kita buat. Form startup ini akan dijadikan sebagai form yang pertama kali ditampilkan ketika aplikasi dibuka/diload.
Caranya adalah sebagai berikut (versi penulis) :
Buat sebuah form baru dengan nama frmStartUp, dengan Properti form :
  • Scroll Bars : Neither
  • Record Selectors : No
  • Navigation Buttons : No
  • Dividing Lines : No
  • Auto Resize : Yes
  • Auto Center : Yes
  • Border Style : None
  • Control Box : No
  • Min Max Buttons : None
  • Close Button : No
  • Timer Interval : 400
  • Event On Timer : [Event Procedure]
Dalam form startup tersebut, buat sebuah label bernama lblLoading dengan caption : LOADING
Lalu pada jendela code vba, masukkan code berikut ini:
Option Explicit
Private strLoading As String

Lalu masukkan code berikut kedalam event On Timer dari frmStartUp
strLoading = strLoading & "."
Me.lblLoading.Caption = "LOADING" & strLoading
If Me.lblLoading.Caption = "LOADING.............." Then
DoCmd.Close acForm, "frmStartUp"
DoCmd.OpenForm "frmUtama"
End If

Sehingga Code anda dalam frmStartUp akan menjadi seperti ini:
Option Compare Database
Option Explicit

Private strLoading As String

Private Sub Form_Timer()
strLoading = strLoading & "."
Me.lblLoading.Caption = "LOADING" & strLoading
If Me.lblLoading.Caption = "LOADING.............." Then
DoCmd.Close acForm, "frmStartUp"
DoCmd.OpenForm "frmUtama"
End If
End Sub

Untuk form frmUtama adalah form yang akan dibuka setelah frmStartUp ditutup, biasanya sih penulis menempatkan Form Login, namun disini penulis masukkan frmUtama karena tidak semua aplikasi selalu menggunakan form login :) , jika anda tidak menggunakan frmUtama, maka anda tidak perlu menuliskan code DoCmd.OpenForm "frmUtama".

Penjelasan dari code diatas :
Option Compare Database
--> Penulis juga masih bingung cara ngejelasinnya, namun yang pasti kata-kata ini akan selalu ada setiap kali kita akan membuat sebuah procedure.
Option Explicit
--> Digunakan untuk agar ms access akan selalu mengecek apakah variable custom itu sudah dideklarasikan atau belum, jika belum dideklarasikan, maka access akan menampilkan pesan error.
Private strLoading As String
--> Digunakan untuk membuat string yang berkelanjutan (versi penulis)
Private Sub Form_Timer()
--> Event On Timer dalam form
strLoading = strLoading & "."
--> Membuat strLoading menjadi tanda titik(.) yang banyak
Me.lblLoading.Caption = "LOADING" & strLoading
--> Membuat caption dari lblLoading menjadi LOADING dan tanda titik(.) yang banyak
If Me.lblLoading.Caption = "LOADING.............." Then
--> Fungsi yang akan mengecek nilai caption dari lblLoading apakah sudah menjadi "LOADING.............." atau belum.
DoCmd.Close acForm, "frmStartUp"
DoCmd.OpenForm "frmUtama"
--> Jika nilai caption dari lblLoading adalah "LOADING.............." maka akan menutup frmStartUp dan membuka frmUtama.
End If
--> Akhir dari Fungsi If
End Sub
--> Akhir dari even On Timer frmStartUp

Demikianlah cara penulis membuat form startup dalam ms access
Untuk contoh filenya bisa didownload dari 4shared

Semoga Bermanfaat...

Jumat, 13 April 2012

VBA For Each Statement

For Each statement adalah sebuah proses looping untuk setiap elemen dalam group array atau collection. Proses looping ini akan dilakukan jika setidaknya ada 1(satu) element dalam grup yang ditentukan.
Struktur dari statement ini adalah sebagai berikut :

For Each element In group
[statements]
[Exit For]
[statements]
Next [element]

Sedikit penjelasannya:
element : elemen (atau biar gampangnya bisa dibilang juga sebagai anggota) dari group yang ditentukan
group : object collection atau array, nama grup atau array dari elemen yang dimaksud
statements : kondisi yang akan dilakukan untuk setiap elemen dari grup yang ditentukan (bisa 1 atau lebih kondisi).
Exit For : kondisi yang akan menghentikan proses looping jika kondisi tertentu yang ditentukan terjadi.
Semua yang dalam tanda [  ] bersifat opsional.

Berikut ini adalah contoh dari menu help vba access :
Dim Found, MyObject, MyCollection
Found = False           ' Initialize variable.
For Each MyObject In MyCollection           ' Iterate through each element.
If MyObject.Text = "Hello" Then           ' If Text equals "Hello".
Found = True           ' Set Found to True.
Exit For           ' Exit loop.
End If
Next

Penjelasan statement diatas versi penulis :
Found = False
--> Menentukan nilai False untuk Found
For Each MyObject In MyCollection
--> Menentukan elemen MyObject dari MyCollection
If MyObject.Text = "Hello" Then
--> Menentukan kondisi teks dalam MyObject, yang dalam statement ini adalah Hello
Found = True
--> Jika teks dari MyObject yang ditentukan adalah Hello, maka nilai Nilai False yang telah ditentukan sebelumnya akan berubah menjadi True
Exit For
--> Jika nilai Found adalah True, maka proses looping akan dihentikan
Next
--> Akhir dari proses looping jika semua elemen sudah di loop.
Untuk penulis, statement ini biasa digunakan (misalnya) untuk menentukan warna huruf dari textbox angka yang nilainya lebih dari yang penulis tentukan. contohnya :

Untuk menentukan warna huruf menjadi merah dari setiap textbox angka yang angkanya lebih dari 10 :
Dim ctlTextBox As Control
For Each ctlTextBox In Me.Controls
If TypeOf ctlTextBox Is TextBox Then
        If ctlTextBox.Value > 10 Then
        ctlTextBox.ForeColor = 255
        Else
        ctlTextBox.ForeColor = 0
        End If
End If
Next
Penjelasannya :
Dim ctlTextBox As Control
--> Mendeklarasikan ctlTextBox sebagai Control
For Each ctlTextBox In Me.Controls
--> Menentukan ctlTextBox untuk setiap Control dalam Form
If TypeOf ctlTextBox Is TextBox Then
--> Jika tipe dari ctlTextBox adalah TextBox
If ctlTextBox.Value > 10 Then
--> Jika nilai control TextBox Lebih dari 10
ctlTextBox.ForeColor = 255
--> Menentukan warna huruf dari TextBox tersebut menjadi merah (255 adalah code warna merah)
Else
ctlTextBox.ForeColor = 0
--> Selain dari nilai TextBox lebih dari 10 maka warna hurufnya adalah hitam

Refference : Microsoft Access 2003 VBA Help Menu

Semoga Bermanfaat...

Kamis, 12 April 2012

VBA For Next Statement

Untuk keperluan me-looping data yang berupa angka/numeric dalam ms access, maka kita bisa gunakan statement For Next, statement ini biasa penulis gunakan untuk keperluan membuat sebuah row source dari Combobox/Listbox, namun tentunya anda juga bisa gunakan untuk keperluan yang lain.
Struktur dari statement ini adalah :
For Counter = Angka Awal To Angka Akhir [Step step]
Statement
[Exit For]
Statement
Next [Counter]
Sedikit penjelasan dari codenya :
Counter : Variabel angka yang digunakan untuk looping
Angka Awal = Angka pertama untuk memulai proses looping
Angka Akhir : Angka terakhir untuk mengakhiri proses looping
Step : Jumlah angka yang digunakan untuk looping (defaultnya setiap 1)
Statement : Kondisi yang dieksekusi ketika proses looping terjadi
Exit For : digunakan jika kita ingin menghentikan proses looping ketika sebuah kondisi terjadi
Ket. : semua yang dalam tanda [ ]  adalah opsional

Dibawah ini adalah contoh yang bisa kita temukan dalam menu help vba access (dengan edit dan tambahan dari penulis) :
Dim Words, Chars, MyString
For Words = 10 To 1 Step -1           'Set up 10 repetitions.
For Chars = 0 To 9           'Set up 10 repetitions.
MyString = MyString & Chars           'Append number to string.
Next Chars           'Increment counter
MyString = MyString & " "           'Append a space.
Text1 = MyString
Next Words
Penjelasan code :
Words = 10 To 1 Step -1 -> sama saja atau ekuivalen dengan Words = 1 To 10
--> Proses looping dari 10 sampai 1 (10 kali)
For Chars = 0 To 9 ' Set up 10 repetitions.
MyString = MyString & CharsNext Chars
--> Membuat string dari angka 0 sampai 9 (hasilnya adalah 0123456789)
MyString = MyString & " " ' Append a space.
Textbox1 = MyString           '-> ini yang penulis tambahkan karena dalam Form ada Textbox yang bernama Textbox1 (cuma untuk melihat hasilnya aja).
--> Menambahkan 1(satu) spasi pada string yang dibuat sebelumnya "0123456789", sehingga menjadi "0123456789 "
Next Words
--> Melanjutkan proses looping berikutnya sampai akhir (1), sehingga akan terbentuk sebuah string seperti dibawah ini :
"0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 0123456789 "

Untuk contoh penggunaan statement For Next yang biasa penulis gunakan (untuk membuat sebuah row source Combobox/Listbox), adalah sebagai berikut :
Misalnya untuk membuat sebuah Combobox yang berisi semua nama-nama bulan :
Dim strBulan As String, intBulan As Byte
For intBulan = 1 To 12
    strBulan = strBulan & MonthName(intBulan) & ";"
Next
Me.Combo1.RowSource = strBulan
Hasilnya adalah Nama bulan dari Januari sampai dengan Desember

Contoh lainnya, jika menggunakan Step (misalnya untuk nama bulan dengan urutan ganjil)
Dim strBulan As String, intBulan As Byte
For intBulan = 1 To 12 Step 2
    strBulan = strBulan & MonthName(intBulan) & ";"
Next
Me.Combo1.RowSource = strBulan
Hasilnya adalah nama bulan Januari, Maret, Mei, Juli, September, Nopember

Refference : Microsoft Access 2003 VBA Help Menu

Semoga Bermanfaat...

Rabu, 11 April 2012

Mengganti Splash Screen

Sebelum menulis artikel ini, ada baiknya penulis beritahu jika trik berikut ini akan "memakan" penggunaan processor komputer anda hanya untuk menampilkan sebuah gambar dengan waktu tampilan yang sangat-sangat singkat sekali (tidak sampai 1 detik), apalagi gambar yang digunakan memiliki resolusi dan ukuran yang cukup besar. Oleh karena itu sebenarnya penulis tidak pernah menggunakan trik berikut ini (tidak pernah kok malah memberitahukan pada orang lain, hehehehe), penulis tidak pernah melakukan atau menerapkan trik berikut ini, karena penulis merasa, splash screen default yang ditampilkan oleh access sangat singkat sekali waktunya, yang tentu saja tidak akan terlalu berpengaruh apa-apa, karena tidak semua orang akan sadar akan splash screen tersebut (karena waktu tampilnya sebentar), dan lagipula, hal ini lebih menunjukkan jatidiri atau identitas aplikasi yang kita buat adalah menggunakan ms access.
Splash screen adalah sebuah layar yang ditampilkan saat ms access dibuka, dan waktu untuk menampilkan layar ini sangat-sangat singkat sekali.
Cara untuk mengganti splash screen default access 2003, adalah dengan membuat sebuah file image dengan jenis BMP. file image ini namanya harus sama dengan nama aplikasi database yang kita buat, misalnya nama aplikasi database kita adalah ContohDatabase.mdb, maka file imagenya harus bernama ContohDatabase.bmp, file image ini harus ditempatkan pada lokasi yang sama dengan file aplikasi databasenya, misalnya file aplikasi databasenya berada di folder "C:\Aplikasi", maka file imagenya juga harus berada pada folder "C:\Aplikasi". jadi jika dilihat property path dari kedua file tersebut adalah :
Untuk file aplikasinya : "C:\Aplikasi\ContohDatabase.mdb"
Untuk file imagenya : "C:\Aplikasi\ContohDatabase.bmp"
Sehingga dalam folder "C:\Aplikasi" akan ada dua file yang namanya sama, akan tetapi ekstensionnya berbeda (.mdb dan .bmp).
Untuk menghindari penggunaan processor yang terlalu besar, cara lainnya adalah dengan membuat file imagenya dengan ukuran 1px (untuk lebar dan tingginya) dan hanya berisi satu warna (misalnya warna grey), hal ini untuk mencegah tampilnya splash screen default access, yang tentunya gambar yang ditampilkan adalah gambar dengan ukuran 1px tersebut, jadi seolah-olah tidak ada gambar yang ditampilkan karena ukuran gambarnya kecil.

Diterjemahkan dan diedit dari Databasedev

Semoga Bermanfaat...

Selasa, 10 April 2012

Fungsi IIF Dengan 3 Kriteria

Pada tulisan sebelumnya, penulis sempat share sedikit tentang fungsi IIf, sebenarnya menurut penulis fungsi IIf adalah sebuah metode lain (Equivalen) dari fungsi If Then Else, dimana jika dengan menggunakan fungsi IIf maka akan dihasilkan sebuah fungsi yang hanya terdiri dari satu baris, dan fungsi IIf-lah yang bisa digunakan dalam query karena kita tidak bisa menggunakan fungsi If Then Else didalam query. berikut adalah perbandingan contohnya jika digunakan dalam form atau report atau module :

Menggunakan Fungsi If Then Else :
If Me.Text1 = 0 Then
Me.Text2 = "Angka Nol"
Else
Me.Text2 = "Bukan Angka Nol"
End If

Sedangkan jika menggunakan Fungsi IIf :
Me.Text2 = IIf(Me.Text1 = 0, "Angka Nol", "Bukan Angka Nol")

Jika anda perhatikan contoh diatas, maka kita bisa uraikan code IIf diatas seperti dibawah ini :
  • Tanda koma(,) pertama dari sebelah kiri bisa diartikan sebagai Then dalam fungsi If Then Else
  • Tanda koma(,) kedua dari sebelah kiri bisa diartikan sebagai Else dalam fungsi If Then Else

Namun bagaimana penerapan fungsi IIf jika ada 3/lebih kriterianya (seperti dalam fungsi If Then ElseIf), apakah bisa ? jawabannya tentu saja bisa, karena fungsi If Then ElseIf adalah kepanjangan dari fungsi If Then Else. Berikut adalah contoh dari masing-masing fungsi tersebut :

Menggunakan Fungsi If Then Else :
If IsNull(Me.Text1) Then
Me.Text2 = "Text1 Null"
Else
      If Me.Text1 = 0 Then
      Me.Text2 = "Angka Nol"
      Else
      Me.Text2 = "Bukan Angka Nol"
      End If
End If

Menggunakan Fungsi If Then ElseIf :
If IsNull(Me.Text1) Then
Me.Text2 = "Text1 Null"
ElseIf Me.Text1 = 0 Then
       Me.Text2 = "Angka Nol"
Else
Me.Text2 = "Bukan Angka Nol"
End If

Menggunakan Fungsi IIf :
Me.Text2 = IIf(IsNull(Me.Text1), "Text1 Null", IIf(Me.Text1 = 0, "Angka Nol", "Bukan Angka Nol"))

Dari contoh diatas, maka kita bisa uraikan code IIf diatas seperti dibawah ini :
  • Tanda koma(,) pertama dari sebelah kiri bisa diartikan sebagai Then pertama dalam fungsi If Then ElseIf
  • Tanda koma(,) kedua dari sebelah kiri bisa diartikan sebagai ElseIf dalam fungsi If Then ElseIf
  • Tanda koma(,) ketiga dari sebelah kiri bisa diartikan sebagai Then setelah ElseIf dalam fungsi If Then ElseIf
  • Tanda koma(,) keempat dari sebelah kiri bisa diartikan sebagai Else dalam fungsi If Then ElseIf

Semoga cukup jelas dan
Semoga Bermanfaat...

Minggu, 08 April 2012

Report Tanpa Query

Report atau laporan biasanya memiliki kriteria-kriteria tertentu, dan banyak cara yang bisa dilakukan untuk menampilkan report dengan kriteria-kriteria tertentu, cara termudah adalah dengan membuat sebuah query terlebih dahulu dan menjadikannya sebagai record source dari report yang akan ditampilkan.
Namun jika anda ingin membuat report dengan kriteria tanpa harus membuat query terlebih dahulu, hal ini bisa saja dilakukan dengan menggunakan perintah DoCmd.OpenReport, asalkan anda mengetahui SQL statement (khususnya Where Clause), karena dalam pembuatan report tanpa query, yang harus anda perhatikan adalah string Where Condition, karena ini syarat mutlaknya.
Struktur dari perintah DoCmd.OpenReport adalah sebagai berikut :
DoCmd.OpenReport(ReportName, View, FilterName, WhereCondition, WindowMode, OpenArgs)
  1. ReportName : Nama dari report yang akan dieksekusi -> Wajib
  2. View : Action yang akan dilakukan terhadap report (Misalnya langsung dicetak atau dipreview) -> Opsional (Namun penulis rasa "agak sedikit wajib" untuk ditentukan, minimal dipreview atau diprint)
  3. FilterName : Secara umum adalah nama query atau string yang merujuk kepada query yang telah dibuat -> Opsional.
  4. WhereCondition : Ini syarat mutlak yang penulis bilang sebelumnya, string SQL (Where Clause), namun dalam pembuatan string ini anda tidak boleh menempatkan kata where, karena access secara otomatis akan memasukkan kata where kedalam syntax ini -> Opsional (Namun wajib dalam tulisan ini).
  5. WindowMode : Mode tampilan dari report, yang sama seperti dalam Form -> Opsional.
  6. OpenArgs : Property OpenArgs -> Opsional.

Dibawah ini adalah contoh penerapannya (mempreview report) versi penulis :
1. Tabel yang digunakan :
     Nama Tabel : tblUser
     Field dalam tabel :
          NamaUser (Text)
          PasswordUser (Text)
          LevelUser (Text) -> Isiannya : ADMIN atau AUDIT atau INPUT DATA
          NomorUser (Number)
          TanggalMasuk (Date/Time)
2. Form yang digunakan :
     Nama Form : frmKriteriaReport
     Control-control dalam form :
          2(dua) buah Textbox (tglAwal dan tglAkhir)
               Format : Tanggal
               Default value tglAwal = 1 tahun sebelum tanggal hari ini (Date)
               Default value tglAkhir = Date.
          1(satu) buah Combobox (cboLevel)
               Type : Value List
               Rowsource : ADMIN, AUDIT dan INPUT DATA.
               Properti Limit To List = No
          1(satu) buah Command button (cmdPreview)
3. Report
     Nama report : rptUser -> yang dibuat menggunakan Tabel tblUser
4. Code dari event On Click pada cmdPreview :
Private Sub cmdPreview_Click()
On Error GoTo Err_cmdPreview_Click

Dim stDocName As String
Dim stDocCriteria As String

stDocName = "rptUser"

If IsNull(Me.cboLevel) Then
stDocCriteria = "[TanggalMasuk] >=[Forms]![frmKriteriaReport]![tglAwal] And [TanggalMasuk]<=[Forms]![frmKriteriaReport]![tglAkhir]"
Else
If cboLevel = "ADMIN" Or cboLevel = "AUDIT" Or cboLevel = "INPUT DATA" Then
stDocCriteria = "[LevelUser] = [Forms]![frmKriteriaReport]![cboLevel]  And [TanggalMasuk] >=[Forms]![frmKriteriaReport]![tglAwal] And [TanggalMasuk]<=[Forms]![frmKriteriaReport]![tglAkhir]"
Else
stDocCriteria = "Error"
End If
End If

If stDocCriteria <> "Error" Then
    DoCmd.OpenReport stDocName, acViewPreview, , stDocCriteria
Else
MsgBox "Terjadi kesalahan penginputan, silahkan dicek kembali."
End If

Exit_cmdPreview_Click:
    Exit Sub

Err_cmdPreview_Click:
    MsgBox Err.Description
    Resume Exit_cmdPreview_Click
End Sub

Penjelasan Code :
Dalam code yang penulis buat diatas :
Jika cboLevel bernilai null, maka report akan ditampilkan dengan kriteria :
Periode antara tglAwal dan tglAkhir.
Jika user memilih ADMIN atau AUDIT atau INPUT DATA, maka report akan ditampilkan dengan kriteria :
User dengan LevelUser dari cboLevel yang dipilih, dan dengan periode antara tglAwal dan tglAkhir.
Jika pada cboLevel User mengetik selain ADMIN atau AUDIT atau INPUT DATA, maka akan menghasilkan stDocCriteria = Error, lalu akan ditampilkan pesan :
Terjadi kesalahan penginputan, silahkan dicek kembali.
Selain dari itu semua, jika terjadi error, maka akan ditampilkan pesan error standar ms access.
Jika report langsung dicetak, maka yang digunakan adalah acViewNormal.
Perhatikan struktur penulisan perintah DoCmd.OpenReport diatas termasuk tanda koma (,). Jangan sampai salah atau terbalik.
Untuk file contohnya bisa didownload dari 4shared.

Semoga Bermanfaat...

Jumat, 06 April 2012

MenuBar Buatan Sendiri

Membuat menubar buatan sendiri, lebih baik dilakukan setelah aplikasi anda sudah selesai, atau minimal setelah form-form dalam aplikasi anda telah dibuat, karena menubar buatan sendiri bisa dibilang sebagai shortcut untuk membuka form-form yang telah anda buat, atau bisa juga sebagai custom menu.
Kali ini penulis akan coba sharing tentang cara membuat menubar sendiri, (nantinya membuat access tidak menampilkan menubar standar, akan tetapi hanya menampilkan menubar buatan kita sendiri, sehingga tampilan dari aplikasi yang kita buat, sangat mirip dengan tampilan dari aplikasi yang dibuat menggunakan program pembuat aplikasi lain yang dapat berdiri sendiri).
Penulis akan mengasumsikan target dari tiap-tiap menubar sendiri ini dengan beberapa form dibawah ini :
  1. FormPertama
  2. FormKedua
  3. FormKetiga
  4. FormKeempat
  5. FormKelima
  6. FormKeenam
  7. FormKetujuh
Langkah-langkah membuat menubar sendiri adalah sebagai berikut :
Klik Tools -> Customize, atau bisa juga dengan klik kanan diarea kosong Menubar/Toolbar lalu pilih Customize, akan tampil jendela seperti dibawah ini:

Klik New, lalu masukkan nama untuk menubarnya, misalkan MenuSendiri, lalu klik OK, seperti gambar dibawah ini:

Pastikan untuk telah memilih menubar yang baru saja dibuat, lalu klik Properties, akan tampil jendela seperti dibawah ini:

Lalu ganti dimenu dropdown Type dari Toolbar menjadi Menu Bar, lalu klik close, seperti gambar dibawah ini:

Menubar anda sudah jadi, berikut adalah tampilannya :

 Untuk membuat menu dropdown sendiri (seperti File -> Open), misalkan FormPertama sampai FormKetiga adalah menu Input Data, FormKeempat sampai FormKeenam adalah menu Edit Data, FormKetujuh adalah menu Laporan, berarti kita membutuhkan 3 buah Menu dropdown, cara membuatnya adalah sebagai berikut :
Pada jendela Customize, anda pilih tab Command, dan pada list Categories, anda scroll kebawah lalu pilih New Menu,seperti gambar dibawah ini:

Drag n drop pada list Commands yang bernama New Menu ke MenuSendiri dan ulangi drag n dropnya hingga tercipta 3 buah New Menu. Klik kanan di New Menu pertama lalu pilih Properties dan ganti Namanya menjadi Input Data (New Menu yang kedua menjadi Edit Data, New Menu yang ketiga menjadi Cetak Laporan). Anda juga bisa membuat shortcut keyboard untuk masing-masing menu (misalnya Alt+I untuk menu Input Data, Alt+E untuk menu Edit Data, Alt+L untuk menu Cetak Laporan), untuk hal ini maka ketika anda mengganti nama menunya jangan lupa untuk menambahkan karakter “&” sebelum karakter shortcutnya, misalnya &Input Data, &Edit Data, Cetak &Laporan
Untuk memasukkan form-form yang akan dibuka, anda tinggal melakukan drag n drop pada jendela customize ke menubar yang telah anda buat.
Pada jendela Customize dan tab Command, pada list Categories, anda pilih All Forms, seperti dibawah ini :

 Lalu anda drag n drop satu persatu dari list Commands ke MenuSendiri.
Setelah selesai memasukkan menu untuk semua form yang dibutuhkan, jika anda ingin mengedit properties dari tiap-tiap menu anda tinggal klik kanan dimasing-masing menu, lalu pilih properties.
Jika anda ingin membuat garis pemisah untuk menu, anda tinggal pilih Begin a group dijendela properties menu.
Untuk custom menu, misalkan untuk menu About dan Exit (seperti dalam aplikasi-aplikasi yang sudah jadi), maka kita harus membuat sub dalam module terlebih dahulu. Misalnya :
Untuk menu About:
Sub AboutAplikasi()
MsgBox "Aplikasi ini dibuat oleh saya sendiri", vbInformation, "Custom MenuBar"
End Sub
Untuk menu Exit:
Sub Keluar()
If MsgBox("Apakah anda yakin mau keluar ?", vbQuestion + vbYesNo) = vbYes Then
DoCmd.Quit
End If
End Sub
Setelah sub dibuat lalu anda klik kanan dimenubar dan pilih Customize.
Pada tab Commands, pilih File pada list Categories, dan drag n drop Custom pada list Commands ke MenuSendiri.
Klik kanan dimenu Custom yang baru saja anda buat lalu pilih Properties.
Ganti Captionnya menjadi About.
Pada kotak On Action, anda ketikkan AboutAplikasi.
Lalu klik Close.
Ulangi lagi untuk menu Exit, ganti captionnya menjadi Exit, dan kotak On Action = Keluar
Berikut adalah screenshot menu buatan penulis :

Untuk cara menyembunyikan menubar standar, dan hanya menampilkan menu buatan sendiri akan dishare nanti.
Untuk contoh filenya bisa didownload dari 4shared.

Semoga Bermanfaat…

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Laundry Detergent Coupons