Jumat, 17 Februari 2012

Membuat Form Login untuk Membatasi Akses Data



Form Login, biasanya digunakan untuk membatasi hak akses bagi user untuk melihat dan berinteraksi dengan data. Hanya user yang sudah terdaftar yang bisa mengakses data-data rahasia.
Berdasarkan pengalaman penulis di sekolah, Form Login ini biasanya digunakan dalam aplikasi Pendataan Penerimaan Siswa Baru, Pembayaran Siswa, dan Aplikasi Pengolah Nilai yang digunakan oleh beberapa orang yang berbeda. 


Catatan kali ini membahas cara membuat Form Login sederhana.



Hal-hal yang dibutuhkan antara lain:

  • Sebuah sheet yang akan diisi form (Sheet LOGIN). Dalam sheet ini kita butuh setidaknya tiga objek: TextBox untuk Username, TextBox untuk Password dan CommandButton untuk meng-eksekusi Login.
  • Satu tabel Username beserta passwordnya. Bisa ditaruh dalam sheet yang sama dengan sheet Login, bisa ditaruh di sheet tersendiri 
  • Sheet yang berisi data (jumlahnya tergantung kebutuhan)



Skenario:

  1. Kita "memaksa" User untuk mengisi Form Login agar bisa mengakses data. Hal ini bisa dilakukan dengan menyembunyikan semua sheet kecuali sheet LOGIN pada saat file dibuka. 
  2. Diasumsikan bahwa kita sudah punya Tabel Username beserta passwordnya. Tabel tersebut kita sembunyikan dengan sangat rahasia (xlVeryHidden)
  3. Kalau user memasukkan Username dan password dengan benar, maka Sheet Login disembunyikan sekaligus kita munculkan sheet-sheet yang berisi data.
  4. Kalau User salah memasukkan password atau username tidak terdaftar, keluar peringatan. Sheet-sheet data tetap tidak bisa dibuka.
  5. Pada saat file ditutup, kita sembunyikan semua sheet kecuali sheet Login. Urusan seperti ini dilakukan dengan memanfaatkan Workbook_events, yakni Private Workbook_BeforeClose(Cancel As Boolean).



Keterangan tentang Objek pada Form Login:

  1. TextBox untuk Username (kita namakan "tUser") sebaiknya menggunakan ActiveX Control, agar tampilannya bisa dimodif
  2. TextBox untuk Password (kita namakan "tPass") dibuat agar tampilan huruf ketika diketik berubah jadi tanda bintang / asterik
  3. CommandButton untuk Login. Kodenya kira-kita begini:



Dim tbl, rTbl As Range                                                             
Private Sub CommandButton1_Click()                                                 
Dim nUser As Long                                                                   
Set tbl = Sheets("Password").Cells(1, 1).CurrentRegion                             
Set rTbl = tbl.Offset(1, 1).Resize(tbl.Rows.Count - 1, 1)                         
                                                                                  
' Jika username ada dalam tabel                                                   
If WorksheetFunction.CountIf(rTbl, tUser) = 1 Then                                 
     ' mencari nomor Username dalam tabel                                         
     nUser = WorksheetFunction.Match(tUser, rTbl, 0)                               
                                                                                  
     'mengecek apakah password dari username valid                                 
     If tPass.Value = Sheets("Password").Range("C1").Offset(nUser, 0).Value Then   
                                                                                   
          'tampilkan sheet-sheet yang dibutuhkan, sembunyikan sheet "Login"       
          Sheets("Data1").Visible = -1                                             
          Sheets("Data2").Visible = -1                                             
          Sheets("Login").Visible = 2                                             
     Else ' Jika password tidak valid                                               
         Tanya = MsgBox("Password salah...!" & vbCrLf & vbCrLf_                   
                & "Mau mencoba LOGIN lagi?", vbQuestion + vbYesNo, "Gagal Login") 
         If Tanya = vbYes Then                                                     
               tPass.Text = ""                                                     
               tPass.Activate                                                       
               Exit Sub                                                             
         Else                                                                             
               tUser.Text = ""                                                     
               tPass.Text = ""                                                     
               tUser.Activate                                                     
               Exit Sub                                                           
         End If                                                                   
     End If                                                                       
Else ' Jika username tidak ada dalam daftar                                       
         Ask = MsgBox("Username tidak terdaftar...!" & vbCrLf & vbCrLf _           
               & "Mau mencoba LOGIN lagi?", vbQuestion + vbYesNo, "Gagal Login")                                       
         If Ask = vbYes Then                                                                                                              
                 tUser.Text = ""                                              
                 tPass.Text = ""                                                                  
                 tUser.Activate                                                                                                    
                 Exit Sub                                                                                         
          Else                                                                                            
                 ThisWorkbook.Saved = True                                                                            
                 Application.DisplayAlerts = False         
                 ThisWorkbook.Close         
          End If                                                                                                            
End If
End Sub                                                                                                


Demikianlah secara sederhana langkah-langkah membuat Form Login.


Sebenarnya Form Login bisa dibuat dengan menggunakan UserForm sebagaimana yang terdapat di link ini


Seperti biasa, file contoh bisa di download di sini atau di Boxnet pada sidebar.


Artikel Terkait:

11 komentar:

Wawan Tawon mengatakan...

mantap om....tetep bagi ilmunya....

BTW, bagi dong ilmu untuk hanya memunculkan satu sheet aja seperti di aplikasi raportnya yg lalu...saya penasaran banget, karena saya punya file yg jumlah sheetnya banyak terkadang sering bingung pada saat pindah sheet

makasih

Udin Haeruddin mengatakan...

Untuk menampilkan hanya satu sheet saja, sebenarnya sudah saya jelaskan di:
http://www.excelheru.blogspot.com/2012/01/teknik-menyembunyikan-banyak-sheet.html

sarthisinjai mengatakan...

Ass Pak apa bisa ditampilakan secara lengkap beserta gambarnya cara Membuat Form Login untuk Membatasi Akses Data di Excel, karena cara di atas sy belum ngerti karena tdk dijelaskan satu persatu apa lagi saya pemula dgn excel pak. makasih sebelumnya

cu.dipules mengatakan...

dr awal dong mas, gmn cr bikinya

Welem mengatakan...

PAK.. Masalh seperti ini biasanya gimana ?
nUser = WorksheetFunction.Match(tUser, rTbl, 0)

Anonim mengatakan...

Assalammualaikum.. pak saya arifin guru ma alimdad bantul, pak mohon dijelaskan katika saya daftar dan kemudian login di form login yang bapak buat username n passwordnya itu disimpan dmn? terus bagaimana cara menampilkannya, atas bantuannya sebelmnya terimakasih pak

Parluji mengatakan...

ass, ma'af pak, kembali sy bertanya penggunaan optiont button.
bagaimana trik/tehnik agar link tidak berkaitan.
contoh cell a1 dan b1 linknya = c1
untuk cell a2 dan b2 linknya = b2 (sy coba linknya selalu berkaitan walau sudah di ubah). syukron sebelumnya pak.

Maktabah Manhaj Salaf mengatakan...

Assalamualaikum
Dear Pak Heru
saya mau tanya, dalam contoh yang bapak buat itu setiap orang bisa akses isi data 1 dan data 2
meskipun berbeda username-nya.

yang ingin saya tanyakan bagaimana caranya membuat multiuser sehingga ketika data 3 itu sangat penting maka hanya admin saja yang bisa lihat, adapun user lainnya hanya data 1 dan data 2 saja.

ibaratnya data 3 itu datanya bos
data 1 dan data 2 itu datanya cashier atau kepala toko -misalnya gitu-

sebab dalam aplikasi yg mau saya buat ini saya sebagai owner dan ada data yg cm saya aja yang boleh tahu yaitu data Laba & Rugi
adapun karyawan sy cukup bagian inventory and sales transaction aja.

thank you very much sebelumnya.
جزاك الله خيرا

rifqi maulana mengatakan...

Terimakasih pak Heru artikel ini sangat bermanfaat bagi saya ,,,,,

Jefry mengatakan...

nanti bisa saya terapkan ni dengan membuat form login untuk membatasi akses data
trims ilmunya

Anonim mengatakan...

Siang mas,
klo untuk membuat user satu hanya bisa untuk menampilkan beberapa Sheet, gmana ya?
misal, Login Admin cuman bisa buka Sheet 1 dan Sheet 2,
Login Spv bisa buka Sheet 1, 2 dan 3.
itu gmana mas?