Membuat Log In Multi User di Delphi

Unknown | 1:19 AM | 22comments
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.

Membuat Log in Multi User di Delphi

Serta intputkan 2 data pada tabel Tuser untuk testing nanti.
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.

Membuat Log in Multi User di Delphi


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
Share this article :

22 comments:

Unknown said...

Nice info gan

Unknown said...

Iya gan sama sam... kunjungi lagi yaw..

Unknown said...

Makasih kang... :D

Unknown said...

mas kalo ingin buat login multi user dengan database firebird gimana ya? bikin contohnya donk mas

Unknown said...

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.

Unknown said...



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;

Mushaf said...

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;

Unknown said...

Ditampilin errornya aja gan apa??
kalo baca script susah nyari salahnya. terlalu banyak buat di analisa. malah gak mudeng gan.

Unknown said...

Gan.. gimana klo usernya 3 atau lebih, cara nambah scriptnya ginama Gan.. mhon bantuannya Gan.. mksih Gan

Unknown said...

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;

Unknown said...

Ok..siipp..mksih banyak yah Om..saya langsung coba nih moga bisa Om,..heeh

Unknown said...

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

Unknown said...

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

Unknown said...

mas, itu kan databasenya pakek access, kalo pakek MYSQL gimana iya ?

Gandi said...

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..??

Unknown said...

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??

Gandi said...

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?

Unknown said...

Form1.M1.Visible := False;
form1.L1.Visible;
end
else
\ Form1.T1.Visible := False;
Close

ane eror dibagian Visible itu knp ya gan

Unknown said...

mas saya salah letak nya disini (parameters.ParamByName('user').Value:=Edit1.Text;) ini maksud dari parameters nya apa ya?

agus said...

Oh ya mas. Gmn klw membuat autonumber seperti 0001/sc/m/11/2016. Dmn 0001 =no urut. 11= bulan.2016=tahun.makasih mas sebelumnya

Unknown said...

Mas kalo edit username atau password kira2 sql nya gimana ya?

KOMPLIT said...

izin copy gan

 
Copyright © 2011. TUTORIAL DELPHI DAN DATABASE - All Rights Reserved