Membuat Input,Edit,Hapus Data pada Form Delphi
Apa
kabar kawan? Semoga sehat adanya.
Sesuai
janji saya kemaren. Kita lanjutkan bahasan kita soal program Delphi kita. Kali
ini kita akan membuat form data anggota yang kita buat kemaren menjadi
berfungsi tombol-tombolnya. Bagaimana. Sudah siap ?
Ulangi
langkah yang dibuat kemaren. Masih ingat kan? Ya sambil menghafal
langkah-langkahnya kan gak ada jeleknya mengukang sebentar. Hehee
Setelah
siap Delhpi dengan Formnya seperti ini:
Sekarang
saatnya kita membuat kode-kode perintah pada tombol-tombolnya. Yakinkan kalau Koneksi Delphi engan database nya sudah jalan. Tapi sebelum
menuju tombol Simpan kita perlu membuat kode untuk mendeklarasikan bagaimana
status Form saat mulai di jalankan. Caranya:
Klik
di bagian kosong Form. Lalu pada Properties pilih event dan klik dua
kali pada kolom OnCreate
lalu ketikkan kodenya sbb:
procedure Tfrmanggota.FormCreate(Sender: TObject);
begin
Button1.Enabled:= false;
Button2.Enabled:= false;
Button3.Enabled:= false;
Button4.Enabled:= true;
end;
Apa maksud kode tersebut? Ya. Untuk membuat tiga tombol yaitu
Button1,Button2 dan Button3 menjadi dalam kondisi tidak aktif dan hanya tombol
Button4 saja yang aktif. Kenapa dibuat begitu? Nanti kita akan tahu. Sekarang
mari kita lanjutkan koding-koding kita.
Untuk Tombol Simpan
Klik
dua kali (double click) pada tombol simpan, lalu tuliskan kodenya seperti
berikut :
procedure Tfrmanggota.Button1Click(Sender: TObject);
var jenis:String;
begin
if Button1.Caption= 'Simpan' then
begin
ADOQuery1.Close;
ADOQuery1.SQL.clear;
if RadioButton1.Checked=true then
jenis := 'L'
else if RadioButton2.Checked=true then
jenis := 'P'
else
jenis := '';
ADOQuery1.SQL.Add ('insert
into dt_anggota(id,'
+'nama,tgl_lahir,jns_kelaink,'
+'nama,tgl_lahir,jns_kelaink,'
+'alamat) Values("'
+Edit1.Text+'","'+Edit2.Text+'","'
+datetostr(datetimepicker1.date)+'","'
+jenis+'","'+Edit3.Text+'")');
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('Select
* from dt_anggota');
ADOQuery1.Open;
Edit1.Text :='';
Edit2.Text :='';
Edit3.Text :='';
RadioButton1.Checked:=false
;
RadioButton2.Checked:=false
;
edit1.SetFocus;
showmessage('Data Sudah Berhasil Disimpan!');
Button1.Enabled:= false;
end else
if Button1.Caption= 'Batal' then
begin
Button1.Caption:= 'Simpan' ;
Edit2.Enabled:= true;
Edit3.Enabled:= true;
DateTimePicker1.Enabled:=
true;
RadioButton1.Enabled:=
true;
RadioButton2.Enabled:=
true;
RadioButton1.Checked:=false;
RadioButton2.Checked:=false;
Edit2.Text:='' ;
Edit1.Text:='' ;
Edit3.Text :='';
edit1.SetFocus;
Button1.Enabled:= false;
Button2.Enabled:= false;
Button3.Enabled:= false;
end;
end;
Wah, panjang juga ya. Tapi mudah-mudahan bias dipahami maksudnya.
Kalo masih bingung sementara di kopas aja dulu deh, ntar lama-lama juga
mengerti kok. Keliatan rumit karena kita disana sudah melibatkan komponen
RadioButton, dan menjadikan tombol Simpan kita bias sekaligus menjadi tombol
Pembatalan input.(perhatikan bagian kode “if Button1.Caption= 'Batal' then Begin…dst”)
Sekarang untuk Tombol Edit
Sama caranya. Klik double pada tombol lalu tuliskan kodenya seperti
berikut:
procedure Tfrmanggota.Button2Click(Sender: TObject);
var jenis:String;
begin
if Button2.Caption='edit' then
begin
Button1.Caption:= 'Simpan' ;
Button2.Caption:= 'Update' ;
Button3.Caption:= 'Batal';
Button1.Enabled:= false;
Edit2.Enabled:= true;
Edit3.Enabled:= true;
DateTimePicker1.Enabled:= true;
RadioButton1.Enabled:= true;
RadioButton2.Enabled:= true;
end else
if Button2.Caption='Update' then
begin
Button2.Caption:='Update';
ADOQuery1.Close;
ADOQuery1.SQL.clear;
if RadioButton1.Checked=true then
jenis := 'L'
else if RadioButton2.Checked=true then
jenis := 'P'
else
jenis := '';
ADOQuery1.SQL.Add ('update dt_anggota set nama ="'
+ Edit2.Text
+ Edit2.Text
+'",tgl_lahir="'+datetostr(datetimepicker1.date)
+'",jns_kelamin="'+jenis+'",alamat="'
+Edit3.Text+'" where id =('+Edit1.Text+')');
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('Select * from dt_anggota');
ADOQuery1.Open;
Edit1.Text :='';
Edit2.Text :='';
Edit3.Text :='';
RadioButton1.Checked:=false
;
RadioButton2.Checked:=false
;
edit1.SetFocus;
showmessage('Data Sudah Berhasil Di Rubah!');
Button2.Enabled:= false;
Button3.Enabled:= false;
end;
end;
Disini tombol Edit juga kita fungsikan ganda, yaitu manakala tombol
bertuliskan edit, saat di klik akan membuat kolom-kolom menjadi aktif
untuk dapat di edit datanya dan merubah tulisan tombol menjadi Update. Lalu
ketika di klik saat tombol bertuliskan Update maka program akan
memproses perubahan data pada database kita. Begitulah kira-kira kronologi
kerja pada kode di atas. Mudah-mudahan ngerti lah ya maksudnya.
Lanjut lagi.
Sekarang untuk Tombol Hapus
Biasa. Klik dua kali tombolnya lalu tuliskan kode nya seperti
berikut :
procedure Tfrmanggota.Button3Click(Sender: TObject);
begin
if Button3.Caption= 'Batal' then
begin
Button3.Caption:= 'Hapus'
;
Edit2.Enabled:= true;
Edit3.Enabled:= true;
DateTimePicker1.Enabled:=
true;
RadioButton1.Enabled:=
true;
RadioButton2.Enabled:= true;
RadioButton1.Checked:=false;
RadioButton2.Checked:=false;
Edit3.Text :='';
Edit2.Text:='' ;
Edit1.Text:='' ;
edit1.SetFocus;
Button1.Enabled:= false;
Button2.Enabled:= false;
Button3.Enabled:= false;
end else
if Button3.Caption= 'Hapus' then
begin
if(application.MessageBox('Yakin mau menghapus data
ini?','Konfirmasi',MB_YesNo)=ID_Yes) then
begin
ADOQuery1.Close;
ADOQuery1.SQL.clear;
ADOQuery1.SQL.Add ('delete from dt_anggota where id
=('
+Edit1.Text+')');
ADOQuery1.ExecSQL;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('Select * from dt_anggota');
ADOQuery1.Open;
Edit1.Text :='';
Edit2.Text :='';
Edit3.Text :='';
RadioButton1.Checked:=false
;
RadioButton2.Checked:=false
;
Edit1.Enabled:= true;
edit1.SetFocus;
showmessage('Data Sudah Berhasil Di hapus!');
Button3.Enabled:= false;
end else
end;
end;
Dan
Untuk tombol Keluar nya tuliskan
kode di bawah ini:
procedure Tfrmanggota.Button4Click(Sender: TObject);
begin
if(application.MessageBox('Yakin akan keluar dari program?','Konfirmasi',MB_YesNo)=ID_Yes)
then
begin
Application.Terminate;
end;
end;
Sampai disini Program kita sudah bisa di coba. Coba jalankan dengan
klik Run atau klik tombol F9 pada keyboard.
Tapi tunggu dulu. Kita tambah satu langkah lagi dulu. Saya ingin
Form input saya itu bisa memanggil data dari database ke form juga. Sebab kan
tadi kita sudah buat kode untuk meng edit dan meng hapus data. Lalu kalo kita
belum bisa memanggil data kita dari database kan lucu ya. Hehee.. Untung di
ingetin.
Sebenarnya banyak cara untuk memanggil/menampilkan data dari
database ke form. Untuk kali ini saya akan menggunakan cara auto enter
pada kolom Edit1 nya aja lah. Wow ide bagus juga nih. Tapi sulit enggak
gan ? Jangan kuatir, mudah kok. Yuk di ulai aja.
Caranya: Klik pada komponen Edit1 lalu pada menu properties pilih
bagian event (tadi kan udah tau toh dimana tempatnya?) kemudian pilih dan klik
dua kali (dobel) pada OnKeyPress. Sudah? Ini dia kode yang harus di tuliskan;
procedure Tfrmanggota.Edit1KeyPress(Sender: TObject; var Key:
Char);
begin
if key=#13 then //maksudnya
jika yang di tekan tombol Enter//
begin
if Edit1.Text='' then // maksudnya jika edit1 masih kosong//
begin
Application.MessageBox('Masukkan No IDnya dulu donk !','info',0);
Exit;
end
else
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add('Select * From dt_anggota Where ID
=('
+Edit1.Text+')');
ADOQuery1.open;
if not ADOQuery1.Eof then
begin
Edit2.Text := ADOQuery1.Fields[1].AsString;
Edit3.Text :=
ADOQuery1.Fields[4].AsString;
if ADOQuery1.Fields[3].AsString = 'L' then
RadioButton1.Checked:=true
else
RadioButton2.Checked:=true;
datetimepicker1.DateTime := ADOQuery1.Fields[2].AsDateTime;
Edit2.Enabled:= false;
Edit3.Enabled:= false;
DateTimePicker1.Enabled:= false;
RadioButton1.Enabled:= false;
RadioButton2.Enabled:= false;
Button1.Enabled:= true;
Button2.Enabled:= true;
Button3.Enabled:= true;
Button1.Caption:= 'Batal' ;
Button2.Caption:='edit';
Button3.Caption:= 'Hapus';
exit;
end else
Edit2.Enabled:= true;
Edit3.Enabled:= true;
DateTimePicker1.Enabled:= true;
RadioButton1.Enabled:= true;
RadioButton2.Enabled:= true;
RadioButton1.Checked:=false;
RadioButton2.Checked:=false;
Edit2.Text:='' ;
Edit3.Text :='';
edit2.SetFocus;
Button1.Enabled:= true;
Button2.Enabled:= false;
Button3.Enabled:= true;
Button3.Caption:= 'Batal';
Button1.Caption:= 'Simpan' ;
end;
end;
end;
Keterangan kode:
Saat tombol enter di tekan, jika kolom edit1 masih kosong
akan muncul pesan “Masukkan NoIDnya dulu donk!”. Lalu jika data dengan
ID yang di ketikkan di temukan di
database, maka data akan di tampilkan dan kondisi kolom-kolom non aktif,tombol
Simpan non aktif, tombol Edit dan Hapus aktif. Jika data tidak ditemukan atau
data belum ada di database dengan ID yang di ketikkan, maka kolom-kolom akan di
aktifkan, kursor menuju ke edit2, tombol Simpan akan di aktifkan. Begitu
kira-kira maksudnya. Lihat gambar:
Nah. Sekarang coba di run programnya. Coba masukkan data ke
form. Kalau anda lakukan proses tadi dengan benar maka anda sekarang sudah bias
menginputkan data kedalam database Ms Access dan juga memanggilnya serta nengedit
datanya.
Iini dulu lah ya untuk kali ini. Selanjutnya nanti kita akan
kembangkan form kita tadi untuk bisa memanggil data nya dari DBGridnya sendiri,
Mencetak tabel datanya, Menyimpan Prongamnya, dan trik-trik lainnya. Ikuti
terus ya…
Sampai ketemu lagi di bagian ke 3 ..
0 Komentar