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