widgets

Sabtu, 27 Juli 2013

Perbedaan Access 2007/2010 dengan Access 2002/XP/2003

Pada posting kali ini saya akan menyampaikan beberapa perbedaan antara Microsoft Access 2007/2010 dan Microsoft Access 2002/XP/2003.
Banyak sekali perubahan yang terjadi jika kita bandingkan antara Microsoft Access 2010/2007 dengan Microsoft Access 2003/2002/XP.

1. Ribbon vs Menubar & Toolbar

Perbedaan yang pertama adalah dari tampilan menu, kalau pada Access 2002 menggunakan menu bar dan toolbar, maka pada Access 2010 menu yang digunakan berupa Ribbon. Menu ribbon mulai diperkenalkan pada Access 2007. Karena perubahan inilah maka coding VBA yang merefer pada toolbar akan menghasilkan pesan error.


2. Navigation Pane

Perbedaan yang kedua adalah pada Access 2010/2007 dan pada hampir semua produk Office tersedia Navigation Pane. Navigation Pane adalah jendela yang bisa dimunculkan atau disembunyikan dan terletak di bagian kanan dari aplikasi.
Navigation Pane pada Access adalah tempat disimpannya object-object yang terdiri dari table, query, form, report dan modul. Sedangkan pada Access 2002/XP/2003 object-object tersebut bisa kita temukan pada Database Windows yang pada Access 2007/2010 sudah duhilangkan.
Navigation pane di Access 2010 juga dapat kita customize menjadi menu pilihan.




3. Model Tampilan Form

Pada Access 2007/2010 terdapat option untuk menampilkan form dalam bentuk Tab. Tampilan ini merupakan fitur baru yang memungkinkan kita untuk menswitch atau berpindah antara satu form ke form yang lain menggunakan fasilitas tab. Secara default seting option ini aktif dan dapat dirubah melalui pilihan Option pada tab File dari ribbon access. Pada jendela Access Options pilih Current Database, di sini ada pilihan Document Window Options seperti terlihat pada gambar berikut:


Jika pilihan Tabbed Document di set aktif, maka form akan tampil secara full dan form tidak bisa diminimize.

Gambar user membuka 3 buah form pada Access 2010


4. Extension File

Extension file database Access 2007/2010 adalah accdb sedangkan versi Access 2000/2002/XP/2003 adalah mdb.
Extension file Access yang telah disembunyikan kode programnya adalah accde sedangkan versi Access 2000/2002/XP/2003 adalah mde.



5. Form Access 2007/2010 vs Access 2002/XP/2003


Pada form di Access 2007/2010 kita bisa mem-view form dalam 3 mode yaitu : Form View, Layout view dan Design view, sedangkan pada form Access 2002/XP/2003 hanya ada mode design view dan form view.


  • Form View
    Menampilkan form pada mode untuk meng-entry data. Pada mode ini user hanya dapat meng-entry data dan tidak dapat mengubah tata letak atau design dari form.


  • Layout view
    Menampilkan form dalam mode layout yaitu untuk merubah layout dari form.


  • Design view
    Menampilkan form dalam mode design yaitu untuk merubah design dari form.


6. Tipe Data Field pada table

Pada Access 2002 hanya ada 10 pilihan untuk tipe data field pada tabel: Text, Memo, Number, Date/Time, Currency, AutoNumber, Yes/No, Ole Object, Hyperlink, Lookup Wizard.




Sedangkan pada Access 2010 ada 12, semua yang ada di Access 2002 ada di Access 2010 ditambah dengan Attachment dan Calculated.

Login Form

Karena aplikasi ini digunakan untuk multi user, maka setiap pengguna yang akan menggunakan aplikasi ini harus melalui proses autentikasi. Proses autentikasi dilakukan dengan cara mengisi user name dan password pada form login user.

Jika username dan password sesuai, maka program komputer akan melakukan proses inisialisasi variabel global untuk digunakan selama user mengoperasikan apliaksi komputer ini. Variabel-variabel ini terdiri dari:

  1. varUser
  2. varLevel
  3. varBagian
  4. varNIK
  5. varNamaSeksi
  6. varDepartemen
  7. varHeadquarter
  8. varLevelNo
Selain variabel di atas program juga akan mengumpulkan informasi modul atau form apa saja yang diizinkan untuk dibuka oleh user yang bersangkutan. Data daftar modul yang diizinkan untuk user yang login disimpan di variabel global dengan tipe data array yang diberi nama aModul.
Berikut adalah script program komputer pada even On Click pada tombol OK di form Login User.
Private Sub cmdOK_Click()
On Error GoTo Err_cmdOk

Dim oCnn As ADODB.Connection
Dim oRs As ADODB.Recordset
Dim strSql As String
Dim Ok As Boolean
Dim strHelo As String

strMsgLogin = ""
Me.txtPesan.Visible = True
Ok = False
Set oCnn = New ADODB.Connection
oCnn.Open strConn

strSql = "SELECT * FROM tUser WHERE uName='" & 
Me.[User Name] & "';"
Set oRs = New ADODB.Recordset
oRs.Open strSql, oCnn, adOpenKeyset, adLockOptimistic

If oRs.EOF = True Then
  Me.txtPesan.Visible = False
  MsgBox "Nama User tidak ada !", vbInformation
Else
 If oRs![Status Aktif] = 0 Then
  Me.txtPesan.Visible = False
  MsgBox "Status User saat ini tidak aktif, 
  silakan hubungi Administrator !", vbExclamation

 Else

  If oRs!uPwd = Me.[User Password] Then

    varUser = Me.[User Name]
    varLevel = oRs![Kode Level]
    varBagian = oRs![Kode Bagian]
    varNIK = oRs![Nomor Induk]
    varNamaSeksi = oRs![Nama Seksi]
    varDepartemen = oRs!Departemen
    varHeadquarter = oRs!Headquarter
    varLevelNo = oRs![Level No]
    Ok = True
    oRs![Last Login] = Now()
    oRs.Update
    Forms!bg!txtUser = varUser
    Me.txtPesan.Visible = False

  Else

    Me.txtPesan.Visible = False
    MsgBox "Password yang anda isi salah !", 
    vbExclamation
    Me.User_Password.SetFocus

  End If
 End If
End If

oRs.Close
Set oRs = Nothing
oCnn.Close
Set oCnn = Nothing

If Ok = True Then
 Load_Daftar_Modul varUser
 CurrentDb.Execute "UPDATE Data SET Nama='" & 
 varUser & "';"
 DoCmd.Close acForm, "Form Login"
End If

Exit_cmdOk:
Exit Sub

Err_cmdOk:
MsgBox "Error Number: " & Err.Number & 
vbCrLf & Err.Description, vbExclamation
Resume Exit_cmdOk

End Sub


Baris pertama adalah perintah untuk error handling, yaitu jika terjadi error maka program akan langsung menuju ke label Err_cmdOK.

Baris berikutnya adalah deklarasi variabel yang digunakan pada form ini.
User pengguna aplikasi harus terdaftar pada tabel tUser sebelum menggunakan aplikasi ini karena jika belum terdaftar maka pada saat login akan keluar pesan “Nama User tidak ada!”.

Proses autentikasi dilakukan dengan cara mencari user yang diisikan pada form login dengan data pada tabel tUser. Proses mencari data nama user ini memerlukan koneksi ke database kemudian membuka tabel tUser dan membandingkan user name dan password dengan data yang ada pada tabel tUser. Variabel strConn pada modul ini adalah konstanta global atau public yang dideklarasikan di tempat atau module lain.

Deklarasi constanta strConn adalah sebagai berikut:
Public Const strConn = _
"driver={SQL Server};server=serverdb;
uid=userdb;pwd=passworddb;database=namadb"

catatan:
serverdb,userdb,passworddb dan namadb dapat berubah disesuaikan dengan kebutuhan.

Mengapa menggunakan variabel atau konstanta yang bersifat global atau public? Konstanta atau variabel public strConn ini digunakan karena nanti pada penggunaannya variabel atau konstanta ini sering digunakan oleh aplikasi pada saat melakukan koneksi ke database sehingga tidak repor-repot lagi menulis ulang isi variablenya.

Berikut adalah script untuk mencari data user di tabel tUser:
strSql="SELECT * FROM tUser WHERE uName='" &
Me.[User Name] & "';"
Set oRs = New ADODB.Recordset
oRs.Open strSql, oCnn, adOpenKeyset, adLockOptimistic

Jika user berhasil, set variable-variabel berikut:
 
varUser = Me.[User Name]
varLevel = oRs![Kode Level]
varBagian = oRs![Kode Bagian]
varNIK = oRs![Nomor Induk]
varNamaSeksi = oRs![Nama Seksi]
varDepartemen = oRs!Departemen
varHeadquarter = oRs!Headquarter
varLevelNo = oRs![Level No]
Ok = True

Kemudian catat data waktu login user dengan perintah:
oRs![Last Login] = Now()
oRs.Update

Selanjutnya tampilkan nama user yang login pada form bg:
Forms!bg!txtUser = varUser

Script untuk menyimpan data daftar modul yang boleh diakses oleh user yang login tampak sebagai berikut:
If Ok = True Then
 Load_Daftar_Modul varUser
 CurrentDb.Execute "UPDATE Data SET Nama='" & 
 varUser & "';"
 DoCmd.Close acForm, "Form Login"
End If

Proses assign daftar modul ke variabl array aModul dilakukan pada subrutin atau pocedure Load_Daftar_Modul. Procedure Load_Daftar_Modul memerlukan variabel nama user yang datanya akan di simpan pada variable aModul sehingga pada script di atas procedure Load_Daftar_Modul dipanggil diikuti nam user yang sedang login.


Jika user menekan tombol Exit pada form login, aplikasi akan selesai. Berikut script on click pada tombol Exit

Private Sub cmdCancel_Click()
On Error Resume Next
 Call Keluar_Aplikasi
End Sub

Procedure Keluar_Aplikasi dipanggil untuk konfirmasi apakah user betul-betul akan keluar atau ridak. Script procedure-nya adalah sbb:
Sub Keluar_Aplikasi()
If MsgBox_
 ("Apakah anda yakin akan keluar dari aplikasi ini ?", 
 vbQuestion + vbYesNo) = vbYes Then
 Std_Toolbars
 DoCmd.Quit
End If
End Sub

Jika user keluar dari apliaksi maka prosedure Std_Toolbars akan dijalankan untuk mengembalikan standar toolbars pada Microsoft Access.

Mengirim Email dari Microsoft Access

Bagaimanakah cara mengirim email dari Microsoft Access?

Pada aplikasi Access yang anda buat mungkin anda perlu suatu proses mengirim email kepada pelanggan atau kepada rekan kerja anda.

Sebagai contoh misalnya pada aplikasi modul permohonan cuti, jika karyawan akan cuti harus mengisi form permohonan cuti karyawan. Pada modul ini disediakan proses mengirim email kepada atasan karyawan dari form entry data cuti karyawan.

Ada 3 cara untuk mengirim email dari Microsoft Access yaitu menggunakan perintah DoCmd.SendObject, dengan menggunakan object Outlook.Application, dan langsung menggunakan pemrograman Window Socket (Winsock).

Pada posting kali ini saya akan membahas proses pengiriman email menggunakan perintah DoCmd.SendObject.

Perintah Docmd.SendObject mempunyai 10 buah argument yaitu :

  1. ObjectType yaitu dapat berupa table, query, form, report, module atau Data Access Page yang akan dikirim
  2. ObjectName adalah nama object yang akan dikirim, nama form atau nama report
  3. OutputFormat adalah format object yang akan dikirim dapat berupa html, xls, txt, dan rtf
  4. To adalah alamat email tujuan yang akan dikirimi data
  5. Cc adalah alamat email tujuan yang akan dikirimi data pada Cc (copy)
  6. Bcc adalah alamat email tujuan yang akan dikirimi data pada Bcc
  7. Subject adalah subject dari email yang akan dikirim
  8. Message Text adalah tulisan atau pesan yang akan disertakan pada email
  9. Edit Message adalah untuk menentukan apakah email bisa diedit sebelum dikirim
  10. Template File adalah nama path dan nama file yang akan digunakan sebagai template html. Template file adalah file yang mengandung tag HTML
Berikut contoh form untuk mengirim data dari access menggunakan email menggunakan DoCmd.SendObject.

Pada contoh ini object data yang dikirim adalah tabel Anggota koperasi. Pada saat user mengklik tombol Email maka kita diberi pilihan untuk memilih format data yang akan dikirimkan melalui email. Setelah kita memilih format data maka aplikasi access langsung akan memanggil aplikasi Outlook. Pada aplikasi Outlook yang muncul pada field To, Cc, Bcc, Subject dan Message body akan berisi data sesuai dengan data yang anda masukkan pada form access. Sedangkan data object tabel akan ada sebagai attachment file dengan tipe file sesuai dengan yang kita pilih pada pilihan format.

Menampilkan Grafik atau Chart di Form Access

Untuk memberikan variasi informasi kepada user kita dapat menggunakan grafik atau chart sebagai alternatif media informasi. Dengan menggunakan grafik kita dapat lebih mudah membandingkan suatu data, misalnya kita ingin membandingkan data penjualan setiap karyawan. Pada artikel kali ini saya akan memberikan tip untuk menampilkan grafik pada form yang datanya diambil dari tabel access.
Sebagai contoh kita akan membuat grafik dari data penjualan sebagai berikut:
NAMA KARYAWAN JUMLAH PENJUALAN
Delvin 500.000
Erik 500.000
Marvel 450.000
Patrik 400.000
Sandy 750.000
Steven 600.000
Untuk menambahkan grafik ke dalam form yang kita buat caranya adalah sebagai berikut:
  1. Buka form pada design view
  2. Pilih menu Chart dari menu Insert
  3. Drag and drop mouse kita pada area form design view
  4. Akan muncul Chart wizard
  5. Pilih tabel atau query dari mana data grafik akan diambil, lalu klik tombol Next
  6. Pilih field-field dalam tabel atau query yang akan ditampilkan pada grafik, lalu klik tombol Next
  7. Pilih jenis grafik yang akan kita tampilkan pada form, lalu klik Next
  8. Klik lagi tombol Next
  9. Klik lagi tombol Next
  10. Klik tombol Finish
Tampilan grafik belum begitu bagus, untuk itu kita harus mengedit grafik yang baru saja kita buat. Caranya adalah masih pada mode design view klik kanan pada control grafik lalu pilih menu Chart Object, lalu pilih Edit. Nah pada mode ini anda dapat mengedit tampilan grafik, misalnya menambahkan data angka pada tiap nama karyawan, merubah font huruf label, merubah ukuran tampilan grafik dan lain-lain sesuai dengan kebutuhan anda.
Berikut contoh tampilan grafik pada form dari data penjualan di atas:


Menggunakan Combo Box untuk Mencari Data

DOWNLOAD CONTOH PROGRAM MENGGUNAKAN COMBO BOX UNTUK MENCARI DATA

Pada form data master sering kali kita perlu untuk mencari satu item data dengan cepat. Untuk keperluan ini kita dapat menggunakan combo box agar dalam pross pencarian data menjadi lebih mudah. Misalnya kita punya data master barang dan kita ingin mencari data barang berdasarkan Nama Barang.

Pada tips Access kali ini saya akan menjelaskan contoh form master data Barang menggunakan combo box untuk mencari data nama barang.

Berikut adalah contoh gambar form dimana kita dapat mencari data dalam form dengan menggunakan combo box:

Record Source dari form BARANG ini adalah tabel BARANG yang terdiri dari field-field KODE BARANG, NAMA BARANG, SATUAN, KRITERIA dan AKTIF. Semua field ini digunakan sebagai Control Source dari text box dan check box yang ada pada form BARANG ini. Sedangkan combo box CARI digunakan untuk mencari item nama barang yang ada pada tabel BARANG.
Jika user memilih salah satu nama barang dari combo box CARI, maka item Barang akan langsung ditampilkan pada form BARANG.
Berikut adalah script dari event procedure CARI_AfterUpdate

--------------------------------------------
Private Sub CARI_AfterUpdate()
' Find the record that matches the control.
Dim rs As Object

Set rs = Me.Recordset.Clone
rs.FindFirst "[KODE BARANG] = '" & Me![CARI] & "'"
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub
--------------------------------------------

Setiap kali user mengganti nama barang pada combo box cari, maka even AfterUpdate dari combox CARI akan dijalankan.
Walaupun pada combo box CARI yang ditampilkan adalah nama barang, namun sebenarnya data yang digunakan untuk mencari data adalah kode barang.
Sebagaimana terlihat pada script program di atas perintah untuk mencari data adalah rs.FindFirst "[KODE BARANG] = '" & Me![CARI] & "'" artinya cari kode barang yang datanya sama dengan data pada combo box CARI.

Row Source dari combo box CARI adalah Kode Barang dan Nama Barang dari tabel BARANG, dengan properti Bound Column adalah 1 sedangakan Column Count adalah 2.

Untuk lebih jelasnya silakan anda download contoh programnya di sini

Memfilter Data

Data master barang pada form Master Barang dapat di filter berdasarkan kriteria/jenis barang yang terbagi ke dalam 4 kategori yaitu:
  1. Raw Material (RM) atau Bahan baku
  2. Packing Material (PM) atau Bahan pengemas
  3. Semi Finished Goods (SFG) atau Barang setengah jadi
  4. Finished Goods (FG) atau Barang jadi
Pada form Master Barang terdapat sebuah combo box kriteria yang berisi pilihan 4 jenis barang tersebut di atas.

Jika kita pilih salah satu jenis kriteria barang, maka data barang yang ditampilkan akan di filter berdasarkan barang yang dipilih.

Script program computer even after update pada kontrol combo box Kriteria jika user memilih data kriteria pada combo box adalah:
Private Sub Kriteria_AfterUpdate()
Dim strSql As String
strSql = "SELECT * FROM Barang WHERE Kriteria='" & Me.Kriteria & "';"
If IsNull(Me.Kriteria) = True Then strSql = "Barang"
Me.[Master Barang Subform].Form.RecordSource = strSql
Me.[Master Barang Subform].Requery
End Sub

Keterangan script program:

Script program di atas adalah script program even after update pada combo box kriteria.

- Jika user memilih salah satu data kriteria pada combo box, misalnya Packing Material atau PM, maka variabel strSql akan berisi data "SELECT * FROM Barang WHERE Kriteria='PM';", tetapi jika combo box Kriteria dikosongkan, maka variabel strSql akan berisi ‘Barang’ yang merupakan tabel Barang

- Variabel strSql ini kemudian diisikan sebagai data RecordSource dari [Master Barang Subform] dengan perintah sebagai berikut:
Me.[Master Barang Subform].Form.RecordSource = strSql

- Data [Master Barang Subform] direfresh dengan perintah :
Me.[Master Barang Subform].Requery

Agar combo box Kriteria dapat menampilkan data kriteria barang, maka kita harus menentukan Row Source dari combo box.

Karena data kriteria yang akan ditampilkan diambil dari tabel kriteria, maka set property kriteria sbb:
- Row Source Type: Table/Query
- Row Source: Kriteria


Tabel Kriteria terdiri dari field Kriteria dan Keterangan. Pada combo box Kriteria kita akan menampilkan Keterangan sedangkan data yang digunakan untuk memfilter adalah kriteria. Untuk itu kita harus men-set property combo box kriteria lainnya sbb:
- Column count : 2
- Column widht: 0”

Hal ini menunjukkan ada 2 kolom pada combo box dengan lebar kolom pertama adalah 0”. Mengapa kolom pertama 0”? karena dengan seting ini kolom kriteria tidak akan dirampilkan dan combo box kriteria hanya akan menampilkan data Keterangan.

Membuat Form Login Microsoft Access


Aplikasi yang digunakan secara multi user harus menggunakan autentikasi sebelum user dapat menggunakan aplikasi. Salah satu sistem autentikasi adalah dengan mengisi user name dan passowrd sebelum user dapat menggunakan aplikasi.

Sekarang kita akan membuat form login dalam Microsoft Access sebagai form untuk autentikasi. Berikut tahap-tahap pembuatan form login user.

A. Membuat tabel untuk daftar user yang akan menggunakan aplikasi
Nama tabel untuk menyimpan data user adalah TUSER dengan field-field:

  1. uName untuk menyimpan data nama user
  2. uPwd untuk menyimpan data password
  3. Kode Bagian untuk menyimpan data bagian user, misalnya bagian Produksi atau Gudang
  4. Nomor Induk yaitu nomor induk karyawan/user pengguna aplikasi
  5. Level No yaitu untuk menyimpan data nomor level user
  6. Status Aktif untuk menyimpan data apakah user aktif atau tidak aktif, jika status tidak aktif maka user tidak dapat login ke aplikasi
  7. Last Login adalah field untuk menyimpan/merekam data tanggal dan waktu login user terakhir kali
  8. Desktop App adalah field untuk mengizinkan user menggunakan aplikasi desktop
  9. Web App adalah field untuk mengizinkan user menggunakan aplikasi web


B. Membuat tabel BAGIAN dan DEPARTEMEN
Tabel BAGIAN dan DEPARTEMEN digunakan untuk menyimpan data Departemen dan Bagian.
Karena user yang menggunakana aplikasi ini berasal dari berbagai Departemen dan Bagian, maka tabel ini mutlak diperlukan. Tabel TUSER direlasikan dengan tabel BAGIAN dan tabel BAGIAN direlasikan ke tabel DEPARTEMEN.

C. Membuat tabel DATA
Tabel DATA terdiri dari satu buah field dengan nama field NAMA untuk menyimpan data nama user yang terakhir login ke aplikasi. Nama user ini akan ditampilkan pada text box user name pada form Login User.

D. Membuat Form Login
Berikut adalah gambar form login yang akan digunakan oleh user untuk mengisi user name dan password:



Pada form ini ada:
  • Dua text box User Name dan Password
  • Dua buah tombol Exit (nama tombol cmdCancel) dan Ok (nama tombol cmdOK)

Untuk text box Password kita harus men-set properi Input Mask menjadi Password agar karakter yang kita isikan pada text box password disembunyikan dan diganti dengan karakter *.

Algoritma program proses autentikasi adalah sebagai berikut:
  • User mengisi Nama User dan Password
  • User meng-klik tombol Ok untuk menjalankan even onclick pada tombol cmdOK
  • Buka tabel TUSER dan periksa nama user yang dientry oleh user apakah ada dalam tabel TUSER
  • Jika nama user tidak ada, maka tampilkan pesan “Nama User tidak ada !”
  • Jika nama user ada, maka cek status user aktif. Jika user tidak aktif tampilkan pesan “Status User saat ini tidak aktif, silakan hubungi Administrator !”
  • Jika status user aktif, maka cek apakah password yang diisikan oleh user sesuai dengan password dalam tabel TUSER
  • Jika password yang diisikan oleh user salah maka tampilkan pesan "Password yang anda isi salah !" dan aplikasi tidak dapat digunakan hingga password yang diisi benar
  • Jika password benar maka lanjutkan proses inisialisasi variabel glogal untuk keperluan dalam aplikasi. Update data Last Login pada tabel TUSER oleh tanggal sistem kapan user tersebut login
  • Tutup tabel TUSER
  • Tutup form Form Login
  • User sudah masuk ke aplikasi dan dapat menggunakan aplikasi
Agar Form Login selalu muncul setiap aplikasi file mdb (file Access) dibuka, maka Form Login ini harus di set sebagai Start up form pada file aplikasi ini.

Contoh file Access dengan form login dapat di download di sini. Selamat mencoba.
Tunggu tips-tips Microsoft Access selanjutnya di web site ini.

Fungsi Terbilang di Microsft Access

Fungsi terbilang adalah untuk menampilkan nilai angka pada bentuk kalimat. Pada setiap kwitansi untuk transaksi jual beli barang atau jasa biasanya kita harus menulisakan angka atau nilai transaksi dalam bentuk kalimat, misalnya “dua juta lima ratus rupiah” untuk angka Rp 2.500.000,-

Fungsi terbilang harus kita buat sendiri karena Microsoft Access tidak menyediakan fungsi ini.

Pada contoh fungsi terbilang yang dibuat di sini, fungsi akan menerima 2 buah parameter yaitu parameter angka yang akan dijadikan kelimat terbilang dan mata uang sebagai parameter kedua.

Parameter kedua berupa mata uang sebagai berikut:

  • IDR : rupiah
  • USD : dolar
  • JPY : yen
  • SGD : dolar singapura
  • GBP : poundsterling
  • EUR : euro

Cara memanggil fungsi terbilang di sini adalah:
txtVariabel = Terbilang(varAngka,varMataUang)

Script Fungsi Terbilang adalah sebagai berikut:
Public Function Terbilang(ByVal MyNumber, ByVal vMataUang)

Dim MataUang As String, cMataUang As String
Dim Rupiah, sen, Temp
Dim DecimalPlace, Count
ReDim Place(9) As String
Dim a As Long

cMataUang = vMataUang
If cMataUang = "IDR" Then
   MataUang = " rupiah"
ElseIf cMataUang = "USD" Then
   MataUang = " dolar"
ElseIf cMataUang = "JPY" Then
   MataUang = " yen"
ElseIf cMataUang = "SGD" Then
   MataUang = " dolar singapura"
ElseIf cMataUang = "GBP" Then
   MataUang = " poundsterling"
ElseIf cMataUang = "EUR" Then
   MataUang = " euro"
Else
   MataUang = " "
End If

Place(2) = " ribu"
Place(3) = " juta"
Place(4) = " milyar"
Place(5) = " trilyun"
' String representation of amount.
MyNumber = Trim(Str(MyNumber))
' Position of decimal place 0 if none.
DecimalPlace = InStr(MyNumber, ".")
' Convert sen and set MyNumber to dollar amount.
If DecimalPlace > 0 Then
   sen = GetTens(Left(Mid(MyNumber, DecimalPlace + 1) & "00", 2))
   MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If
Count = 1
Do While MyNumber <> ""
   Temp = GetHundreds(Right(MyNumber, 3))
   If Temp <> "" Then Rupiah = Temp & Place(Count) & Rupiah
   If Left(Trim(Rupiah), 9) = "Satu Ribu" Then
       Rupiah = " Seribu" & Mid(Rupiah, 11)
   End If
   If Len(MyNumber) > 3 Then
       MyNumber = Left(MyNumber, Len(MyNumber) - 3)
   Else
       MyNumber = ""
   End If
   Count = Count + 1
Loop
Select Case Rupiah
   Case ""
       Rupiah = "nol"
   Case Else
       Rupiah = Rupiah
End Select
Select Case sen
   Case ""
       sen = "" ' dan nol sen"
   Case Else
       sen = " koma" & sen
End Select
Terbilang = Trim(Rupiah & sen & MataUang)

End Function

Fungsi Terbilang di sini memanggil fungsi lain yaitu fungsi GetHundreds(), GetDigit() dan GetTens().

Pada contoh program yang dapat didownload di sini akan didemonstrasikan penggunaan fungsi terbilang ini pada sebuah form. Pada form ini ada text box untuk mengisi angka yang akan ditampilkan kalimat terbilangnya, satu buah combo box pilihan jenis mata uang, tombol untuk menjalankan atau memanggil fungsi terbilang dan menampilkan hasil dari fungsi terbilang pada text box terbilang.

DOWNLOAD CONTOH PROGRAM FUNGSI TERBILANG

Salam
Selamat mencoba

Menu Pilihan Menggunakan Treeview pada Microsoft Access


Sebagi alternatif untuk membuat menu pilhan, kita dapat menggunakan Activex Control Treeview. Treeview merupakan Activex Control yang dapat kita tambahkan pada aplikasi Microsoft Access yang kita bangun.
Untuk membuat menu pilihan menggunakan Treeview dapat dilakukan dengan langkah-langkah berikut:

MEMBUAT TABEL UNTUK KOMPONEN MENU PILIHAN
Buat dua buah tabel untuk menyimpan data menu.

1. Tabel menu0 dengan struktul tabel
  • ID type field: Number(Integer)
  • Menu_Item type field: Text(50)
  • Tipe type field: Text(20)
Isi data tabel menu0 adalah sebagai berikut:


2. Tabel menu1
  • Menu_ID type field: Number(Integer)
  • Menu_Item type field: Text(50)
  • Object_Name type field: Text(20)
  • Urutan type field: Number(Integer)
  • Tipe type field: Text(20)
Isi data tabel menu1 adalah sebagai berikut:


MEMBUAT FORM MENU DENGAN KOMPONEN TREEVIEW

Menambahkan komponen/object Treeview pada form Microsoft Access dilakukan dengan cara berikut:
  1. Buat form pada baru dengan mode design view
  2. Klik more controls icon (gambar palu dan kunci pas) pada toolbar toolbox
  3. Cari dan pilih (klick) pada Microsoft TreeView Control, version 6.0
  4. Klik pada area form design view, akan muncul object Treeview pada form baru

  5. Atur tinggi dan lebar object treeview sesuai kebutuhan
  6. Beri nama object treeview ini dengan nama TV
Isikan kode program berikut pda event form onlaod
---------------------------------------------------------------------------
Private Sub Form_Load()
Dim strSql1 As String
Dim strSql2 As String
Dim i As Integer
i = 0

Set rsLevel1 = New ADODB.Recordset
Set rsLevel2 = New ADODB.Recordset

rsLevel1.CursorLocation = adUseClient
rsLevel2.CursorLocation = adUseClient

strSql1 = "SELECT * FROM Menu0 ORDER BY [ID];"
rsLevel1.Open strSql1, CurrentProject.Connection, adOpenKeyset, adLockOptimistic

With TV

 .Nodes.Add , , "Root", UCase("MENU PILIHAN")
 .Nodes("Root").ForeColor = vbBlue
 .Nodes("Root").Bold = True
 i = i + 1
 arrayMenu(i, 1) = UCase("MENU PILIHAN")
 arrayMenu(i, 2) = "-"
 While Not rsLevel1.EOF

  keyLevel1 = "G" & Trim(rsLevel1.Fields("Menu_Item"))
  Set nd = .Nodes.Add("Root", tvwChild, keyLevel1, UCase(Trim(rsLevel1.Fields("Menu_Item"))))
  nd.ForeColor = vbBlack
  nd.Bold = True
  nd.EnsureVisible
  i = i + 1
  arrayMenu(i, 1) = rsLevel1.Fields("Menu_Item")
  arrayMenu(i, 2) = rsLevel1.Fields("Tipe")

  'Tampilkan  Level 2
  strSql2 = "SELECT * FROM Menu_Qry WHERE [Menu_ID] =" & _
  Trim(rsLevel1.Fields("ID")) & " ORDER BY [Urutan]"

  rsLevel2.Open strSql2, _
      CurrentProject.Connection, adOpenKeyset, adLockOptimistic

   While Not rsLevel2.EOF

   keyLevel2 = "L" & Trim(rsLevel2.Fields("myKey"))
   Set nd = .Nodes.Add(keyLevel1, tvwChild, keyLevel2, UCase(Trim(rsLevel2.Fields("Menu_Item"))))
   nd.ForeColor = vbBlack
   nd.Bold = True
   i = i + 1
   arrayMenu(i, 1) = rsLevel2.Fields("Menu_Item")
   arrayMenu(i, 2) = rsLevel2.Fields("Tipe")

   rsLevel2.MoveNext

  Wend

 rsLevel2.Close
 rsLevel1.MoveNext

Wend

End With

End Sub

---------------------------------------------------------------------------

Tambahkan juga kode program berikut:

---------------------------------------------------------------------------
Private Sub TV_dblClick()

If arrayMenu(TV.SelectedItem.Index, 2) <> "-" Then
 If arrayMenu(TV.SelectedItem.Index, 2) = "Form" Then
  DoCmd.OpenForm arrayMenu(TV.SelectedItem.Index, 1)
 ElseIf arrayMenu(TV.SelectedItem.Index, 2) = "Query" Then
  DoCmd.OpenQuery arrayMenu(TV.SelectedItem.Index, 1)
 ElseIf arrayMenu(TV.SelectedItem.Index, 2) = "Report" Then
  DoCmd.OpenReport arrayMenu(TV.SelectedItem.Index, 1), acViewPreview
 ElseIf arrayMenu(TV.SelectedItem.Index, 2) = "Exit" Then
  Keluar_Aplikasi
 End If
End If

End Sub

Sub Keluar_Aplikasi()
If MsgBox("Apakah anda yakin akan keluar dari aplikasi ini ?", vbQuestion + vbYesNo) = vbYes Then
DoCmd.Quit
End If
End Sub

---------------------------------------------------------------------------
Contoh tampilan menu pilihan dengan menggunakan Treewiew

Keterangan:
Untuk membuka sub menu klik pada tanda + dari menu utama
Untuk mengeksekusi menu double click pada sub menu

Operasi Tambah Kurang Data Tanggal di Access


Dalam aplikasi pengolahan data kita sering mengelola atau memanipulasi data tanggal, karena data tanggal merupakan salah satu data yang sangat penting dalam pengolahan data transaksi dalam suatu proses bisnis.

Misalnya dalam aplikasi inventory control kapan atau tanggal berapa suatu barang menambah stok atau mengurangi stok, dalam aplikasi pembelian kapan suatu barang dikirim dari suplier, dalam aplikasi account payabel kapan kita harus membayar utang kepada suplier dan lain sebagainya.

Pada posting kali ini penulis akan memberikan contoh pengolahan data tanggal pada Microsoft Access. Pengolahan data tanggal di posting ini meliputi operasi penambahan dan pengurangan.

Pada tabel Microsoft Access field data untuk menyimpan data waktu baik jam maupun tanggal adalah dengan type data Date/Time. Sedangkan pada modul, type data tanggal dideklarasikan sebagai Date.

Tipe data tanggal pada tabel MS-Access:


Berikut contoh deklarasi data tanggal pada modul:

Dim varTanggal as Date

Pada Microsoft Access kita dapat melakukan operasi penambahan dan pengurangan tangal seperti kita melakukan operasi penambahan dan pengurangan pada data numeric.

Misalnya kita mempunyai Text Box dengan nama Tanggal yang di bound pada field Tanggal dari suatu tabel dengan type data Date/Time.

Maka untuk melakukan operasi penambahan atau pengurangan bisa dilakukan dengan script kode program berikut:

Me.[TANGGAL] = Me.[TANGGAL] + 1

dan

Me.[TANGGAL] = Me.[TANGGAL] - 1


Berikut contoh form dengan script proses tambah dan kurang data tanngal:


Jika user mengklik tombol + maka data tanggal akan bertambah satu dan jika user mengklik tombol - maka data tanggal akan berkurang satu.

Mengisi Data pada Tabel Microsoft Access

Bagaimanakah cara mengisi data pada tabel Microsoft Access ?

Kita dapat mengisi data langsung pada tabel Microsoft Access dengan cara membuka tabel data pada Microsfot Access. Dari tabel data yang telah kita buka kita dapat mengentry atau mengetikkan data seperti pada contoh gambar berikut:



Apakah fungsi Primary Key pada Microsoft Access ?

Fungsi Primary key adalah sebagai field kunci untuk mencegah duplikasi data atau data ganda. Microsoft Access akan menolak dua data yang sama pada field primary key.

Sebagai contoh kita mengisikan data NIK yang sama (01.02 ) untuk dua orang yang berbeda (Frank Lampard dan Michael Owen), maka Microsoft Access akan menampilkan pesan kesalahan (error message) seperti gambar berikut:


“The changes you requested to the tabel were not successful because they would create duplicate values in the index, primary key, or relationship. Change the data in the field or fields that contain duplicate data, remove the index, or redefine the index to permite duplicate entries and try again”

Pesan error ini menunjukkan kita tidak dizinkan mengisi data NIK yang sama untuk 2 baris data yang berbeda.

Jika kita memerlukan relasi data antar tabel, maka primary key akan diperlukan sebagai penghubung antara 2 tabel.

Contoh Kasus Input Data NPM

Mengisi data Kode Jurusan dan Kode Fakultas secara otomatis setelah user mengisi data Nomor Pokok Mahasiswa (NPM).
Tabel-data yang digunakan:

Tabel MAHASISWA : NPM, NAMA, KODE_FAKULTAS, KODE_JURUSAN
Tabel JURUSAN : KODE_JURUSAN, JURUSAN, KODE_FAKULTAS, KODE_JENJANG
Tabel FAKULTAS : KODE_FAKULTAS, FAKULTAS
Tabel JENJANG : KODE_JENJANG, JENJANG
Contoh Input:
NPM = 0911011001
Keterangan digit:
1 s.d 2 = Tahun Masuk (09)
3 = Kode Jenjang (1=S1)
4 = Kode Fakultas (1=Ekonomi)
5 sd. 7 = Kode Jurusan (011=Manajemen)
8 sd. 10= Nomor urut mahasiswa pada jurusan tersebut.
Pada saat user mengisi NPM, Jurusan dan Fakultas akan terisi secara otomatis, dengan merujuk ke tabel Jurusan dan Fakultas.
Berikut adalah gambar relasi antar tabel dari database:

Untuk keperluan input data seperti contoh kasus di atas kita membuat form Mahasiswa dengan 4 buah text box yaitu NPM, NAMA, KODE_FAKULTAS dan KODE_JURUSAN. Berikut adalah gambar form MAHASISWA:

Pada form ini kode fakultas dan kode jurusan akan terisi secara otomatis setelah NPM diisi. Untuk menjalankan proses ini maka diperlukan script sbb:
Private Sub NPM_AfterUpdate()
Dim kd_jurusan As String, kd_fakultas As String
kd_jurusan = Left(Right(Me.NPM.Value, 6), 3)
kd_fakultas = Left(Right(Me.NPM.Value, 7), 1)
Me.KODE_FAKULTAS.Value = kd_fakultas
Me.KODE_JURUSAN.Value = kd_jurusan
End Sub
Data variabel kd_jurusan dan kd_fakultas diambil dari data NPM yang dientry oleh user. Sedangkan untuk data KODE_JENJANG, data diambil dari tabel JURUSAN melalui relasi tabel antara tabel MAHASISWA dengan tabel JURUSAN.

Spesifikasi Microsoft Access

Spesifikasi Microsoft Access
  • Database Access
AtributMaksimal
Microsoft Access database (.mdb) Ukuran file2 gigabytes minus the space needed for system objects.
Jumlah objek dalam Database32,768
Modules (Termasuk forms dan reports dengan HasModule property diset True)1,000
Jumlah karakter dalam sebuah nama object64
Jumlah karakter pada password14
Jumlah karakter pada nama user atau nama grup20
Jumlah concurrent user255
  • Table
AtributMaksimal
Jumlah karakter pada nama table 64
Jumlah karakter pada nama field64
Jumlah field pada table255
Jumlah table dibuka2048; Jumlah mungkin lebih kecil sebab table yang dibuka secara internal oleh Microsoft Access
Ukuran table2 gigabyte dikurangi ukuran yang diperlukan oleh object system
Jumlah karakter pada Text field255
Jumlah karakter pada Memo field65,535 ketika memasukkan data melalui user interface;
1 gigabyte karakter ketika memasukkan data programmatically
Ukuran OLE Object field1 gigabyte
Jumlah indexes pada table32
Jumlah fields padan index10
Jumlah karakter pada validation message255
Jumlah karakter pada validation rule2,048
Jumlah karakter pada table atau field description255
Jumlah karakter pada record (tidak termasuk Memo dan OLE Object fields)2,000
Jumlah karakter pada field property setting255
  • Query
AtributMaksimal
Jumlah enforced relationships32 per table dikurangi Jumlah indexes pada table untuk fields atau kombinasi fields yang tidak terlibat pada relationships
Jumlah tables pada sebuah query32
Jumlah fields dalam recordset255
Ukuran Recordset1 gigabyte
Limit sort255 karakter dalam satu atau lebih field
Jumlah levels pada nested queries50
Jumlah karakter dalam cell pada design query grid1,024
Jumlah karakter untuk parameter dalam parameter query255
Jumlah AND dalam WHERE atau HAVING clause99
Jumlah karakter dalam SQL statementmendekati 64,000
  • Form dan Report
AtributMaksimal
Jumlah karakter pada label2,048
Jumlah karakter pada text box65,535
Form atau report width22 in. (55.87 cm)
Section height22 in. (55.87 cm)
Tinggi semua sections ditambah section headers (pada Design view)200 in. (508 cm)
Jumlah level dari forms atau reports bertingkat7
Jumlah fields atau expressions yang dapat disort pada group di report10
Jumlah headers dan footers pada report1 report header/footer; 1 page header/footer; 10 group headers/footers
Jumlah halaman printed pada report65,536
Jumlah controls dan sections yang dapat anda tambah pada form or report754
Jumlah karakter dalam SQL statement pada Recordsource atau Rowsource property dari form, report, atau control (baik .mdb maupun .adp) 32,750
  • Macro
AtributMaksimal
Jumlah actions pada macro999
Jumlah karakter pada condition255
Jumlah karakter pada comment255
Jumlah karakter padan action argument255

Pindah Record Menggunakan Tombol Panah Bawah dan Atas

Pada form dengan mode default view Datasheet, tombol panah ke bawah (down) akan memindahkan record aktif ke record berikutnya (next record) dan tombol panah atas akan memindahkan record aktif ke data sebelumnya (previous record).

Berbeda dengan form default view Continues Form maka secara default tombol panah ke bawah (down) tidak akan memindahkan record aktif ke record berikutnya. Juga tombol panah ke atas (up) tidak akan memindahkan record aktif ke record sebelumnya.

Jika anda ingin mem-fungsikan tombol panah atas dan panah bawah untuk memindahkan record pada form dengan mode Continues Form, maka anda harus menambahkan script Visual Basic khusus untuk melakukan hal ini.

Buat form baru dengan default view Continues Form dan set record source ke tabel data pada file Access anda.


Aktifkan event On Key Down pada form properties dan ketikkan code program berikut ini:

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
On Error GoTo ErrHandler

Select Case KeyCode
Case vbKeyDown
  DoCmd.GoToRecord Record:=acNext
  KeyCode = 0
Case vbKeyUp
  DoCmd.GoToRecord Record:=acPrevious
  KeyCode = 0
Case Else
  ' Do nothing
End Select

Keluar:
Exit Sub

ErrHandler:
If Err.Number = 2105 Then
  KeyCode = 0
  DoCmd.Beep
Else
  MsgBox Err.Description
End If
Resume Keluar

End Sub

Pada script program ini diatur jika user menekan tombol panah bawah atau pada code Visual Basic menggunakan konstanta vbKeyDown dan tombol panah atas atau vbKeyUp, maka script yang dijalankan adalah
DoCmd.GoToRecord Record:=acNext

'dan

DoCmd.GoToRecord Record:=acPrevious
Jangan lupa anda juga harus men-set Key Preview pada form Properties menjadi Yes.

Check Box di Access

Check Box pada Access adalah object untuk pilihan yang terdiri dari 2 pilihan yaitu true/yes atau false/no. Nilai false adalah sama dengan 0 (nol) sedangkan nilai true adalah selain dari 0. Jika pada tabel anda mempunyai field dengan data pilihan true atau false maka anda dapat menggunakan control check box pada form yang anda buat.

Contoh jenis field data yang cocok untuk menggunakan field ini antara lain misalnya suatu field yang menunjukkan suatu data aktif atau tidak.

Untuk menentukan suatu nama barang dalam tabel barang dalam kondisi aktif atau tidak anda dapat menambahkan field aktif dengan tipe data integer atau type data Yes/No. Barang yang masih digunakan diisi data -1 atau Yes sedangkan barang yang sudah tidak digunakan diisi data 0 atau No pada field aktif.

Pada form transaksi barang kita dapat memfilter barang yang masih digunakan dengan perintah query Select Nama_Barang from Barang Where aktif=-1; atau Select Nama_Barang from Barang Where aktif=Yes; atau Select Nama_Barang from Barang Where aktif=True; sehingga user tidak akan dapat memilih barang-barang yang sudah tidak digunakan.

Jumat, 26 Juli 2013

Property Locked di Form Access

Property Locked dari suatu object secara default adalah No. Property Locked berfungsi untuk mengunci suatu object agar data pada object tidak dapat diubah oleh user tetapi masih dapat di lakukan operasi SetFocus.

Untuk merubah property Locked dari object di form Access anda harus membuka form pada design view lalu buka property object yang akan diset propertynya lalu pilih tab Data kemudian pilih No atau Yes pada pilihan property Locked.


Property Locked dapat dirubah melalui kode program visual basic dengan cara meng-assign nilai bolean ke property Locked dari object tersebut. Berikut contoh program untuk menset property locked dari object Field2.
Private Sub Set_Click()
 If Me.Field2.Locked = False Then
     Me.Field2.Locked = True
 Else
     Me.Field2.Locked = False
 End If
End Sub
Keterangan:
Jika property Locked Field2 bernilai False (No) maka property diubah menjadi True (Yes) dan sebaliknya jika property Locked Field2 bernilai True (Yes) maka property diubah menjadi False (No).

Daftar Tipe Data

Tabel berikut menunjukkan tipe data, termasuk ukuran dan range.
Tipe DataUkuranRange
Byte1 byte0 sampai 255
Boolean2 bytesTrue atau False
Integer2 bytes-32,768 sampai 32,767
Long
(long integer)
4 bytes-2,147,483,648 sampai 2,147,483,647
Single
(single-precision floating-point)
4 bytes-3.402823E38 sampai -1.401298E-45 untuk nilai negarif; 1.401298E-45 sampai 3.402823E38 untuk nilai positif
Double
(double-precision floating-point)
8 bytes-1.79769313486231E308 sampai
-4.94065645841247E-324 untuk nilai negarif; 4.94065645841247E-324 sampai 1.79769313486232E308 untuk nilai positif
Currency
(scaled integer)
8 bytes-922,337,203,685,477.5808 sampai 922,337,203,685,477.5807
Decimal14 bytes+/-79,228,162,514,264,337,593,543,950,335 tanpa nilai desimal;
+/-7.9228162514264337593543950335 dengan 28 tempat disebelah kanan desimal; nilai terkecil adalah
+/-0.0000000000000000000000000001
Date8 bytes1 Januari 100 sampai 31 Desember 9999
Object4 bytesReferensi Object
String
(variable-length)
10 bytes + panjang string0 sampai dengan 2 milyar
String
(fixed-length)
Panjang String1 sampai dengan 65,400
Variant
(with numbers)
16 bytesNilai numerik sampai range dari Double
Variant
(with characters)
22 bytes + panjang stringRange sama dengan variable-length String
User-defined
(using Type)
Jumlah yang diperlukan oleh elemenRange setiap elemen sama dengan range tipe data-nya.
Catatan Array dari tipe data apapun membutuhkan 20 bytes memory ditambah 4 bytes untuk tiap dimensi array ditambah nilai bytes yang ditempati data itu sendiri. Memory yang ditempati oleh data dapat dihitung dengan mengalikan jumlah elemen data dengan ukuran tiap elemen. Misalnya, data dalam array satu dimensi mengandung 4 data element tipe Integer menempati 8 bytes. 8 bytes diperlukan untukdata ditambah 24 bytes sehingga total memori yang diperlukan adalah 32 bytes.
Variant yang terkandung dalam array memerlukan 12 bytes lebih besar dari array sendiri.
Catatan Gunakan function StrConv untuk mengkonversi satu tipe data string ke data lain.

Menghitung Jam Kerja Lembur Karyawan

Jam lembur adalah jam kerja yang melebihi jam kerja normal. Menurut peraturan ketenagakerjaan, jam kerja normal adalah 40 jam dalam seminggu. Jadi jika karyawan bekerja 8 jam dalam sehari, maka jumlah hari kerja adalah 5 hari dalam seminggu. Jika melebihi jam kerja tersebut maka karyawan berhak mendapatkan gaji tambahan dari kerja lembur.

Biasanya perhitungan jam kerja lembur berbeda dengan jam kerja normal. Sebagai contoh kasus adalah jika karyawan bekerja lembur pada hari kerja maka perhitungan nilai lemburnya adalah 2 kali jam kerja normal dan jika bekerja lembur pada hari libur maka perhitungan nilai lemburnya adalah 3 kali jam kerja normal. Untuk menghitung jumlah uang lembur dilakukan dengan cara sebagai berikut:

  1. Hitung jumlah nilai lembur selama satu bulan
  2. Kalikan nilai lembur dengan gaji karyawan perjam
Berapa gaji karyawan perjam? gaji karyawan perjam adalah gaji pokok karyawan dalam sebulan dibagi jumlah jam kerja normal karyawan dalam sebulan.

Misalnya gaji pokok karyawan sebulan adalah Rp 2.500.000 dan jam kerja normal satu bulan adalah 176 jam (22 hari x 8 jam), maka gaji perjam adalah 2.500.000/172 = Rp 14.204,5

Untuk menyimpan data lembur harus dibuat tabel lembur dengan struktur tabel sebagai berikut:
  1. NIP (Text) , Nomor Induk Pegawai
  2. Kode_Lembur (Text), Kode lembur berisi L jika lembur pada hari libur, K jika lembur pada hari kerja
  3. Tanggal (Date/Time)
  4. Jam_Mulai (Date/Time)
  5. Jam_Selesai (Date/Time)
Selanjutnya buat query untuk menghitung nilai lembur. Contoh sintak query untuk menghitung lembur adalah sebagai berikut:

SELECT LEMBUR.NIP, LEMBUR.KODE_LEMBUR, LEMBUR.TANGGAL, LEMBUR.JAM_MULAI, LEMBUR.JAM_SELESAI, LEMBUR.MENIT_ISTIRAHAT, DateDiff('n',[JAM_MULAI],[JAM_SELESAI])-[MENIT_ISTIRAHAT] AS MENIT_LEMBUR, IIf([KODE_LEMBUR]='K',[MENIT_LEMBUR]*2,[MENIT_LEMBUR]*3) AS NILAI_LEMBUR_MENIT, [NILAI_LEMBUR_MENIT]/60 AS NILAI_LEMBUR_JAM, KARYAWAN.GAJI_POKOK, [NILAI_LEMBUR_JAM]*[GAJI_POKOK]/176 AS UANG_LEMBUR FROM KARYAWAN INNER JOIN LEMBUR ON KARYAWAN.NIP = LEMBUR.NIP;

Seting Tab Order Object Form Access

Tab order object di form Access adalah urutan nilai property Tab Index dari masung-masing object. Secara otomatis nomor Tab Index adalah berdasarkan urutan pembuatan object dalam form. Object pertama akan mempunyai nilai tab index 0, object kedua 1 dan seterusnya.

Kita dapat mengubah urutan Tab Index suatu objek dengan mengubahnya property-nya.


Jika kita membuat objek baru pada form walaupun posisinya berada di atas objek yang telah ada nilai Tab Index dari objek baru akan lebih besar dari objek yang telah ada sebelumnya. Untuk menseting Tab Index berdasarkan urutan posisi objek kita dapat menset secara otomatis berdasarkan posisi di form access. Cara melakukannnya adalah:

  1. Buka form pada design view
  2. Klik kanan pada area form

  3. Pilih menu Tab Order dari popup menu yang muncul -> akan muncul window Tab order
  4. Klik pada tombol Auto Order

  5. Klik Ok
Sekarang urutan Tab Order pada form anda sudah berdasarkan pada urutan objek pada forms.

Untuk Access 2010 tampilan Tab Order adalah seperti pada gambar berikut:

Membuat Menu Utama di Microsoft Access


Bagaimana cara mambuat menu utama pada Microsoft Access ?
Pada tips Microsoft Access kali ini kita akan membahas cara membuat menu utama dengan menggunakan list box.
Untuk membuat menu ini kita harus mempersiapkan 2 tabel menu. Tabel menu pertama digunakan untuk menampilkan pilihan menu utama, sedangkan tabel kedua untuk menampilkan menu pada submenu. Pada contoh di sini tabel pertama diberi nama Menu0 sedangkan tabel kedua diberi nama Menu1.

Struktur tabel Menu0:
1. ID (Number - Integer)
2. Menu_Item Text(50)

Struktur tabel Menu1:
1. Menu_ID (Number - Integer)
2. Menu_Item Text(50)
3. Object_Name Text(50)
4. Urutan (Number - Integer)
5. Tipe Text(20)

Berikut ini screen shoot menu pilihan yang dibuat dengan control list box:

Data menu pilihan pada Menu Utama, diambli dari tabel Menu0 sedangkan data menu pilihan pada list box Sub Menu diambil dari tabel Menu1.
Jika user memilih salah satu menu pilihan pada di list box Menu Utama, maka pada list box Sub Menu akan tampil pilihan sesuai pilihan pada Menu Utama. Untuk memilih menu pada list box sub menu, user haru men-double klik pada menu pilihan yang ada..

Pada form menu ini list box Menu Utama diberi nama List0 dan list box Sub menu diberi nama List1. Property Row source dari List0 adalah tabel Menu0 dan Property Row source List1 adalah tabel Menu1.

Script program pada even OnClick pada list box List0 adalah sebagai berikut:

------------------------------------------------
Private Sub List0_Click()
Dim Jawab As Integer
On Error Resume Next
Me.List2.RowSource = "SELECT Menu1.*, Menu1.Urutan FROM Menu1 WHERE (((Menu1.Menu_ID)=" & List0.Column(0) & _
")) ORDER BY Menu1.Urutan;"
Me.List2.Requery

If List0.Column(1) = "Selesai" Then
Jawab = MsgBox("Exit Aplication ?", vbYesNo + vbExclamation)
If Jawab = vbYes Then
'Keluar
DoCmd.Quit acQuitSaveAll
End If
End If
End Sub
------------------------------------------------

Script program pada even OnDobleClick pada list box List1 adalah sebagai berikut:
-----------------------------------------------
Private Sub List2_DblClick(Cancel As Integer)
On Error Resume Next
If List2.Column(4) = "Form" Then
DoCmd.OpenForm List2.Column(2)
ElseIf List2.Column(4) = "Query" Then
DoCmd.OpenQuery List2.Column(2)
ElseIf List2.Column(4) = "Report" Then
DoCmd.OpenReport List2.Column(2), acViewPreview
End If
End Sub
------------------------------------------------

Untuk lebih jelasnya anda dapat men-download contoh programnya di sini.

Rancangan Menu Pilihan Aplikasi Payroll

Posting kali ini melanjutkan pembahasan aplikasi payroll. Topik kali ini adalah mengenai rancangan menu pilihan aplikasi payroll.

Menu pilihan aplikasi payroll terdiri dari 2 yaitu Menu Utama dan Sub Menu. Pada pilihan Menu Utama, pilihannya terdiri dari Data Master, Data Transaksi, Tools, Report dan Selesai. Sedangkan dari masing-masing pilihan Menu Utama terdapat Sub menu-sub menu lainnya.

Berikut adalah gambar dari rancangan menu pilihan aplikasi payroll:

Menu Data Master

Menu pilihan data master adalah menu untuk mengedit, menambah dan menghapus data dari tabel-tabel master.



Dari Menu Utama Data Master terdapat 4 Sub Menu yaitu Jabatan, Departemen, Cabang dan Karyawan.


Menu Data Transaksi

Menu pilihan data master adalah menu untuk mengedit, menambah dan menghapus data dari tabel-tabel transaksi
.

Dari Menu Utama Data Transaksi terdapat 4 Sub Menu yaitu Entry Data Cuti, Entry Data Lembur, Entry Data Potongan dan Proses Gaji Karyawan.

Menu Tools

Menu pilihan data master adalah menu untuk mengedit data dari tabel-tabel pendukung aplikasi payroll.


Dari menu Tools terdapat 4 Sub menu yaitu: Setup Hari Kerja Standard, Options, Set Kenaikan Gaji Karyawan dan History Kenaikan Gaji.


Menu Report

Menu pilihan data master adalah menu untuk mencetak data dari aplikasi payroll.



Dari menu Report terdapat 4 Sub menu yaiotu Daftar Karyawan, Cetak Data Lembur, Cetak Slip Gaji dan Cetak data Gaji Karyawan

Menu Selesai

Pilihan menu selesai adalah untuk selesai dan menutup aplikasi Payroll.

Menu pilihan pada aplikasi payroll ini menggunakan control listbox. Cara membuat menu menggunakan control listbox dapat dilihat pada posting mengenai membuat menu utama.

Rancangan Laporan Aplikasi Payroll

Kali ini kita akan membahas laporan-laporan yang ada pada aplikasi payroll. Laporan yang dibuat terdiri dari laporan daftar karyawan, slip gaji karyawan, laporan data lembur, laporan daftar gaji karyawan.

1. Laporan Daftar Karyawan

Laporan daftar karyawan berisi data daftar karyawan yang dikelompokkan berdasarkan nama departemen.





2. Slip Gaji Karyawan

Slip Gaji Karyawan dibuat setiap bulan dan dibagikan kepada masing-masing karyawan. Slip Gaji karyawan akan tersedia di aplikasi jika proses transaksi gaji karyawan sudah dieksekusi.

Adapun rancangan slip gaji karyawan dapat dilihat pada gambar berikut ini:


Sebelum mencetak slip gaji, user diminta untuk mengisi periode bulan dan tahun gaji yang akan dicetak untuk diserahkan kepada masing-masing karyawan. Karyawan tidak akan menerima uang tunai karena gaji ditransfer ke masing-masing rekening bank karyawan.

3. Laporan Daftar Lembur Karyawan

Laporan daftar lembur terdiri dari jumlah jam lembur perkaryawan:


Sebelum data lembur dicetak/diprint user harus mengisi periode tahun dari data lembur yang akan dicetak.

4. Laporan daftar Gaji Karyawan

Laporan daftar Gaji karyawan berisi data gaji per-karyawan dalam satu periode (1 tahun):


Sebelum mencetak data daftar gaji karyawan, user diminta mengisi nama karyawan dan periode tahun data gaji yang akan dicetak.

Setup Kenaikan Gaji Karyawan

Mari kita lanjutkan pembahasan aplikasi payroll.
Pada aplikasi payroll, kita harus menyediakan modul khusus untuk menghitung kenaikan gaji karyawan karena biasanya dalam suatu perusahaan, pada setiap periode tertentu ada penyesuaian gaji pokok karyawan.

Untuk melakukan perhitungan kenaikan gaji karyawan disediakan pada menu Tools --> Set Kenaikan Gaji Karyawan. Ini adalah gambar form untuk setup kenaikan gaji karyawan.



Untuk menghitung kenaikan gaji, isi bulan, tahun dan nilai kenaikan gaji dalam persen. Selanjutnya klik tombol Execute untuk menghitung kenaikan gaji seluruh karyawan.

Jika persentase kenaikan gaji karyawan tidak sama, user bisa merubah persentase kenaikan gaji dari tiap-tiap karyawan. Kolom gaji pokok baru adalah hasil perhitungan gaji pokok lama dikali kolom % kenaikan.

Sampai dengan langkah ini, data gaji pokok karyawan pada tabel master Karyawan belum berubah. Untuk mengupdate data gaji pokok pada tabel karyawan user harus mengklik tombol Set Gaji Baru.


History Kenaikan Gaji

Setelah user melakukan proses setup kenaikan gaji, data histori kenaikan gaji dapat dilihat untuk mengetahui sejarah kenaikan gaji dari masing-masing karyawan.

Untuk melihat data sejarah kenaikan gaji karyawan dapat dibuka dengan memilih menu Tools --> History Kenaikan Gaji.

Berikut adalah gambar form History Kenaikan Gaji Karyawan:

Proses Perhitungan Gaji/Salary

Kali ini posting saya akan melanjutkan modul proses perhitungan gaji karyawan di aplikasi payroll.
Pada modul perhitungan gaji karyawan terdapat tahapan-tahapan yang harus dipenuhi sebelum pada proses perhitungan gaji. Berikut adalah tahapan yang harus dilakukan:

1. Semua data master sudah dilengkapi.

Data master yang harus dilengkapi adalah data karyawan diantaranya data gaji pokok, status pernikahan, jumlah anak, kantor cabang dan jabatan. Status pernikahan dan jumlah anak akan menentukan nilai tunjangan keluarga, kantor cabang akan menentukan jumlah uang makan yang akan diterima sedangkan jabatan akan menentukan nilai tunjangan jabatan yang akan diterima.

Oleh karena data dari tabel karyawan berelasi ke tabel jabatan dan cabang, maka data tabel cabang dan jabatan juga harus sudah lengkap dengan nilai tunjangan jabatan pada tabel jabatan dan nilai uang makan pada tabel cabang.


2. Tabel Options

Tabel options menyimpan beberapa variable yang akan dihitung pada saat proses perhitungan gaji karyawan. Variabel-variabel tersebut adalah: nilai persentase potongan penghasilan, nilai PTKP (penghasilan tidak kena pajak), nilai persentase jamsostek, nilai tunjangan istri dan tunjangan anak.


3. Tabel Standar Hari Kerja

Tabel ini berpengaruh pada perhitungan uang makan yang diterima karyawan. Uang makan yang akan diterima karyawan adalah perhitungan jumlah standar hari kerja dikurangi jumlah hari tidak masuk kerja dikali jumlah uang makan perhari.


4. Semua data transaksi bulanan sudah lengkap

Tabel transaksi yang harus sudah lengkap sebelum proses perhitungan gaji adalah tabel cuti, tabel lembur dan tabel potongan lain-lain. Data tabel cuti digunakan untuk perhitungan uang makan, data tabel lembur digunakan untuk perhitungan nilai lembur, sedangkan data tabel potongan lain-lain digunakan untuk pengurang gaji yang diterima karyawan.

Setelah semua data lengkap, proses perhitungan gaji bisa dilakukan menggunakan form Gaji dengan memilih submenu Proses Gaji Karyawan dari menu utama Data Transaksi.



Berikut adalah gambar form untuk melakukan proses perhitungan gaji, jika user memilih menu Data Transaksi --> Proses Gaji Karyawan.

Untuk melakukan proses perhitungan gaji karyawan, user menentukan bulan dan tahun periode gaji karyawan kemudian klik tombol proses (tombol disebelah kanan bulan dan tahun) untuk mengeksekusi proses perhitungan gaji.
Jika sebelumnya user sudah pernah mengeksekusi proses perhitungan gaji karyawan untuk bulan dan tahun yang dipilih, aplikasi akan menampilkan pesan bahwa periode gaji bulan dan tahun tersebut sudah pernah dieksekusi. 
Jika belum pernah maka modul gaji akan melakukan perhitungan gaji sesuai dengan data-data yang telah dimasukkan. Jika proses perhitungan gaji selesai diproses aplikasi akan menampilkan pesan bahwa proses perhitungan gaji selesai dilakukan.
Jika data pendukung untuk proses perhitungan gaji belum lengkap, aplikasi akan menampilkan pesan seperti gambar berikut:
Jumlah data transaksi lembur, data transaksi cuti dan data transaksi potongan masing-masing harus sama dengan jumlah data karyawan.