Selasa, 27 Desember 2011

Pilihan -SEMUA- ComboBox

MENAMBAHKAN PILIHAN <SEMUA> DALAM COMBO BOX

Pilihan <SEMUA> yang penulis maksud disini adalah, dalam combobox akan terdapat pilihan <SEMUA> untuk record-record yang menjadi row source dari combobox tersebut, dengan pilihan <SEMUA> maka kita bisa menggunakannya untuk keperluan-keperluan, misalnya untuk report semua data, ataupun yang lainnya.
Untuk menambahkan pilihan <SEMUA> dalam sebuah Combo Box untuk memfilter data dalam Form/Query yang sumber datanya dari sebuah Tabel kita bisa menggunakan statement "UNION SELECT".
Yang perlu diperhatikan adalah jumlah kolom dalam Combo Box yang ingin kita tambahkan pilihan <SEMUA> dan penempatan statement "UNION SELECT" tersebut.
Untuk melakukan hal ini, Klik Kanan di Field Row Source dari comboboxnya dan pilih Zoom, lalu kita tinggal menambahkan statement "UNION SELECT" setelah statement From <Nama Tabel>, dan sebelum ORDER BY (Jika Combo Boxnya disort Ascending/Descending).
Contohnya :

Misalnya kita telah membuat sebuah Combo Box menggunakan Wizard dan memilih sebuah Tabel sebagai Row Source-nya dan hanya 1 Field yang kita masukkan, maka Field Row Source Combo Box tersebut akan menjadi seperti ini :
SELECT NamaTabel.NamaField FROM NamaTabel ORDER BY [NamaField];
Untuk Menambahkan Pilihan <SEMUA>, kita edit Field Row Source hingga menjadi seperti ini :
SELECT NamaTabel.NamaField FROM NamaTabel UNION SELECT "<SEMUA>" FROM NamaTabel ORDER BY [NamaField];

Jika Field yang kita masukkan kedalam Rowsource lebih dari 1, misalnya ada 2 Field yang kita masukkan dan Kolom pertama kita sembunyikan, maka Row Sourcenya akan menjadi seperti ini :
SELECT NamaTabel.NamaField, NamaTabel.NamaField2 FROM NamaTabel ORDER BY [NamaTabel.NamaField2];
Untuk menambahkan pilihan <SEMUA> pada kolom kedua, kita edit Row Sourcenya menjadi seperti ini :
SELECT NamaTabel.NamaField, NamaTabel.NamaField2 FROM NamaTabel UNION SELECT "*", "<SEMUA>" FROM NamaTabel ORDER BY [NamaTabel.NamaField2];

Perhatikan penempatan "*", "<SEMUA>",  hal ini berarti pilihan <SEMUA> berada pada kolom kedua, jika anda ingin kolom pertama yang memiliki pilihan <SEMUA>, maka anda harus merubah penempatannya menjadi seperti ini : "<SEMUA>", "*".

Jika Combo Box tersebut anda gunakan untuk memfilter data, anda tinggal menambahkan code :
If NamaComboBox = "<SEMUA>" then
<Code untuk memfilter semua data>
Else
<Code Untuk Memfilter Data Berdasarkan Pilihan Pada ComboBox>
End If

Semoga Bermanfaat...

Selasa, 20 Desember 2011

Filter ComboBox Dan ListBox

MEMFILTER COMBO BOX BERDASARKAN COMBO BOX LAINNYA

Ada berbagai macam cara untuk memfilter Row Source sebuah ComboBox atau ListBox, dari yang ngejelimetin (Hard Coding) sampai yang simpel sesimpel-simpelnya. Penulis telah menemukan berbagai macam cara untuk memfilter combobox/listbox melalui searching di internet, namun semua cara atau teknik tersebut memilik satu kesamaan, yaitu hasilnya sama saja, hanya bahasa dan tekniknya saja yang berbeda, dari yang menggunakan Module, Macro ataupun yang lainnya. Dan memang penulis akui bahwa ada cara untuk memfilter ComboBox/ListBox yang bisa digunakan secara global, dalam arti kita bisa menggunakan cara tersebut untuk semua ComboBox/ListBox yang terdapat dalam aplikasi kita.
Karena kita masih dalam tahap belajar, maka kita akan gunakan yang simpel-simpel aja, biar gak terlalu pusing sama code-code :). Lagipula dalam tahap belajar sudah tentu dan pasti kita akan diberikan hal-hal yang mudah terlebih dahulu bukan ?, masa baru tahap awal belajar sudah dikasih yang sulit, kan bisa bikin pusing tujuh keliling.
Untuk memfilter ComboBox/ListBox berdasarkan ComboBox/ListBox Lainnya, yang harus dipenuhi adalah ComboBox/ListBox yang akan difilter datanya harus memiliki Field yang value/nilainya adalah value/nilai dari ComboBox/Listbox yang menjadi acuan filternya.
Misalnya jika kita ingin memfilter ComboBox/ListBox yang memiliki Rowsource dari Tabel tblUser dengan ComboBox/listBox yang RowSource-nya berdasarkan tblLevelUser, maka dalam tblUser harus ada Field yang datanya berisi data Field dari tblLevelUser. Karena (khususnya dalam artikel ini) ComboBox/Listbox yang akan difilter datanya baru akan bisa difilter jika kriterianya adalah salah satu atau lebih dari field yang ada dalam table yang menjadi Row Sourcenya.
Contohnya :
Private Sub ComboBox1_AfterUpdate()
Dim strNamaUser As String
strNamaUser = "SELECT tblUser.NamaUser, tblUser.Password, tblUser.StatusUser," & _
"tblUser.UserLevel, tblUser.LoginTerakhir FROM tblUser WHERE" & _
"(((tblUser.UserLevel)=[Forms]![Nama Form]![ComboBox1])) & _
" ORDER BY tblUser.NamaUser;"
Me.ComboBox2.RowSource = strNamaUser
Me.ComboBox2.Requery
End Sub

Dari Code diatas, ComboBox2 akan terfilter menjadi hanya Nama User yang field UserLevel-nya adalah value/nilai dari ComboBox1.

Contoh lain cara memfilter List Box berdasarkan Combo Box bisa didownload dari 4shared

Semoga Bermanfaat...

Sabtu, 12 November 2011

Validasi Karakter TextBox

CARA MEMVALIDASI PENGETIKAN KARAKTER DALAM TEXTBOX

Berdasarkan pengalaman penulis sebelum-sebelumnya dalam membuat aplikasi ms access 2003, selalu saja penulis temukan karakter-karakter yang tidak pada tempatnya, misalnya untuk field nama yang harusnya hanya berupa teks, namun ada banyak record atau data dalam tabel untuk field nama yang berisi karakter angka, ataupun karakter-karakter yang lain yang tidak seharusnya atau dengan kata lain penulis belum pernah mendengar ada seseorang yang namanya ada karakter-karakter khusus seperti karakter &, %, #, [, ] dan karakter-karakter khusus yang lainnya. Tentunya anda sebagai pembuat aplikasinya tidak menginginkan hal itu terjadi bukan ?, yang belum lagi kemungkinan terjadinya error, karena ada karakter khusus dalam field yang karakter tersebut termasuk kedalam karakter operator penghubung dalam penulisan SQL (Structure Query Language). Berikut ini adalah cara untuk mencegah penginputan karakter angka atau karakter huruf dalam suatu TextBox ketika user mengetik karakternya. Untuk hal ini kita hanya perlu menggunakan event On KeyPress, serta mengetahui karakter set dari Key Ascii untuk setiap karakter huruf/angka. berikut ini adalah contohnya :
Jika hanya huruf yang boleh diinput oleh user :
Private Sub Text1_KeyPress(KeyAscii As Integer)
'65 sampai 90 adalah huruf kecil, 97 sampai 122 adalah huruf besar
'8 adalah Backspace, 9 adalah Tab, 13 adalah Enter, 32 adalah Spasi
     Select Case KeyAscii
          Case 65 To 90, 97 To 122, 8, 9, 13, 32
          Case Else
          KeyAscii = 0
          MsgBox "Hanya Huruf Alphabet a-z, A-Z dan <Spasi> yang diperbolehkan", vbInformation
      End Select
End Sub
Dari code diatas, jika user mengetik atau menekan tombol selain yang termasuk kedalam Alphabet, Tab, Backspace, Enter, dan spasi, maka access akan menampilkan pesan MsgBox diatas.


Jika hanya angka yang diperbolehkan :
Private Sub Text1_KeyPress(KeyAscii As Integer)
'48 sampai 57 adalah angka 0 sampai 9, 44 adalah Koma, 45 adalah negatif, 46 adalah Titik
'8 adalah Backspace, 9 adalah Tab, 13 adalah Enter, 32 adalah Spasi
      Select Case KeyAscii
           Case 48 To 57, 8, 9, 13, 32, 44 To 46
           Case Else
           KeyAscii = 0
           MsgBox "Hanya Angka/Nomor dan (, . -) yang diperbolehkan", vbInformation
      End Select
End Sub

Dari code diatas, jika user mengetik atau menekan tombol selain yang termasuk kedalam Numeric, Tab, Backspace, Enter, dan spasi, maka access akan menampilkan pesan MsgBox diatas.

Semoga Bermanfaat...

Selasa, 01 November 2011

Membuat Jam Digital Dalam Form

MENAMPILKAN JAM DIGITAL DALAM FORM

Untuk mempercantik tampilan Form, sekaligus juga untuk mengetahui jam/waktu dalam Form yang sedang aktif, kita bisa menampilkan jam/waktu dalam bentuk digital yang selalu berganti-ganti detiknya sesuai dengan waktu dari sistem komputer kita.
Supaya tampilannya lebih digital dan lebih menyerupai jam digital, maka kita membutuhkan jenis Font Digital seperti dalam jam tangan, jika anda ingin Font digital, anda bisa mencarinya di Paman Google atau di situs-situs/website-website penyedia font gratisan, lalu menginstalnya dikomputer anda. Atau jika tidak, anda bisa menggunakan Font yang sudah ada dikomputer anda (tentunya tampilannya tidak seperti jam digital).
Berikut adalah contoh jam digital yang penulis buat :
Form Dengan Jam Digital


Cara membuat jam digital dalam Form sangat dan sangatlah mudah sekali, yaitu :
  • Buat sebuah Label/Textbox dalam Form, penulis merekomendasikan membuat Label, karena Label tidak bisa diutak-atik nilainya, sedangkan jika menggunakan TextBox, agar TextBox tersebut tidak bisa diakses, maka kita harus mensetting Property Enabled menjadi No, dan Locked menjadi Yes. Dan biar lebih gampang, ganti nama Label/TextBox tersebut menjadi lblJam, atau txtJam (hal ini terserah anda, suka-suka anda saja, yang penting namanya unik dan tidak menyalahi aturan penamaan dari Access). Karena penulis membuat Label maka penulis namakan lblJam, lalu setting jenis Font sesuai keinginan anda.
  • Lalu disebelah kiri atas Form ada kotak hitam kecil, anda klik kanan dikotak hitam kecil tersebut lalu pilih Properties.
  • Pada Tab Event, cari field Timer Interval, dan isikan dengan 1000 (agar Jam/Waktunya terupdate setiap 1 detik).
  • Lalu pada event On Timer pilih Event Procedure, dan klik [] disebelah kanannya, anda akan dibawa kedalam jendela Visual Basic Editor.
  • Lalu masukkan code berikut ini :
         lblJam.Caption = Time()
         Sehingga code anda akan menjadi seperti ini :
         Private Sub Form_Timer()
         lblJam.Caption = Time()
         End Sub
  • Lalu klik Save dan tutup Jendela Visual Basic Editor
  • Tutup jendela properties dari Form, dan tutup jendela Design View Form.
  • Lalu jalankan Form anda, dan lihat hasilnya.

Jika yang anda gunakan adalah TextBox maka anda tidak perlu menuliskan “.Caption”. misalnya :
         Private Sub Form_Timer()
         txtJam = Time()
         End Sub

Anda juga bisa menggunakan format tanggal penuh disertai dengan waktunya, misalnya anda ingin tampilan waktunya seperti 01 Januari 2012 01:30:55, maka anda tinggal ganti Time() dengan format yang anda inginkan. Namun saran penulis jika anda ingin menggunakan format  tersendiri, maka anda harus sertakan detiknya, hal ini agar tampilan jamnya menjadi lebih hidup dengan selalu berganti-ganti detiknya (karena yang kita gunakan adalah 1000, yang berarti bahwa Event On Timer akan dieksekusi setiap 1 detik). Agar anda lebih paham, Timer Interval itu jika dibandingkan : 1 Detik waktu adalah 1000 dalam Timer Interval, dan berlaku kelipatannya (kayak kuis aja ya). yang berarti jika kita mau 5 detik, maka kita harus memasukkan nilai 5000 pada Timer Interval. Namun untuk trik menampilkan jam digital ini, mau tidak mau anda harus memasukkan nilai 1000 pada Timer Interval, karena kita akan menampilkan jam yang selalu berganti-ganti detiknya, bukan yang lain. Aduh maaf kenapa jadi kesini-sini ya pembahasannya, balik lagi ke masalah format tersendiri, jika anda ingin tampilannya seperti 01 Januari 2012 01:30:55, maka anda harus ganti Time() menjadi seperti dibawah ini :
Private Sub Form_Timer()
lblJam.Caption = Format(Now, "dd mmmm yyyy hh:nn:ss")
End Sub


Semoga Bermanfaat…

Sabtu, 29 Oktober 2011

Prefix Dalam Field AutoNumber

Cara Menambahkan Prefix Dalam Field AutoNumber

Seperti yang kita tahu, Tipe Data AutoNumber itu selalu berisi :
1,2,3,....10,11,12.....100,101,102....1000,1001,1002...dst...
Ada kalanya kita ingin menggunakan Type Data AutoNumber untuk sebuah field, namun dengan Prefix/Penambahan Huruf/Kata diawalnya, misalnya kita ingin datanya dengan format seperti AB0001, untuk data seperti ini kita tinggal mengedit field yang bertipe data AutoNumber dalam Tabel yang kita miliki. Namun yang perlu diingat adalah Format itu bukanlah menggambarkan data yang sebenarnya, format hanya berupa tampilannya saja, dimana pada dasarnya untuk tipe data Autonumber maka datanya adalah 1,2,3,4,5 dan seterusnya. Hal ini seperti dalam Form, jika kita mensetting Format property (misalnya pada Textbox), menjadi format Medium Date, tampilan Medium Date tersebut hanya pada tampilannya saja, hal ini bisa anda lihat atau buktikan dengan memanggil nilai dari textbox tersebut (misalnya) menggunakan MsgBox. Contohnya jika dalam TextBox1 kita atur format propertinya menjadi Medium Date sehingga (misalnya lagi) datanya akan tampak seperti 01-Jan-12, akan tetapi jika kita panggil menggunakan MsgBox maka hasilnya akan menjadi 1/1/2012 (kecuali jika menggunakan perintah .Text), dan begitu pula dengan tipe data dalam table yang berupa autonumber, jika kita gunakan Prefiks, lalu kita coba panggil datanya (misalnya) menggunakan fungsi DLookUp, maka data yang akan didapatkan adalah nomornya saja tanpa Prefiksnya. Jadi jika anda ingin datanya tetap konstan dengan Prefiks, penulis sarankan untuk menggunakan tipe data text saja, lalu gunakan seluruh kemampuan anda (agak lebay dikit) untuk membuat data dalam field tersebut menjadi data dengan prefiks dan nomor yang berurutan. Namun jika hanya sebatas tampilannya saja, maka anda bisa gunakan trik berikut ini yaitu menambahkan prefiks pada field autonumber.

Caranya adalah sebagai berikut :
Sewaktu kita membuat Tabel dan memilih Tipe Data AutoNumber pada sebuah Field, kita edit juga Field Format pada Tab General dibagian bawah, lalu ketikkan "AB"0000, atau tergantung dari keinginan anda. Pada contoh dibawah ini penulis ingin agar format dari autonumber untuk field CodeUrut adalah AB0001, AB0002, AB0003 dan seterusnya. anda bisa menyesuaikannya dengan apa yang anda inginkan.

Lihat contoh dalam gambar dibawah ini :
Format AutoNumber Dengan Prefix
Keterangan :
  • "AB" berarti Prefix untuk semua data dalam field adalah AB, dimana semua data dalam Field tersebut akan berawalan AB.
  • 0000 berarti jumlah karakter angka dalam field, dimana dalam contoh ini akan ada 4 karakter angka setelah Prefix, sehingga datanya akan menjadi AB0001, AB0002, AB0003 dst....
Pada gambar diatas yang berupa prefiks adalah AB, sedangkan nomor urutnya adalah 0000, anda harus menggunakan tanda petik dua (") untuk membuat prefiks, lalu diikuti dengan karakter 0 (nol) untuk menentukan berapa jumlah karakter dari nomor urutnya. Pada contoh diatas penulis menentukan jumlah karakter dari nomor urutnya adalah 4 yang ditandai dengan 4 angka 0 (nol) -> 0000



Refference : databasedev

Semoga Bermanfaat...

Sabtu, 22 Oktober 2011

Event Not In List Combo Box

PENGGUNAAN EVENT NOT IN LIST COMBO BOX

Sebelum masuk ke bahasan event Not In List, tidak ada salahnya untuk penulis sampaikan terlebih dahulu mengenai Combo box, ComboBox adalah perpaduan antara TextBox dan ListBox, jika TextBox kita bisa menambah data, namun kita tidak bisa memilih data yang telah ada dalam table atau query, ListBox adalah sebuah daftar yang bisa berasal dari table atau query, ataupun berisi daftar nilai/value tersendiri, anda tidak bisa menambahkan data baru kedalam ListBox, karena ListBox hanya berisi nilai/value tanpa bisa untuk menambah data (keculai dengan trik-trik khusus). Sedangkan ComboBox adalh perpaduan keduanya, dimana dengan Combo Box, kita bisa mendapatkan fitur-fitur dalam TextBox dan ListBox, kita bisa menambahkan data baru kedalam table menggunakan Combo Box (seperti TextBox), dan juga bisa menampilkan sebagian atau seluruh data yang telah ada dalam table. Untuk menambahkan data baru kedalam table menggunakan ComboBox, salah satu caranya adalah dengan menggunakan Event Not In List, seperti yang akan penulis sampaikan dibawah ini.

Pada event Not In List kita bisa menentukan apa yang harus dilakukan jika seorang user memasukkan data  yang tidak terdaftar dalam Combo Box. Untuk menggunakan event ini, property dari Combo box Limit To List harus diset menjadi Yes.
Kita bisa memberikan sebuah pertanyaan kepada user untuk memasukkan data yang diinputnya kedalam daftar Combo Box atau kita bisa "memaksa" user untuk hanya memilih data berdasarkan daftar dalam Combo Box.
Jika kita mengijinkan user untuk menambah data yang tidak terdaftar dalam Combo Box, maka Code yang kita butuhkan adalah statement Insert Into dan Response acDataErrAdded.
Jika kita ingin "memaksa" user untuk hanya memilih data yang terdaftar dalam Combo Box maka kita tidak memerlukan statement-statement VBA yang lumayan ngejelimet, karena yang kita butuhkan hanyalah Response acDataErrContinue
Contohnya :

Jika kita mengijinkan untuk menambah data :
Private Sub ComboBox1_NotInList(NewData As String, Response As Integer)
Dim strSql As String
Dim strMsg As String
strMsg = "\" & NewData & "/ tidak ada dalam daftar." & vbCr & vbCr
strMsg = strMsg & "Apakah anda yakin ingin menambah data '" & NewData & "' ?"
If MsgBox(strMsg, vbQuestion + vbYesNo) = vbYes Then
strSql = "Insert Into Nama_Tabel ([Field Dalam Tabel]) " & "values ('" & NewData & "');"
CurrentDb.Execute strSQL, dbFailOnError
Response = acDataErrAdded
Else
Response = acDataErrContinue
End If
End Sub

Jika kita "memaksa" user untuk memilih data dalam daftar :
Private Sub ComboBox1_NotInList(NewData As String, Response As Integer)
Dim strMsg As String
    strMsg = "\" & NewData & "/ tidak ada dalam daftar." & vbCr & vbCr
    strMsg = strMsg & "Silahkan pilih yang telah terdaftar."
    MsgBox strMsg
    Response = acDataErrContinue
End Sub

Yang perlu diingat event Not In List akan mengabaikan Null value, jadi untuk mencegah Null maka kita bisa menggunakan event After Update.

Untuk file contoh penggunaan event Not In List Combo Box bisa didownload dari 4shared

Semoga Bermanfaat....

Sabtu, 15 Oktober 2011

Fungsi Select Case

Fungsi Select Case adalah fungsi alternatif dari fungsi If...Then...Else/ElseIf...
Dengan fungsi Select Case kita lebih dipermudah dalam menangani sebuah event yang memiliki banyak kriteria/nilai dari sebuah Field. Dengan kata lain jika kita tidak memahami fungsi Select Case maka kita akan menuliskan code If...Then...Else/ElseIf... berulang-ulang (tergantung dari jumlah kriteria/nilai dari Field yang menjadi acuan kita). Misalnya ada sebuah Textbox yang memiliki Sumber data dari sebuah ComboBox, dan value/nilai dari ComboBox berjumlah 5 data, jika kita menggunakan fungsi If..Then...Else/ElseIf... maka kita harus mengulang fungsi If...Then...Else/ElseIf... sebanyak 5 kali pula. Fungsi select case akan memudahkan kita dalam mengatur kondisi-kondisi tersebut, karena penulisan statementnya sangat mudah, kita hanya tinggal menentukan kondisi-kondisinya saja lalu memasukkan kondisi hasilnya. Berbeda dengan fungsi If then Else atau If Then ElseIf, yang "mengharuskan" kita untuk benar-benar memikirkan kondisi-kondisi yang harus mendapatkan "prioritas" untuk dituliskan pertama agar kondisi-kondisinya tidak saling "tumpang tindih", dalam arti kondisi-kondisi tersebut tidak boleh saling bertolak belakang, misalnya anda tempatkan IsNull di akhir EleIf, hal ini akan menyebabkan error atas fungsi anda, karena seharusnya fungsi IsNull diletakkan pada bagian awal dari fungsi If. Namun tidak demikian halnya dengan fungsi Select Case, karena fungsi Select Case akan membuat access secara otomatis mencari kondisi yang paling sesuai pada statement Select Case tersebut atas keadaan yang sedang terjadi.

Struktur dari Fungsi Select Case adalah :
Select Case <Nama Fungsi/Field Acuan>
Case <Pertama>
<Value/Nilai yang diinginkan>
Case <Kedua>
<Value/Nilai yang diinginkan>
Case <Ketiga>
<Value/Nilai yang diinginkan>
Case <Keempat>
<Value/Nilai yang diinginkan>
dan seterusnya...
Case Else
<Value/Nilai yang diinginkan>
End Select

Contohnya :
Jika Menggunakan Fungsi If...Then...Else/ElseIf :
If Me.ComboBox1.Column(1) = "1" Then
TextBox1= "Januari"
ElseIf Me.ComboBox1.Column(1) = "2" Then
Textbox1= "Februari"
ElseIf Me.ComboBox1.Column(1) = "3" Then
Textbox1= "Maret"
ElseIf Me.ComboBox1.Column(1) = "4" Then
Textbox1= "April"
ElseIf Me.ComboBox1.Column(1) = "5" Then
Textbox1= "Mei"
ElseIf Me.ComboBox1.Column(1) = "6" Then
Textbox1= "Juni"
ElseIf Me.ComboBox1.Column(1) = "7" Then
Textbox1= "Juli"
ElseIf Me.ComboBox1.Column(1) = "8" Then
Textbox1= "Agustus"
ElseIf Me.ComboBox1.Column(1) = "9" Then
Textbox1= "September"
ElseIf Me.ComboBox1.Column(1) = "10" Then
Textbox1= "Oktober"
ElseIf Me.ComboBox1.Column(1) = "11" Then
Textbox1= "November"
ElseIf Me.ComboBox1.Column(1) = "12" Then
Textbox1= "Desember"
Else
MsgBox "Bukan Nomor Bulan", vbInformation
End If

Jika menggunakan fungsi Select Case :
Select Case ComboBox1.Column(1)
Case Is = 1
TextBox1 = "Januari"
Case Is = 2
TextBox1 = "Februari"
Case Is = 3
TextBox1 = "Maret"
Case Is = 4
TextBox1 = "April"
Case Is = 5
TextBox1 = "Mei"
Case Is = 6
TextBox1 = "Juni"
Case Is = 7
TextBox1 = "Juli"
Case Is = 8
TextBox1 = "Agustus"
Case Is = 9
TextBox1 = "September"
Case Is = 10
TextBox1 = "Oktober"
Case Is = 11
TextBox1 = "November"
Case Is = 12
TextBox1 = "Desember"
Case Else
MsgBox "Bukan Nomor Bulan", vbInformation
End Select

untuk file contoh penggunaan fungsi ini bisa didownload dari 4shared
Semoga bermanfaat...

Sabtu, 01 Oktober 2011

Bound Dan Unbound Form

BOUND FORM DAN UNBOUND FORM

1. BOUND FORM
Bound Form adalah sebuah form yang memiliki Record Source dari Tabel Atau Query atau bahasa indonesianya berarti form yang memiliki sumber data/record dari tabel atau query.
Form jenis ini bisa kita buat dengan menggunakan Wizard dari Access dan memilih Tabel atau query sebagai sumber data/recordnya.
Kelebihan dari form ini adalah kita tidak terlalu repot-repot dalam hal menyimpan, menghapus atau mengedit data, atau hal-hal lain yang berhubungan dengan data/record dari sebuah tabel. Dengan jenis form ini kita dapat dengan mudah untuk membuat event-event tanpa harus dipusingkan dengan bahasa pemrograman, misalnya kita ingin mencari data dengan menggunakan ComboBox atau ListBox, maka kita hanya perlu membuat sebuah ComboBox atau ListBox menggunakan Wizard dan memilih "Find a record on my form based on the value I selected in my combo box". lalu menyesuaikan field-field yang kita butuhkan dalam ComboBox atau ListBox tersebut.
Namun buat penulis, form jenis ini "kurang baik" dalam hal manajemen data, terutama jika kita hanya "membiarkan" code-code yang dibuatkan oleh access seperti apa adanya. Dari pengalaman penulis dengan form jenis ini, penulis selalu mendapatkan data-data atau record-record yang tidak sesuai dengan apa yang penulis mau, karena event-event atau statement-statementnya tereksekusi walaupun user telah mencegah atau mengcancelnya.
Contohnya, jika dalam tabel ada 1 Primary Key dan field tersebut telah terisi dalam form sedangkan field yang lainnya belum terisi lalu kita langsung menutup form maka akan tetap terbuat data/record baru dalam tabel.

2. UNBOUND FORM
Unbound Form adalah form yang tidak memiliki Record Source. Form jenis ini bisa dibuat dengan cara klik dua kali pada Create form in Design view.
Jika anda membuat form jenis ini, maka anda akan harus sedikit bekerja keras dalam hal menuliskan code-code atau script-script untuk event-event dalam form.
Kelebihan form jenis ini salah satunya adalah jika terjadi error atas suatu event, maka tidak akan berpengaruh apa-apa terhadap tabel anda (selama errornya terjadi sebelum dieksekusinya event penyimpanan/pengupdate-an data). Oleh karena itu penulis sarankan jika anda ingin menggunakan form jenis ini, lebih baik anda menempatkan code yang berhubungan dengan simpan, update, dan delete data diakhir code (hal ini untuk berjaga-jaga jika suatu saat terjadi error, maka code simpan, update, atau delete data tidak dieksekusi oleh Access).

Contoh Perbedaan kedua jenis Form diatas dalam hal Penyimpanan Data :
1. BOUND FORM
Dalam form jenis ini untuk menyimpan data, codenya seperti ini :
DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70

2. UNBOUND FORM
Dalam form jenis ini untuk menyimpan data, contoh codenya seperti ini :
Dim KoneksiDB As ADODB.Connection
Dim DataDB As ADODB.Recordset
Dim strKoneksi As String
Dim dbAplikasi as string

Set KoneksiDB = New ADODB.Connection
dbAplikasi = "c:\Nama Folder\Nama Aplikasi.mdb"
strKoneksi = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbAplikasi
KoneksiDB.Open strKoneksi

'Membuka Tabel yang diinginkan.
    Set DataDB = New ADODB.Recordset
    DataDB.CursorType = adOpenKeyset
    DataDB.LockType = adLockOptimistic
    DataDB.Open "NamaTabel", KoneksiDB, , , adCmdTable

'Menambahkan data kedalam Tabel
DataDB.AddNew
        DataDB!<Nama Field 1 Dalam Tabel> = Me.<Field1 Dalam Form>
        DataDB!<Nama Field 2 Dalam Tabel> = Me.<Field2 Dalam Form>
        DataDB!<Nama Field 3 Dalam Tabel> = Me.<Field3 Dalam Form>
        DataDB.Update

MsgBox "Data Berhasil Disimpan.", vbInformation

DataDB.Close
KoneksiDB.Close

Anda bisa melihat perbedaan diatas dalam hal code-code yang dibutuhkan untuk menyimpan data, untuk form dengan jenis Bound Form, maka codenya sangat simple dan coe tersebut tidak dapat anda terapkan pada form dengan jenis Unbound Form, sedangkan pada code untuk menyimpan data menggunakan Unbound Form, seperti yang anda lihat, maka anda harus mendeklarasikan beberapa variable terlebih dahulu, lalu membuat statement atau perintah untuk menyimpan datanya kedalam table yang dimaksud. Hal ini belum mengenai masalah duplikasi data, misalnya dalam table yang anda tuju, terdapat sebuah Primary Key, dan data yang sedang diinput oleh user ternyata sudah ada dalam tabel, maka untuk mengantisipasi hal ini anda harus membuat statement atau code yang bisa digunakan jika masalah tersebut terjadi. Belum lagi persoalan-persoalan yang lainnya.

Semoga bermanfaat...

Selasa, 27 September 2011

Fungsi Dalam Access

BEBERAPA FUNGSI DALAM ACCESS

Setelah sebelumnya kita telah mengetahui fungsi-fungsi yang wajib untuk dipahami dalam menggunakan microsoft access 2003 versi penulis, sekarang kita akan berlanjut ke bahasan mengenai fungsi-fungsi lainnya dalam ms access 2003, yang perlu anda ketahui adalah bahwa fungsi-fungsi yang akan penulis sampaikan disini hanyalah beberapa fungsi yang "umumnya" sering digunakan dalam pembuatan aplikasi-aplikasi menggunakan access, dan masih banyak lagi fungsi-fungsi lain yang "tidak umum" yang tersedia dalam ms access yang belum dapat penulis sampaikan sekarang dan disini. Namun anda bisa mempelajarinya di menu Help VBA editor ataupun dari buku-buku, serta dari searching di Google.
Berikut ini adalah beberapa fungsi dan penjelasannya secara singkat dengan contohnya dalam Ms Access 2003 (versi penulis tentu saja) :

Fungsi Date()
Akan menghasilkan Tanggal dari sistem komputer.
Contohnya :
Dim strTanggal
strTanggal = Date
Akan menghasilkan data Tanggal, misalnya 31/12/2011

Fungsi Now()
Akan menghasilkan Tanggal dan Waktu dari sistem komputer.
Contohnya :
Dim strSekarang
strSekarang = Now
Akan menghasilkan data Tanggal dan Waktu, misalnya 31/12/2011 10:30:55

Fungsi Hour()
Akan menghasilkan Jam dari waktu yang ditentukan.
Contohnya :
Dim strJam
strJam = Hour(#11:30:26#)
Akan menghasilkan 11

Fungsi Minute()
Akan menghasilkan Menit dari waktu yang ditentukan.
Contohnya :
Dim strMenit
strMenit = Minute(#11:30:26#)
Akan menghasilkan 30

Fungsi Second()
Akan menghasilkan detik dari waktu yang ditentukan.
Contohnya :
Dim strDetik
strDetik = Second(#11:30:26#)
Akan menghasilkan 26

Fungsi Time()
Akan menghasilkan Waktu (Jam:Menit:Detik) dari sistem komputer.
Contohnya :
Dim strWaktu
strWaktu = Time
Akan menghasilkan data Waktu, misalnya 11:35:59

Fungsi Day()
Akan menghasilkan nilai tanggal dari tanggal yang telah ditentukan (Berupa angka 1-31).
Contohnya :
Dim strTanggal
strTanggal = Day(“28/01/2011”)
Akan menghasilkan 28

Fungsi Month()
Akan menghasilkan nilai bulan dari tanggal yang telah ditentukan (berupa angka 1-12).
Contohnya :
Dim strBulan
strBulan = Month(#31/01/2012#)
Akan menghasilkan 1

Fungsi Year()
Akan menghasilkan nilai tahun dari tanggal yang telah ditentukan.
Contohnya :
Dim strYear
strYear = Year(#31/01/2012#)
Akan menghasilkan 2012

Fungsi Weekday
Untuk mendapatkan nilai hari dari tanggal yang telah ditentukan
Strukturnya Weekday(Tanggal, Hari pertama(Opsional, Jika tidak ditentukan maka hari pertama adalah Minggu)).
Contohnya :
Dim strHari
strHari = Weekday("31/12/2011")
Akan menghasilkan 7
Karena 31/12/2011 adalah hari sabtu, dan Hari pertama adalah Minggu.
Contoh lainnya :
strHari = Weekday("31/12/2011", vbMonday) atau Weekday("31/12/2011", 2)
Akan menghasilkan 6, karena 31/12/2011 adalah hari sabtu, dan Hari pertama adalah Senin.

Fungsi WeekdayName
Untuk mendapatkan nama hari, nama hari yang dihasilkan bisa berupa nama hari penuh atau singkatan.
Strukturnya WeekdayName(Nilai hari yang mau ditampilkan, Disingkat/Tidak(Opsional), Hari Pertama(Opsional, jika tidak ditentukan maka Hari pertama adalah Minggu))
Contohnya :
> Untuk nama hari penuh
Dim strNamaHari
strNamaHari= WeekdayName(1) atau WeekdayName(1, 0, 0) atau WeekdayName(1, False, vbSunday)
Akan menghasilkan Minggu/Sunday (Untuk WeekdayName(1, 0, 0) Jika hari pertama dalam settingan Komputer adalah Minggu)
Karena Nilai Hari yang mau ditampilkan adalah 1 yang berarti hari pertama dari Minggu.
contoh lainnya :
strNamaHari = WeekdayName(1, 0, 1) atau WeekdayName(1. False, vbMonday)
Akan menghasilkan Senin/Monday
Karena Nilai hari yang mau ditampilkan adalah 1 yang berarti hari pertama dari Senin.

> Untuk nama hari yang disingkat
Dim strNamaHari
strNamaHari = WeekdayName(1, True, vbMonday) atau WeekdayName(1, 0, 1)
Akan menghasilkan Sen/Mon
Karena Nilai hari yang mau ditampilkan adalah 1 yang berarti hari pertama dari Senin.

Fungsi MonthName
Untuk mendapatkan nama bulan, nama bulan yang dihasilkan bisa berupa nama bulan penuh atau singkatan.
Contohnya :
> Untuk nama bulan penuh
Dim strNamaBulan
strNamaBulan = MonthName(1)
Akan menghasilkan Januari

> Untuk nama bulan yang disingkat
Dim strNamaBulan
strNamaBulan = MonthName(1, True)
Akan menghasilkan Jan

Fungsi Left
Untuk mengambil karakter dari sebelah kiri sebuah Field.
Strukturnya Left(String/Field sumber, Jumlah karakter yang diinginkan)
Contohnya :
Dim strKiri as string
strKiri = Left(“Belajar Access”, 7)
Akan menghasilkan Belajar

Fungsi Right
Untuk mengambil karakter dari sebelah kanan sebuah Field.
Strukturnya Right(String/Field sumber, Jumlah karakter yang diinginkan)
Contohnya :
Dim strKanan as string
strKanan = Right(“Belajar Access”, 6)
Akan menghasilkan Access

Fungsi Len
Untuk mendapatkan jumlah karakter termasuk spasi.
Contohnya :
Dim strKarakter
strKarakter = Len(“Belajar Access”)
Akan menghasilkan 14

Fungsi Trim
Untuk menghilangkan karakter spasi diawal dan diakhir text/string.
Contohnya :
Dim strKarakter
strKarakter = Trim(“ BelajarAccess “)
Akan menghasilkan “BelajarAccess”

Fungsi LTrim
Untuk menghilangkan karakter spasi disebelah kiri text/string.
Contohnya :
Dim strKiri
strKiri = LTrim(“ BelajarAccess “)
Akan menghasilkan “BelajarAccess “

Fungsi RTrim
Untuk menghilangkan karakter spasi disebelah kanan text/string.
Contohnya :
Dim strKanan
strKanan = RTrim(“ BelajarAccess “)
Akan menghasilkan “ BelajarAccess”

Fungsi Mid
Untuk mendapatkan string dari karakter sebelah kiri text/string.
Strukturnya Mid(String/Field sumber, Karakter mulai, Jumlah karakter yang diinginkan(Opsional))
Contohnya :
> Tanpa Jumlah karakter yang diinginkan
Dim strKarakter
strKarakter = Mid(“Belajar Access”, 4)
Akan menghasilkan “ajar Access”, karena “Karakter mulai” ditentukan dari karakter keempat.

> Dengan jumlah karakter yang diinginkan
Dim strKarakter
strKarakter = Mid(“Belajar Access”, 4, 4)
Akan menghasilkan “ajar”
karena “Karakter mulai” ditentukan dari karakter keempat dengan hasil yang diinginkan sebanyak 4 karakter dari “Karakter mulai”.

Fungsi Replace
Untuk mengganti karakter dengan karakter lain dalam suatu string/field.
Contohnya :
Dim strUtama, strSumber, strTarget, strHasil
strUtama = "Belajar Access"
strSumber = "Belajar"
strTarget = "Mengajar"
strHasil = Replace(strUtama, strSumber, strTarget)
Akan menghasilkan “Mengajar Access”.

Fungsi DFirst
Untuk mendapatkan record pertama dari sebuah table.
Strukturnya DFirst(Field yang dicari, Nama Tabel, Kriteria(Opsional))
Contohnya :
DFirst(“NamaUser”, “tblUser”)

Fungsi DLast
Untuk mendapatkan record terakhir dari sebuah table.
Strukturnya DLast(Field yang dicari, Nama Tabel, Kriteria(Opsional))
Contohnya :
DLast(“NamaUser”, “tblUser”)

Fungsi DMin
Untuk mendapatkan record dengan nilai terendah dalam sebuah table.
Strukturnya DMin(Field yang dicari, Nama Tabel, Kriteria (Opsional))
Contohnya :
DMin(“LoginTerakhir”, ”tblUser”)

Fungsi DMax
Untuk mendapatkan record dengan nilai tertinggi dalam sebuah table.
Strukturnya DMax(Field yang dicari, Nama Tabel, Kriteria (Opsional))
Contohnya :
DMax(“LoginTerakhir”, ”tblUser”)

Fungsi DateDiff
Untuk mendapatkan selisih dari dua tanggal.
Strukturnya DateDiff(Jenis selisih yang diinginkan (Tanggal/Bulan/Tahun), Tanggal Pertama, Tanggal Kedua)
Untuk mendapatkan selisih dalam jumlah Tanggal gunakan “d”, untuk Bulan gunakan “m”, untuk Tahun gunakan “yyyy”.
Contohnya :
DateDiff(“d”, “25/01/2011”, “25/02/2011”) Akan menghasilkan 31
DateDiff(“m”, “25/01/2011”, “25/02/2011”) Akan menghasilkan 1
DateDiff(“yyyy”, “25/01/2011”, “25/02/2011”) Akan menghasilkan 0

Fungsi DateAdd
Untuk menambahkan tanggal/bulan/tahun dari tanggal yang telah ditentukan.
Strukturnya DateAdd(Jenis penambahan yang diinginkan (Tanggal/Bulan/Tahun), Jumlah penambahannya, Tanggal acuan penambahan)
Untuk mendapatkan penambahan Tanggal gunakan “d”, untuk Bulan gunakan “m”, untuk Tahun gunakan “yyyy”.
Contohnya :
DateAdd(“d”, 2, “25/02/2011”) Akan menghasilkan 27/02/2011
DateAdd(“m”, 2, “25/02/2011”) Akan menghasilkan 25/04/2011
DateAdd(“yyyy”, 2, “25/02/2011”) Akan menghasilkan 25/02/2013

Fungsi IIf
IIf (Immediate If) adalah fungsi If yang akan menghasilkan satu nilai berdasarkan kriteria dari nilai tersebut(bersifat True dan False).
Strukturnya IIF(Kriteria, “Hasil jika Kriteria bernilai True”, “Hasil jika Kriteria bernilai False”)
Contohnya :
IIf(Text0 <= 1000, "Kurang dari sama dengan seribu", "Lebih dari seribu")
Akan menghasilkan “Kurang dari sama dengan seribu” jika Text0 berisi angka 0-1000
Akan menghasilkan “Lebih dari seribu” jika Text0 berisi selain dari 0-1000 atau Null
Anda harus berhati-hati menggunakan Fungsi ini, karena bisa saja terjadi hasil yang diluar dugaan ataupun terjadi Error.

Semoga bermanfaat...

Senin, 19 September 2011

File Select Dialog

MEMILIH FILE GAMBAR MENGGUNAKAN FILE SELECT DIALOG
LALU MENAMPILKANNYA DALAM FORM

Untuk aplikasi yang sedang kita buat, mungkin kita akan membutuhkan sebuah file gambar, misalnya untuk biodata karyawan yang dilengkapi dengan Foto, ataupun aplikasi anda membutuhkan sebuah file gambar untuk keperluan tertentu. Idealnya adalah jika aplikasi kita adalah seperti biodata karyawan, maka cara yang paling baik adalah menggunakan web cam atau kamera digital yang langsung mengcapture foto karyawan tersebut lalu menyimpannya dalam aplikasi kita, namun sayangnya microsoft access (khususnya yang versi 2003) "kurang baik" atau bisa dibilang sebisa mungkin dihindari untuk kasus seperti ini, karena sampai sekarang belum ada metode yang terbukti efisien dan Less Error untuk ms access dalam hal mengcapture foto, dikarenakan (mungkin) para vendor webcam atau kamera digital tidak "melirik" ms access sebagai program untuk didukung oleh mereka, kecuali dalam hal penyimpanannya saja. Solusi dari masalah ini adalah kita menggunakan File Select Dialog menggunakan API functions, lalu browsing dalam komputer atau jaringan dan memilih file gambarnya.
Dalam Ms Access ada beberapa cara untuk kasus seperti ini, salah satunya adalah dengan memilih file gambar dan menampilkan gambar tersebut dalam Form (agar user tahu jika gambar yang dipilihnya tidak salah) namun yang disimpan dalam tabel hanya berupa Path dari gambar tersebut, bukan file gambarnya, karena seperti yang pernah penulis katakan dalam artikel penulis sebelumnya Mengapa Access, bahwa ms access "tidak baik" dalam hal menyimpan file foto, walaupun anda bisa menggunakan tipe data Ole Object, namun anda akan lumayan kesulitan dalam mengakomodir segala keperluan dalam aplikasi ms access anda yang berhubungan dengan foto tersebut.
Namun perlu diingat jika sewaktu-waktu kita membuka biodata seorang karyawan dan file gambarnya hilang (mungkin karena terhapus secara tidak sengaja) maka akan terjadi error. Namun menurut penulis justru hal itu yang akan membuat anda menjadi seorang programmer yang handal, karena anda harus "berimajinasi" dan memikirkan hal-hal yang mungkin saja terjadi karena "Human Error" ataupun karena masalah hardware atau jaringan yang error atau down, lalu anda pun pasti akan memikirkan bagaimana caranya untuk mengantisipasi jika dikemudian hari hal-hal yang tidak diinginkan itu terjadi, atau anda akan memikirkan bagaimana caranya meminimalisasi segala error atau masalah yang akan terjadi atas semua kemungkinan-kemungkinan yang bisa saja terjadi sewaktu-waktu.
Sudah berulang kali penulis gogling atau searching di internet mengenai file select dialog untuk ms access dan mendapatkan code-code untuk menampilkan file select dialog namun tidak pernah ada yang sesuai dengan apa yang penulis mau (penulis maunya direktori path adalah direktori dari file select dialog yang terakhir dan filter dari File Type select dialog hanya berupa file-file yang penulis mau). Seperti yang pernah penulis dapatkan dalam situsnya Microsoft (Direktori pathnya selalu default dari code), ada juga yang penulis dapatkan yang direktori pathnya sesuai dengan yang penulis mau tetapi untuk filter File Type-nya tidak berfungsi, mungkin saja sebenarnya bisa sesuai dengan apa yang penulis inginkan, namun setelah penulis edit-edit berulang-ulang tetap saja hasilnya Nol alias tetap seperti sedia kala dan malahan sampai terjadi error terus menerus.
Sampai akhirnya penulis benar-benar menemukan File select dialog yang sesuai dengan yang penulis mau, yaitu dari situs tek-tips pada FAQ-nya. Dimana File type dari window select dialog bisa di edit dan berfungsi seperti yang penulis mau, serta direktori defaultnya mengikuti direktori sebelumnya.

Namun kali ini penulis tidak akan mempostingkan caranya, karena dalam link FAQ diatas sudah ada langkah-langkahnya. Silahkan anda kunjungi situs diatas untuk penjelasan lebih lanjut. Disini penulis hanya akan share mengenai pengalaman penulis tentang File Select Dialog, namun penulis juga telah membuat sebuah file access untuk memanggil window select dialog menggunakan Open File Dialog, lalu menampilkan gambar yang dipilih pada form.

Untuk menggambarkan cara penggunaanya bisa dilihat dari file yang telah penulis buat dan upload, anda bisa mendownload contoh File Select Dialog (Gambar) dan menampilkannya dalam form dari 4shared

Semoga bermanfaat...

Selasa, 06 September 2011

Error Handling

ERROR HANDLING / PENANGANAN ERROR

Salah satu syarat dari seorang Programmer atau Pembuat Aplikasi yang baik adalah dalam hal penanganan masalah error yang mungkin terjadi dalam aplikasi yang dibuatnya, error-error dalam sebuah aplikasi bisa terjadi karena hal-hal yang tidak diduga oleh seorang Programmer, istilah kerennya sih faktor "X".
Oleh karena itu seorang Programmer yang baik haruslah memikirkan atau meminimalisir terjadinya error-error untuk hal-hal yang sangat mungkin bisa terjadi, seperti ketidak-sesuaian penginputan data oleh User dalam field-field, misalnya ada field yang harus diisi tetapi User lupa mengisinya, hal seperti ini haruslah diantisipasi sedemikian rupa agar Access tidak menampilkan code error yang membuat seorang user dapat melihat code-code dibalik sebuah form/module/macro. Karena biasanya jika terjadi error Access akan menampilkan pesan error dengan pilihan End atau debug (Dalam file .MDB).
Sejauh yang penulis tahu, penanganan masalah error bisa dilakukan dengan 3 cara, yaitu :

1. Penanganan error secara simple menggunakan On Error Resume Next
On Error Resume Next berarti jika terjadi error maka Access akan langsung melanjutkan code ke baris berikutnya tanpa memberitahu apa-apa kepada user jika telah terjadi error, hal ini tentu saja mungkin akan membuat seorang user akan kebingungan karena User tidak tahu jika telah terjadi error, apalagi jikak berhubungan dengan masalah simpan data, karena tidak terjadi apa-apa maka user pasti menganggap jika datanya telah tersimpan, namun setelah beberapa waktu ketika user ingin melihat data yang telah disimpannya ternyata tidak ada, hal ini tentunya akan menyulitkan anda sebagai Pembuat aplikasinya, karena mungkin saja anda akan dipertanyakan mengapa datanya tidak ada, dan anda akan kesulitan untuk melacaknya, karena masalah error sebelumnya.

2.Penanganan error dengan Error Handler On Error Go To
Error Handler atau Trap Error berarti jika terjadi error maka kita perintahkan Access untuk menuju code error yang telah kita tentukan atau bisa juga secara default, jika secara default maka pesan yang ditampilkan oleh Access adalah pesan default masalah error dengan deskripsi yang default pula.
Kita bisa mengkustomisasi pesan error dengan bahasa yang kita gunakan sehari-hari agar user lebih mengerti apa yang harus dilakukan jika terjadi error.
Syarat mutlak dari cara ini adalah seorang Programmer harus mengetahui error number dari setiap error yang akan terjadi. untuk mengetahui error number kita bisa menggunakan code On Error pada Form lalu mengetikkan :
Debug.Print "DataErr = "; DataErr
Error numbernya akan ditampilkan dalam jendela Immediate Window, tetapi sebelumnya dalam jendela visual basic editor kita harus menampilkan jendela immediate (Klik menu View > Immediate Window), lalu mengetes form dengan kesalahan yang ingin kita ketahui error numbernya.

3. Penanganan error dengan memikirkan satu persatu kemungkinan Error
yaitu dengan memikirkan kemungkinan-kemungkinan terjadinya error jika data yang diinput tidak sesuai atau tidak memenuhi kriteria dari code lain yang akan dieksekusi.
Hal ini tentunya harus benar-benar dipikirkan semua hal dan benar-benar semua hal yang mungkin saja terjadi dan menyebabkan error, sampai benar-benar tidak ada lagi kemungkinan error akan terjadi. Misalnya Field dalam keadaan Null, format penginputan tanggal tidak tepat, ada karakter yang tidak diperbolehkan dalam sebuah field, dan lain sebagainya. Untuk penanganan seperti ini akan membuat satu field dalam form akan berisi banyak event dan code-code, seperti event On KeyPress, After Update, code IsNull, Len, Right, Left dan lain sebagainya. Namun cara penangan seperti ini akan memudahkan seorang User untuk mengetahui kesalahan apa yang telah diperbuatnya secara detail dan terperinci, misalnya kada sebuah field yang hanya boleh diisi dengan karakter Alpabet, jika seorang user menekan tomkbol angka maka dengan dengan penanganan seperti ini, user akan mengetahui kalau dia baru saja menekan tombol selain tombol Alpabet dikeyboardnya.

Namun semua itu tergantung kebutuhan dan situasi, dan anda yang lebih mengetahui penanganan error yang mana yang lebih baik anda gunakan...

Semoga bermanfaat...

Selasa, 30 Agustus 2011

Form Login Sederhana 3

MEMBUAT FORM LOGIN (Lanjutan - Finish)

Kali ini kita akan sempurnakan form login yang telah dibuat sebelumnya, jika anda belum punya silahkan download dari 4shared, lalu buka artikel membuat form login bag 2 terlebih dahulu.

Karena ini penyempurnaan, maka akan ada tambahan fungsi : update data.
yang sekarang akan kita tambahkan adalah :
  • Field UserLevel -> Sebagai kriteria User yang berhak mengakses menu
  • Field LoginTerakhir -> Untuk melihat waktu login terakhir dari User
  • Field StatusLogin -> Sebagai kriteria untuk menampilkan nama User yang sedang Login dalam Form
  • Tabel mstLevel -> Sebagai RowSource dari Field UserLevel
  • Form Utama -> Form yang akan dibuka setelah User berhasil Login

Langkah-langkahnya :
  • Buka kembali file Simple Form Access.mdb
  • Dalam jendela database pilih Tables lalu klik dua kali pada Create table in Design view
  • Buat Field dengan nama LevelName dengan Data Type=Text dan Field Size=50
  • Lalu jadikan sebagai Primary Key dan simpan dengan nama mstLevel dan tutup jendela Tabel Design View
  • Klik dua kali pada Table mstLevel untuk menginput data User Level lalu masukkan 3 Data berikut ini :
ADMINISTRATOR, AUDIT, DATA ENTRY
(atau sesuai dengan yang anda inginkan)
  • Lalu klik kanan tblUser dan pilih Design View
  • lalu tambahkan Field-field berikut ini:
  • UserLevel (Data Type=Text, Field Size=50), dibagian bawah pilih Tab Lookup, Dibagian Display Control pilih Combo Box dan Row Source mstLevel
  • LoginTerakhir (Data Type=Date/Time, dalam Tab General pilih Format=General Date)
  • StatusLogin (Data Type=Text, Field Size=10)
  • Lalu klik Save dan tutup jendela Table Design View
  • Klik dua kali pada tblUser untuk mengedit data
  • Masukkan data-data User yang masih kosong (terserah anda), untuk field LoginTerakhir isikan saja dengan Tanggal(bebas tanpa perlu mengisi jamnya) dan khusus field StatusLogin isikan dengan ACTIVE atau INACTIVE
  • Setelah selesai masuk ke bagian Forms dan klik dua kali pada Create form in design view, buat beberapa Command Button dan beberapa Label, saya membuat 8 Command Button dan 4 buah Label dengan rincian :
Command Button :
1.cmdInputMaster, 2.cmdEditMaster, 3.cmdEditHarian, 4.cmdLaporan, 5.cmdInputHarian, 6.cmdInputUser, 7.cmdEditUser dan 8.cmdKeluar
  • Untuk Label saya biarkan 3 label dengan nama default dari Access, dan 1 label dengan nama lblUser seperti gambar dibawah ini :

Gambar design frmUtama versi Penulis
  • Setelah selesai simpan dengan nama frmUtama lalu tutup jendela Design Form
  • Klik kanan frmLogin dan pilih Design View untuk mengedit code
  • Klik kanan cmdOK dan pilih properties lalu pada event On Click klik Event Procedure dan klik [...] disebelah kanannya, anda akan dibawa ke Jendela Visual Basic Editor
  • Dibawah baris tulisan MsgBox "Selamat, anda berhasil Login", vbInformation hapus baris DoCmd.Close dan tambahkan code berikut ini :
CurrentDb.Execute "Update tblUser set LoginTerakhir='" & Now() & "' where NamaUser='" & txtUser & "';"
CurrentDb.Execute "Update tblUser SET StatusLogin='ACTIVE' " & "Where NamaUser='" & txtUser & "';"
CurrentDb.Execute "Update tblUser SET StatusLogin='INACTIVE' " & "Where NamaUser<>'" & txtUser & "';"
DoCmd.OpenForm "frmUtama"
DoCmd.Close acForm, "frmLogin"
  • Lalu klik Save dan tutup jendela Visual Basic Editor, tutup Jendela Properties dari cmdOk dan tutup jendela Design frmLogin
  • Klik kanan frmUtama lalu pilih Design View
  • Dipojok Kiri jendela design frmUtama ada kotak hitam kecil, klik kanan dikotak hitam kecil tersebut lalu pilih Properties, pada Tab Event, pilih Event Procedure pada On Open dan klik tombol [...] disamping kanannya, anda akan kembali dibawa ke jendela Visual Basic Editor,
  • Masukkan code berikut :
Dim strUser As String
strUser = DLookup("NamaUser", "tblUser", "[StatusLogin] = 'Active'")
Me.lblUser.Caption = strUser
  • Dibagian paling atas tambahkan Option Explicit dan Public strLevel as String dibawah Option Compare Database
  • lalu klik Save dan tutup jendela visual basic editor
Untuk event On Click pada tiap-tiap Command Button dalam frmUtama, code-codenya tergantung dari hak akses dari UserLevel masing-masing User contohnya :
Untuk level ADMINISTRATOR, maka berhak atas semua akses menu, sedangkan untuk level AUDIT hanya beberapa menu, dan level DATA ENTRY hanya bisa mengakses menu Laporan dan Input Data Harian.
Contoh Codenya:
Untuk menu yang hanya bisa diakses oleh level ADMINISTRATOR :
strLevel = DLookup("UserLevel", "tblUser", "[NamaUser] = '" & Me.lblUser.Caption & "'")
If strLevel <> "ADMINISTRATOR" Then
MsgBox "Anda TIDAK Berhak Mengakses Menu Ini", vbCritical
Else
MsgBox "Anda Berhak Mengakses Menu Ini"
End If
Untuk menu yang hanya bisa diakses oleh level ADMINISTRATOR dan AUDIT :
strLevel = DLookup("UserLevel", "tblUser", "[NamaUser] = '" & Me.lblUser.Caption & "'")
If strLevel = "ADMINISTRATOR" Or strLevel = "AUDIT" Then
MsgBox "Anda Berhak Mengakses Menu Ini"
Else
MsgBox "Anda TIDAK Berhak Mengakses Menu Ini", vbCritical
End If
Untuk menu yang hanya bisa diakses oleh level ADMINISTRATOR dan DATA ENTRY :
strLevel = DLookup("UserLevel", "tblUser", "[NamaUser] = '" & Me.lblUser.Caption & "'")
If strLevel = "ADMINISTRATOR" Or strLevel = "DATA ENTRY" Then
MsgBox "Anda Berhak Mengakses Menu Ini"
Else
MsgBox "Anda TIDAK Berhak Mengakses Menu Ini", vbCritical
End If
Untuk cmdKeluar gunakan code : 
Dim PesanKonfirm As String
PesanKonfirm = "Apakah anda yakin keluar dari aplikasi ini ?"
If MsgBox(PesanKonfirm, vbYesNo, "Konfirmasi") = vbYes Then
DoCmd.Quit
End If
Jika sudah selesai klik save dan tutup jendela design frmUtama

Klik dua kali frmLogin untuk mengetesnya
Form login ini bisa anda kembangkan lagi dengan berbagai trik-trik ataupun anda percantik lagi dengan mengkustomisasinya sedemikian rupa sesuai kebutuhan anda.

Semoga Berhasil...
Semoga bermanfaat...

Senin, 29 Agustus 2011

Form Login Sederhana 2

MEMBUAT FORM LOGIN DENGAN 4 FUNGSI (IF, IsNull, DCount, DLookup)
(Lanjutan)


Dalam postingan sebelumnya, penulis telah sampaikan langkah-langkah awal dalam pembuatan form login sederhana dengan hanya menggunakan 4 buah fungsi, silahkan lihat di artikel membuat form login sederhana.

Kali ini kita akan menambahkan Field StatusUser kedalam Tabel User, field ini nantinya akan menjadi acuan dalam form login untuk memeriksa apakah User yang sudah terdaftar masih aktif atau sudah tidak aktif.
Silahkan anda buka file Access Simple Form Login.mdb yang sudah saya upload sebelumnya, jika anda belum mendownloadnya silahkan download dari 4shared
Langkah langkahnya :
  • Tutup form login jika masih terbuka
  • Dalam jendela database klik Tables, lalu klik kanan tblUser dan pilih Design View
  • Dibawah Field Password, tambahkan Field baru dengan rincian :
Field Name = StatusUser
Data Type = Number
  • Lalu klik Toolbar Save, atau klik File > Save, atau bisa juga Ctrl+S, lalu tutup tblUser
  • Double click tblUser untuk mengedit data StatusUser
  • Lalu isikan di Field StatusUser dari masing-masing User dengan angka
(Angka 0 berarti User sudah tidak aktif, selain angka 0 maka Status User Aktif)
  • Setelah selesai tutup tblUser
  • Dalam jendela database klik Forms, lalu klik kanan frmLogin dan pilih Design View
  • Lalu klik View > Code, atau klik Toolbar Code seperti gambar dibawah ini :
Gambar Letak Toolbar Code
  • Atau bisa juga dengan klik kanan pada cmdOK lalu pilih Properties, dan pada tab Events klik tulisan Event Procedure pada On Click lalu klik [...] disebelah kanan tulisan Event Procedure. Anda akan dibawa kedalam jendela Visual Basic Editor.
  • Tempatkan Kursor anda diakhir variabel :
strPassword = DLookup("Password", "tblUser", "[NamaUser] = '" & txtUser & "'")
(Dalam code If DCount("NamaUser", "tblUser".........) lalu tekan Enter
  • Ketikkan Code berikut ini setelah anda menekan Enter
If DLookup("StatusUser", "tblUser", "[NamaUser] = '" & txtUser & "'") = 0 Then
MsgBox "Status User '" & txtUser & "' sudah tidak aktif, silahkan hubungi administrator.", vbExclamation
Me.txtUser.SetFocus
Else

Code anda akan menjadi seperti ini:
strPassword = DLookup("Password", "tblUser", "[NamaUser] = '" & txtUser & "'")
If DLookup("StatusUser", "tblUser", "[NamaUser] = '" & txtUser & "'") = 0 Then
MsgBox "Status User '" & txtUser & "' sudah tidak aktif, silahkan hubungi administrator.", vbExclamation
Me.txtUser.SetFocus
Else
       If txtPassword = strPassword Then
  • Lalu tempatkan kursor anda disebelah kanan / diakhir  tulisan End If diatas variabel :
Else
    MsgBox "Nama User tidak ada / belum terdaftar", vbInformation
    Me.txtUser.SetFocus
lalu tekan Enter
  • Ketikkan End If setelah anda menekan Enter
Code anda akan menjadi seperti ini :
End If 
End If ---> yang baru anda tambahkan
Else 
MsgBox "Nama User tidak ada / belum terdaftar", vbInformation 
Me.txtUser.SetFocus
  • Lalu klik Save dan tutup jendela Visual Basic Editor.
  • Jika jendela Properties dari cmdOK masih terbuka tutup dahulu, baru tutup frmLogin
sekarang coba jalankan frmLogin dengan klik dua kali pada frmLogin untuk mengetesnya.
NamaUser yang anda masukkan angka 0 kedalam Field StatusUser akan menjadi tidak aktif dan tidak bisa Login, dengan pemberitahuan Status User sudah tidak aktif, silahkan hubungi administrator.

Semoga bermanfaat....

Minggu, 21 Agustus 2011

Form Login Sederhana

MEMBUAT FORM LOGIN ACCESS 2003 DENGAN 4 FUNGSI
(IF, IsNull, DCount, DLookup)
Kali ini kita akan mencoba membuat sebuah form login, seperti dalam program atau aplikasi lainnya, namun kali ini kita akan membuat Form Login hanya dengan 4 buah fungsi, yaitu fungsi IF , DCount , DLookup , dan Fungsi IsNull. Jika anda belum memahami keempat fungsi ini, silahkan lihat di artikel Fungsi yang wajib dipahami Bag 1, Bag 2, Bag 3, Bag 4 dalam blog ini, hal ini untuk lebih memudahkan anda dalam membuat atau mengikuti artikel yang akan penulis sampaikan sekarang ini. Jika anda sudah paham, silahkan lanjutkan pada artikel ini.

Berikut adalah cara kerja atau alurnya :

Pertama :
Access akan mengecek apakah TextBox NamaUser kosong atau tidak, Jika kosong maka Access akan memberitahu user kalau dia belum memasukkan NamaUser dan Access akan mengembalikan kursor ke TextBox NamaUser. (Fungsi IsNull)

Kedua :
Access akan mengecek apakah TextBox Password kosong atau tidak, Jika kosong maka Access akan memberitahu user kalau dia belum memasukkan Password dan Access akan mengembalikan kursor ke TextBox Password. (Fungsi IsNull)

Ketiga :
Access akan mengecek apakah NamaUser yang dimasukkan oleh seorang user itu ada atau tidak didalam Table User, Jika NamaUser tidak ada maka Access akan menampilkan pesan Nama user tidak ada/belum terdaftar lalu mengembalikan kursor ke TextBox NamaUser. (Fungsi DCount)

Keempat :
Access akan mengecek password yang dimasukkan apakah sesuai dengan data yang ada dalam table User atau tidak, jika tidak sesuai maka access akan menampilkan pesan bahwa password yang dimasukkan salah lalu mengembalikan kursor ke TextBox Password. (Fungsi DLookup)

Jika user memasukkan NamaUser dan Password dengan benar maka Access akan menampilkan pesan bahwa user telah berhasil Login lalu access akan menutup Form Login.

Berikut adalah contoh pembuatannya :
1. Buat tabel dengan nama tblUser, field yang dibutuhkan :
 - NamaUser : Text
 - Password : Text
 - StatusUser : Number
Untuk field StatusUser, cara validasinya adalah: 0 untuk status user yang tidak aktif, selain 0 maka status user adalah aktif.
2. Isikan data-data yang diperlukan, dengan mengklik dua kali pada tabel tblUser yang baru saja dibuat.
3. Buat Form dengan nama frmLogin
4. Masukkan 2 buah Textbox dengan nama txtUser dan txtPassword
5. Masukkan juga 2 buah command button dengan nama cmdOK dan cmdCancel
6. Masukkan code berikut ini pada event OnClick cmdOK :
Dim strPassword As String
If IsNull(Me.txtUser) Then
MsgBox "Anda belum memasukkan Nama User anda !", vbExclamation
txtUser.SetFocus
ElseIf IsNull(Me.txtPassword) Then
    MsgBox "Anda belum memasukkan Password anda !", vbExclamation
    txtPassword.SetFocus
Else
    If DCount("NamaUser", "tblUser", "[NamaUser] = '" & txtUser & "'") > 0 Then
    strPassword = DLookup("Password", "tblUser", "[NamaUser] = '" & txtUser & "'")
        If DLookup("StatusUser", "tblUser", "[NamaUser] = '" & txtUser & "'") = 0 Then
        MsgBox "Status User '" & txtUser & "' sudah tidak aktif, silahkan hubungi administrator.", vbExclamation
        Me.txtUser.SetFocus
        Else
            If txtPassword = strPassword Then
            MsgBox "Selamat, anda berhasil Login", vbInformation
            DoCmd.OpenForm "frmUtama"
            DoCmd.Close acForm, "frmLogin"
            Else
            MsgBox "Password yang anda masukkan salah", vbCritical
            Me.txtPassword.SetFocus
            End If
        End If
    Else
    MsgBox "Nama User tidak ada / belum terdaftar", vbInformation
    Me.txtUser.SetFocus
    End If
End If
7. Masukkan code berikut ini pada event OnClick cmdCancel :
Dim PesanKonfirm As String
PesanKonfirm = "Apakah anda yakin tidak akan Login ?"
If MsgBox(PesanKonfirm, vbYesNo, "Konfirmasi") = vbYes Then
DoCmd.Close 'gunakan DoCmd.Quit untuk langsung menutup Microsoft Access
End If
8. Klik save.
9. Buat sebuah Form Utama dengan nama frmUtama.
10. Setelah selesai silahkan ditest form login yang telah dibuat.

Untuk file contoh Form login ini 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