widgets

Sabtu, 27 Juli 2013

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.

Tidak ada komentar:

Posting Komentar