Pencarian Data Sederhana pada Delphi

desain form barang photo barang_zpsxars3vgr.jpg Codegratis.wordpress.com. Mari belajar coding dengan mudah dan sederhana. Pada postingan saya sebelumnya kita telah membahas mengenai membuat aplikasi sederhana dengan delphi. Sebenarnya dalam aplikasiĀ  tersebut terdapat beberapa fungsi penting yang dapat kita uraikan lagi secara lebih detail, salah satunya adalah fungsi pencarian. Nah mari kita bahas fungsi pencarian, fungsi tersebut terdapat pada form barang. Untuk dapat melakukan pencarian pada delphi membutuhkan beberapa buah procedure atau blok coding yang saya ciptakan sendiri atau memang procedure bawaan delphi berikut ini fungsi yang saya gunakan untuk pencarian data pada delphi.
procedure Tf_barang.FormShow;

procedure Tf_barang.FormShow(Sender: TObject);
begin
with dm.ZQuery1 do
begin
sql.Clear;
sql.Add('select * from t_barang');
open;
gbarang.DataSource:=dm.DataSource1;
end;
end;

Procedure ini digunakan pada saat form pertama kali muncul atau tampil. Disitu saya menuliskan SQL yang digunakan untuk menampilkan data pada grid barang, sehingga user dapat melihat isi data barang, dan mengetahui bahwa form ini digunakan untuk menginput data barang.
procedure Tf_barang.rgcariClick;

procedure Tf_barang.rgcariClick(Sender: TObject);
begin
ecari.SetFocus;
end;

Procedure hanya untuk men-setfocus atau mengarahkan langsung inputan ke edit text pencarian, saat salah satu dari radio group di klik.
procedure Tf_barang.bcariClick;

procedure Tf_barang.bcariClick(Sender: TObject);
begin
with dm.ZQuery1 do
begin
if rgcari.ItemIndex=-1 then
begin
MessageDlg('Kategori Pencarian Belum Dipilih',mtInformation,[mbOK],0);
exit;
end
else
if rgcari.ItemIndex=0 then
begin
sql.Clear;
sql.Add('select * from t_barang where kd_barang like "%'+ecari.Text+'%"');
open;
if (RecordCount=0) then
begin
MessageDlg('Kode Barang '+ecari.text+' Tidak Ditemukan',mtInformation,[mbOK],1);
formshow(sender);
ecari.Clear;
rgcari.ItemIndex:=-1;
exit;
end
else
gbarang.SetFocus;
end
else
begin
sql.Clear;
sql.Add('select * from t_barang where nm_barang like "%'+ecari.Text+'%"');
open;
if (RecordCount=0) then
begin
MessageDlg('Nama Barang '+ecari.text+' Tidak Ditemukan',mtInformation,[mbOK],1);
formshow(sender);
ecari.Clear;
rgcari.ItemIndex:=-1;
exit;
end
else
gbarang.SetFocus;
end;
end;
end;

Nah pada procedure inilah proses pencarian data dijalankan, procedure ini dijalankan pada saat tombol pencarian di klik. Procedure ini yang paling penting, mari kita uraikan penjelasannya satu persatu.

  • Baris 3 : pada prosedure menggunakan Zquery atau Zeos Query untuk menampung dan mengeksekusi perintah SQL.
  • Baris 5 s/d 9 : validasi jika radio group tidak ada yang dipilih atau diklik maka muncul dialog untuk memilih salah satu pilihan pencarian.
  • Baris 11 s/d 26 : merupakan pencarian berdasarkan pilihan radio group pertama yaitu Kode Barang, jadi yang dicari kode barang pada tabel barang. Pencarian ini menggunakan LIKE, supaya hasil pencariannya lebih luas dan dapat mencari kode barang yang memiliki kemiripan sesuai dengan key pencarian atau text yang diketikkan pada edit text pencarian.
  • Baris 13 s/d 15 : perintah SQL pencarian berdasarkan kode barang.
  • Baris 16 s/d 23 : dialog jika pencarian tidak menemukan data barang yang dicari, atau data barang yang dicari tidak ada.
  • Baris 25 : jika data barang yang dicari dapat ditemukan maka setfocus akan langsung mengarah ke grid barang yang menampilkan data barang yang dicari.
  • Baris 28 s/d 42 : pencarian berdasarkan pilihan radio group kedua yaitu Nama Barang.
  • Baris 29 s/d 31 : perintah SQL pencarian berdasarkan nama barang.
  • Baris 32 s/d 39 : dialog jika nama barang yang dicari tidak ditemukan.
  • Baris 41 : setfocus pada grid barang jika nama barang yang dicari telah ditemukan.

procedure tf_barang.tampil;

procedure tf_barang.tampil;
var s:string;
begin
with dm.ZQuery1 do
begin
if RecordCount=0 then
begin
  MessageDlg('Data Mobil Belum Ada',mtInformation,[mbOK],0);
  btambah.SetFocus;
  exit;
end
else
begin
  kb:=FieldByName('kd_barang').AsString;
  nb:=FieldByName('nm_barang').AsString;
  ekd.Text:=FieldByName('kd_barang').AsString;
  enama.Text:=FieldByName('nm_barang').AsString;
  ejml.Text:=inttostr(FieldByName('qty').AsInteger);
  csatuan.Text:=FieldByName('satuan').AsString;
  dttgl.Date:=FieldByName('tgl_beli').AsDateTime;
  eharga.Text:=inttostr(FieldByName('harga').AsInteger);
  s:=ExtractFilePath(Application.ExeName)+'\img\'+FieldByName('foto').AsString;
  if FileExists(s) then
  begin
    blek:=false;
    foto.Picture.LoadFromFile(s);
  end
  else
  begin
    blek:=true;
    foto.Picture.LoadFromFile(pchar(ExtractFilePath(Application.ExeName)+'book.jpg'))
  end;
  sket:=FieldByName('foto').AsString;
end;
end;
end;

Procedure ini digunakan untuk menampilkan data barang pada grid barang ke inputan form barang, namun inputan tetap tidak aktif sebelum tombol ubah di klik, untuk mengubah data barang. Procedure tampil ini dijalankan saat grid barang di klik atau ditekan tombol Enter.

  • Baris 7 s/d 10 : validasi atau dialog muncul jika data barang tidak atau belum ada namun grid barang sudah di klik. Dialog ini juga berfungi sebagai error handling, karena jika data barang kosong maka script dibawahnya dapat menjadi error karena isi dalam field kosong.
  • Baris 13 s/d 34 : menampilkan data barang pada inputan yang tersedia, termasuk foto barang.

procedure Tf_barang.gbarangCellClick;

procedure Tf_barang.gbarangCellClick(Column: TColumn);
begin
tampil;
end;

ketika cell pada grid barang di klik maka langsung akan menjalankan procedure tampil.

Naah sudah komplit fungsi pencarian pada delphi mudah bukan, sekarang tinggal Anda coba dan kembangkan sesuai dengan kebutuhan dan tuntutan. Jika ada salah dan kurangnya atau ada pertanyaan silahkan langsung saja di komen, saya senang sekali kalo ada yang mau komen di blog sederhana saya. So selamat mencoba. šŸ™‚

Sorcecode lengkapnya ada disini

Iklan

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout /  Ubah )

Foto Google+

You are commenting using your Google+ account. Logout /  Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout /  Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout /  Ubah )

Connecting to %s