22 June 2010

Form Login dengan Database

Untuk membuat form login yang berhubungan dengan data base pada dasarnya sama dengan membuat form login biasa. Yang menjadi perbedaan adalah kita mengambil data dari database yang sebelumnya telah tersimpan.

Untuk memulai mencoba membuat halaman login, terlebih dahulu membuat database misalnya dari microsoft access dengan nama tabel "login" dan berisi 2 buah kolom yaitu "username" dan "pass".

Setelah database kita buat maka tahap selanjutnya adalah membuat tampilan halaman login yang terdiri dari dua buah label, 2 buah text box dan dua buah command button.
Berikut adalah property yang saya ubah dari masing-masing tool:
Form : Caption > LOGIN
Label1 : caption > Username
Label2: caption > Password
Text1 : name > txtuser
Text2 : name > txtpass
PasswordChar > *
Command1: name > cmdLogin
Caption > &Login
Command2: name > cmdExit
Caption > &Exit
Berikut adalah bentuk tampilannya

formlogin


Setelah itu kita baru masuk pada tahap pembuatan kode:

Kalo mau coba ini ada contoh kode-nya. Kalo malas ngetik atau copas desain dan codenya bisa di ambil disini:

Private con As New ADODB.Connection
Private rst As New ADODB.Recordset
Private strconn As String
Private sql As String

Private Sub Connections()
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\db.mdb ;Persist Security Info=False;Jet OLEDB"
If con.State = adStateOpen Then
con.Close
Set con = New ADODB.Connection
con.Open strconn
Else
con.Open strconn
End If
End Sub

Private Sub cmdExit_Click()
End
End Sub

Private Sub cmdLogin_Click()
On Error Resume Next

Static i As Integer

If txtUser.Text = "" Then
GoSub noacc
MsgBox "Anda belum memasukkan Nama", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus
ElseIf txtPass.Text = "" Then
GoSub noacc
MsgBox "Anda belum memasukkan Kata Sandi", vbInformation + vbOKOnly, ":: Informasi ::"
txtPass.SetFocus
Else
sql = "SELECT * FROM LOGIN WHERE username='" & txtUser.Text & "'"
Set rst = con.Execute(sql)
If rst.EOF Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

ElseIf txtPass.Text <> rst("pass") Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

Else
MsgBox "Selamat anda berhasil login", vbInformation + vbOKOnly, "Informasi"
Unload Me
End If
End If
Exit Sub

noacc:
i = i + 1
If i = 3 Then
MsgBox "Maaf anda tidak berhak mengakses aplikasi ini !", vbCritical, ":: Gagal ::"
End
Else
Return
End If

End Sub

Private Sub Form_Load()
Call Connections
txtUser.Text = ""
txtPass.Text = Empty
End Sub

Penjelasan singkatnya sbb:

Private con As New ADODB.Connection
Private rst As New ADODB.Recordset
Private strconn As String
Private sql As String

Private Sub Connections()
strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\db.mdb ;Persist Security Info=False;Jet OLEDB"
If con.State = adStateOpen Then
con.Close
Set con = New ADODB.Connection
con.Open strconn
Else
con.Open strconn
End If
End Sub


Baris-baris kode ini adalah modul koneksi ke database, biasanya diletakkan pada sebuah modul apabila kita memiliki banyak form, karena kita hanya memiliki sebuah form maka kita letakkan pada form. Dan prosedur ini akan kita panggil pada saat form kita load “call Connections”

Private Sub cmdExit_Click()
End
End Sub

Kode ini saya kira sudah sangat jelas, yaitu untuk mengakhiri atau menutup form.

Private Sub cmdLogin_Click()
On Error Resume Next

Static i As Integer

If txtUser.Text = "" Then
GoSub noacc
MsgBox "Anda belum memasukkan Nama", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus
ElseIf txtPass.Text = "" Then
GoSub noacc
MsgBox "Anda belum memasukkan Kata Sandi", vbInformation + vbOKOnly, ":: Informasi ::"
txtPass.SetFocus
Else
sql = "SELECT * FROM LOGIN WHERE username='" & txtUser.Text & "'"
Set rst = con.Execute(sql)
If rst.EOF Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

ElseIf txtPass.Text <> rst("pass") Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

Else
MsgBox "Selamat anda berhasil login", vbInformation + vbOKOnly, "Informasi"
Unload Me
End If
End If
Exit Sub

noacc:
i = i + 1
If i = 3 Then
MsgBox "Maaf anda tidak berhak mengakses aplikasi ini !", vbCritical, ":: Gagal ::"
End
Else
Return
End If

End Sub

Untuk bagian ini hamper sama ketika kita membuat halaman login tanpa data base yang sudah pernah saya postingkan, hanya saja yang menjadi perbedaan hanya terletak pada beberapa bagian saja. Yaitu pada

sql = "SELECT * FROM LOGIN WHERE username='" & txtUser.Text & "'"
Set rst = con.Execute(sql)
If rst.EOF Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

ElseIf txtPass.Text <> rst("pass") Then
GoSub noacc
MsgBox "Nama atau Kata sandi yang anda masukkan salah", vbInformation + vbOKOnly, ":: Informasi ::"
txtUser.SetFocus

Disini kita akan menggunakan query sql untuk melakukan pencarian username terlebih dahulu kemudian hasilnya kita simpan pada variable rst setelah eksekusi query dilakukan. Apabila data tidak ditemukan maka akan menuju ke sub prosedur noacc, namun bila ditemukan maka kita akan membandingkan nilai password yang ada pada database dan password yang di-input-kan oleh user.

Private Sub Form_Load()
Call Connections
txtUser.Text = ""
txtPass.Text = Empty
End Sub


Bagian ini adalah bagian yang pertama kali dijalankan oleh program karena ditelakkan pada saat form kita buka. Kode ini hanya berfungsi untuk melakukan pengaturan awal saya, misalnya call connections, yaitu untuk melakukan pangggilam koneksi ke database, kemudian pengatur textbox menjadi kosong yaitu dengan menggunakan (“”) atau bisa juga dengan kata Empty.

Dah Cuma gitu aja, kayaknya gak susah2 bgt. Met mencoba deh.

23 comments:

idha said...

kalau fasilitas pengingat pasword d vb 6 gimana ia?

Unknown said...

kk muph kurang ngerti..
klo bsa yg aga lebih rumit..
eh slh tulis...


ada yg lebih canggih and rumit alias sulit......

ma2dxl said...

@ida :saya blum perna buat yg seperti yg kamu pikirkan, tp saya kira kita cuma perlu membuat satu tabel yg berisi security question user untuk membantu memunculkan passwordnya.

@ganda:Aduh maaf klo penjelasannya blom bisa membantu. Aq jg msh banyak belajar, jd klo yg canggih n rumuit mungkin untuk tingkatan yg lebih mahir.

Anonymous said...

wah..sipp..sipp..

ashil said...

kk bole nanya ga??

klo script buat buka form lain gmna??
yaa mungkin kya link giu deh actionnya..
kasi tau ya kk...
kirim ke e-mail q y ka.
saiful_mmn@yahoo.com

zett said...

kk mau tanya, kalau kita mau buat kondisi setelah dapat login lalu masuk ke form ke2(menu) itu commandnya gmn n sebelah mana perbedaan dengan coding yg di atas?
thx.

Anonymous said...

ane cbaaa dlu ya bozzzz....
thanks tutorialnya....

sandi said...

gua bantu zeft, kalo ingin nampilin form2 maka pada listing berikut:

Else
MsgBox "Selamat anda berhasil login", vbInformation + vbOKOnly, "Informasi"
Unload Me
End If
End If
Exit Sub

tulis syntax ini dibawah unload me
MsgBox "Selamat anda berhasil login", vbInformation + vbOKOnly, "Informasi"
Unload Me
form2.show
End If
End If


selamat mencoba hehe
Exit Sub

Unknown said...

thx for all ..

RUDY AFRIADI said...

kalo m au bikin form ganti password gi mana??
thnks. . .

Anonymous said...

wahhh....semangat2. trimakasih sudah berbagi,
InsyaAllah tak sering mampir dech...
karna ane lagi perlu untuk bahan TA

best regard
alismg_1895@yahoo.co.id

Anonymous said...

bisa tolong bantuannya gak,kl mau buat data mahasiswa gmn???jadi dgn primary key kita bisa tau mahasiswa tersebut dijurusan mana,serta biodata mahasiswa juga tercantum.thank's

Anonymous said...

mau tanya neh. pada saat login ke windows, kan ada username n passwordnya tuh, bagaimana cara mengambil username n passwordnya dari database kita bukan dari user account kita????

Thnx

blog_qu said...

kk tolong bahas langkah2 membuat database dengan vb y...tengkyu...

Anonymous said...

kk aqu mw mnta tlg, untuk menampilkan label pada frame gmn ya?mksdx labelnya bs di baca walaupun diatas frame...sbnarnya aq jd malu nanya ini tp mw gmn lgi aqu pemula si....tlg ya k klw bsa kirim di email aqu aja
joe_experiment@yahoo.com.thanks b4

Anonymous said...

ribeettt bgt to listing!!!

Zulfikar said...

eittsss...
ikutan dong...
kalau ada yang mau membuat jam digital sederhana silahkan ikuti langkah2 berikut ini:
1.buat sebuah form dan namai dengan frmClock
2.Masukkan 2 buah label dan 1 buah timer
Pada Timer Ubah namanya menjadi tmrClock dan
intervalnya 1
3.Masukkan Codingan Berikut:

Option Explicit

Private Const pi As Double = 3.14159265358979

Private Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Private Declare Function ReleaseCapture Lib "user32" () As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long


Private Sub MakeRoundObject(objObject As Object, Value As Long)
Static lngHeight, lngLong, lngReturn, lngWidth As Long

lngWidth = objObject.Width / Screen.TwipsPerPixelX
lngHeight = objObject.Height / Screen.TwipsPerPixelY

SetWindowRgn objObject.hWnd, CreateRoundRectRgn(0, 0, lngWidth, lngHeight, Value, Value), True
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyEscape Then
App.TaskVisible = False
Unload Me
End
End If
End Sub

Private Sub Form_Load()

Call MakeRoundObject(frmClock, 1000)
Call tmrClock_Timer

End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReleaseCapture
SendMessage Me.hWnd, &HA1, 2, 0&
End Sub

Private Sub lblTime_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Call Form_MouseDown(Button, Shift, X, Y)
End Sub

Private Sub tmrClock_Timer()
Dim dblSecond As Double, dblMinute As Double, dblHour As Double

dblSecond = Second(Now) * 6 - 90
dblMinute = (Minute(Now) + Second(Now) / 60) * 6 - 90
dblHour = (Hour(Now) + Minute(Now) / 60) * 30 - 90

Lbltime.Caption = Format(Now, "hh:mm:ss")
LblDate.Caption = Format(Now, "dddd-dd-mmmm-yyyy")
End Sub

udah selesai deh jam digitalnya ini juga akan menunjukkan tanggal,hari,bulan,dan tahun. tetapi ini hanya berfungsi sesuai dengan tanggal dan waktu di komputer atau laptop anda.. Trims..^_^..

Zulfikar said...

Ohh yaa kk saya juga mau tanya nich soal membuat bagaimana cara memasukkan username dan password ke txtNama dan txtPass dan setelah data yg dimasukkan benar menuju form berikutnya.. itu gimana buatnya yach...??? soalnya cara buat kyk gitu aq taunya cma di VB.NET 2008 Express..

Kholil said...

Tolong dong cara menuliskan kode copyfolder C:\Document and settings\Username\ ===>Username diganti kata apa agar bisa digunakan di komp lain yang user name pasti tidak sama.atas bantuannya banyak terima kasih.

vbguidelines said...

Mantap infonya gan.. Visual Basic Programming

djiesoft said...

makasih om infonya , sip!

aiiu said...

klw cara bikim VB 6.0 Login form, Loading form. using buttons, textbox and list box. gmna ?? ksih tw juga dund cara'a !!

Unknown said...

Kak mau tnya. Caranya buat filter penjualan gmn ya? Kodenya apa?

 
>