Mungkin judul yang saya bahas ini sudah beredar luas di dunia internet dan ada yang lebih bangus dari artikel saya ini. Saya membuat artikel ini dengan tujuan menjadi salah satu referensi bagi para pemula pengguna delphi yang masih kesulitan untuk membuat Log In aplikasi secara multi user yang sederhana.
Sistem multi user menurut definisi saya dalam tutorial ini adalah sebuah sistem yang bisa digunakan lebih dari satu orang dengan hak akses yang berbeda dari setiap user. Misalkan sebagai contoh dalam sebuah minimarket atau toko menggunakan program Point Of Sales (POS) dengan pengguna sebagai admin dan kasir. Untuk pengguna yang dalam Log In program sebagai admin maka user tersebut hanya memperoleh hak akses pada menu Master Data dan Menu Laporan saja, Sedangkan untuk user yang Log In sebagai kasir maka user tersebut hanya bisa melakukan Transaksi Penjualan dan Transaksi Pembelian saja. Dari kasus tersebut maka dibuatlah user access berbeda dari setiap pengguna.
Berikut saya akan medemonstrasikan bagaimana cara mengatur hak akses tersebut menggunakan delphi dan agar lebih mudah dan fleksibel maka saya menggunakan database Access sebagai penyimpanan datanya.
Agar tutorial ini berjalan dengan baik maka ikutilah langkah-langkah di bawah ini dengan baik dan benar.
1. Membuat database Access
Karena tutorial ini menggunakan basis data acces maka harus dibuatkan database access terlebih dahulu, Misalkan disini saya membuat database useraccess.mdb dengan tabel Tuser seperti pada gambar di bawah.
Serta intputkan 2 data pada tabel Tuser untuk testing nanti.
username : admin password: admin level:admin
username : admin password: admin level:admin
username:kasir password:kasir level:kasir
2. Membuat Form Menu Program
Dalam tutorial ini dibahas untuk user sebagai admin hak aksesnya adalah Master Data dan Menu Laporan dan untuk kasir hak aksesnya adalah Transaksi Penjualan dan Transaksi Pembelian maka dibuat menu utama seperti pada gambar dibawah ini.
3. Membuat Form Login
Pembuatan form login digunakan untuk login ke program sekaligus memberikan akses kontrol kepada setiap user.
Koneksikan ADOConnection ke database terlebih dahulu. Apabila belum tau caranya silahkan ke turorial yang membahas koneksi Acces dengan Delphi kesini. Properties ADOQuery1 Connecntion diisi dengan ADOConnection1.
4. Penulisan Script di Form Log In
Pada tombol log in teliskan perintah seperti di bawah ini. Sebelumnya tambahakn uses Form1 dulu pada Form Login.
implementation
uses SimpleMultiUser;
procedure TForm2.Button1Click(Sender: TObject); begin if Edit1.Text = '' then showmessage('User masih kosong') else if Edit2.Text = '' then Showmessage('Password masih kosong') Else begin With AdoQuery1 do begin Close; SQL.Clear; SQL.Add('select * from Tuser where username=:user and password=:pass'); parameters.ParamByName('user').Value:=Edit1.Text; Parameters.ParamByName('pass').Value:=Edit2.Text; Open; end; if not ADOQuery1.IsEmpty then begin if UPPERCASE( ADOQuery1.FieldByName ('level').Value )='KASIR' then begin Form1.M1.Visible := False; form1.L1.Visible; end else \ Form1.T1.Visible := False; Close; end else MessageBox(handle,'Password atau user yang dimasukan salah','Error',MB_ICOnerror); end; end;
5. Penulisan Script pada Form1 atau Form Utama
Pada Event onShow tuliskan kode seperti di bawah. Tambahkan juga unit2 pada Form1
uses Unit2; procedure TForm1.FormShow(Sender: TObject); begin Form2.ShowModal; end;
6. Jalankan Program dengan Menekan F9
Apabila penulisan skrip tidak ada yang salah maka program akan berjalan dengan lancar.
Sedot Source Code
21 comments:
Iya gan sama sam... kunjungi lagi yaw..
Makasih kang... :D
mas kalo ingin buat login multi user dengan database firebird gimana ya? bikin contohnya donk mas
Sebenernya konsepnya sama mas.
pertama kita ngecek password and usernamenya. kemudian misalkan level user mempunya hakakses sebagai admin. maka di delphi kita tampilkan menu-menu yang di peruntukan sebagai admin.
bisa pake,
if level = admin then
begin
menu1.visible:=True;
menu2.visible:=True;
end else
menu1.visible:=false;
mudah mas.. kalo untuk sederhananya.
Mohon Penjelasannya tentang kode ini Gan.. saya error,,M1,L1 dan T1 manggil apanya ya Gan.. takutnya nama form2 saya beda.. mkasih..
begin
Form1.M1.Visible := False;
form1.L1.Visible;
end
else
\ Form1.T1.Visible := False;
ini listing yg kubuat... maklum baru belajar..hehe
//field Passwordnya tidak terbaca gan.. mohon bantuannya buat kerjain tugas sy...
eror terus salahnya dimana gan?
if cbbLevel .Text = 'Admin' then
begin
with DataModule1 .qryLogin do
begin
Close ;
SQL .Clear ;
SQL .Add('select * from tb_login where Level="Admin"');
if (edtPassword .Text = DataModule1 .qryLogin ['Password']) and (edtUsername .Text = DataModule1 .qryLogin ['Username']) then
begin
login ;
end
else
begin
MessageDlg('Maaf Password dan Username Salah',mtError ,[mbOK ],0);
edtUsername .SetFocus ;
end;
Open ;
end;
end
else if cbbLevel .Text = 'Kasir' then
begin
with DataModule1 .qryLogin do
begin
Close ;
SQL .Clear ;
SQL .Add('select * from tb_login where Level=Kasir');
if (edtPassword .Text = FieldByName ('Password').Value ) and (edtUsername .Text = FieldByName ('Username').Value ) then
begin
login ;
end
else
begin
MessageDlg('Maaf Password dan Username Salah',mtError ,[mbOK ],0);
edtUsername .SetFocus ;
end;
Open ;
end;
Ditampilin errornya aja gan apa??
kalo baca script susah nyari salahnya. terlalu banyak buat di analisa. malah gak mudeng gan.
Gan.. gimana klo usernya 3 atau lebih, cara nambah scriptnya ginama Gan.. mhon bantuannya Gan.. mksih Gan
kalo user lebih dari 3. dan mempunyai akses sendiri sendiri
misal user 1 : admin
user 2 : kasir
user 3 : super admin
tinggal atur aja bang if elsenya.
if level = admin then
begin
// nampilin menu untuk admin
end else
if level = kasir then
begin
//nampilin menu untuk kasir
end else
if level = super admin then
begin
// nampilin menu untuk super admin
end;
Ok..siipp..mksih banyak yah Om..saya langsung coba nih moga bisa Om,..heeh
begin
if UPPERCASE( ADOQuery1.FieldByName ('level').Value )='KASIR' then
begin
Form1.M1.Visible := False;
form1.L1.Visible;
end
else
\ Form1.T1.Visible := False;
Close;
mas maksud dari coding diatas apa yach?saya coba ganti form1.L1 menjadi form1.L1 kok malah error
begin
if UPPERCASE( ADOQuery1.FieldByName ('level').Value )='KASIR' then
begin
Form1.M1.Visible := False;
form1.L1.Visible;
end
else
\ Form1.T1.Visible := False;
Close;
mas maksud dari coding diatas apa yach?saya coba ganti form1.L1 menjadi form5.L5 kok malah error
mas, itu kan databasenya pakek access, kalo pakek MYSQL gimana iya ?
Gimana kalau ternyata ada 2 user dengan level yg berbeda memiliki username dan password yang sama? contohnya username : asd123 dan pass : asd123 dengan level admin.. lalu sama dengan username : asd123 dan pass : asd123 dengan level anggota..??
Belum pernah denger sebuah program dengan user yang sama ?? Username itu data uniq mas. Apakah sampean pernah bisa register email yang sama secara 2 kali, register username kaskus dengan username yang sama.bisa??
oh iya gan.. bener juuga. saya kemarin sempet bingung dsitu, makasih gan..
tapi ada satu yang mau saya tanyain lagi.. misalnya kalo admin dan anggota itu tidak bisa digabung dalam 1 table(karena perbedaan struktur).. tapi untuk login mereka harus menggunakan 1 form login seperti tutorial diatas.. bagaimana kah itu?
Form1.M1.Visible := False;
form1.L1.Visible;
end
else
\ Form1.T1.Visible := False;
Close
ane eror dibagian Visible itu knp ya gan
mas saya salah letak nya disini (parameters.ParamByName('user').Value:=Edit1.Text;) ini maksud dari parameters nya apa ya?
Oh ya mas. Gmn klw membuat autonumber seperti 0001/sc/m/11/2016. Dmn 0001 =no urut. 11= bulan.2016=tahun.makasih mas sebelumnya
Mas kalo edit username atau password kira2 sql nya gimana ya?
izin copy gan
Post a Comment