Membuat Aplikasi Database Berbasis Table XML Dengan Delphi 2007

Tuesday, May 20, 2008

Umumnya setiap Aplikasi Database menggunakan File Database dengan format umum seperti Microsoft Access, Paradox, DBase atau jika Aplikasi Database Client-Server akan menggunakan Database Software seperti SQL Server, Oracle dan lain sebagainya. nah Pada tutorial pemrograman Delphi kali ini saya akan sharing cara membuat aplikasi Database dengan Table berbasis file XML. Aplikasi ini cocok untuk Aplikasi Database Desktop single user misalnya seperti aplikasi untuk me-manage daftar situs web penting/favorit kamu atau bisa juga untuk me-manage koleksi film DVD yang kamu punya, dan lain2. ini adalah contoh Aplikasi Database berbasis XML sederhana, namun tujuannya dari artikel ini adalah sharing pengetahuan kepada kamu yang mungkin belum mengetahui cara melakukan manipulasi data ke dalam file format XML yang mencakup Retrieve/Find (Select), Append (Insert), Edit (Update), dan Delete Data.



Disini kita akan membuat aplikasi dengan Delphi 2007 untuk me-manage koleksi website favorit kita misalnya. Field-field Data yang kita butuhkan adalah SiteID, SiteURL, dan SiteDesc. Field SiteID adalah ID unik untuk setiap situs, SiteURL adalah alamat URL website dan terakhir SiteDesc adalah deskripsi dari situs ini bisa kita tambahkan sebagai informasi tambahan isi/tema sebuah website.



Dibawah ini adalah table komponen-komponen yang kita butuhkan berserta nilai beberapa propertiesnya:















































































































































































































































Komponen



Properties



Value



Form1



Name



Fmain




Caption



Katalog Web



ClientDataSet



Name



CDS




FieldDefs



0 - SiteID, DataType: ftInteger, Size: 0

1 - SiteURL, DataType: ftString, Size: 50

2 - SiteDesc, DataType: ftString, Size: 255


Setelah itu klik kanan CDS, kemudian pilih Create Dataset. untuk membentuk struktur dataset diatas




FileName



KatalogWeb.xml



DataSource1



Name



DS




DataSet



CDS



GroupBox1



Name



GBsiteList




Caption



Website List



Edit1



Name



ECari



ListBox1



Name



LBSiteList



GroupBox2



Name



GBNew




Caption



Data Baru



Edit2



Name



ESiteID



Edit3



Name



ESiteURL



Memo1



Name



MSiteDesc



Button1



Name



BtnOK




Caption



OK



Button2



Name



BtnCancel




Caption



Cancel



GroupBox3



Name



GBDetail




Caption



Website Details



DBEdit1



Name



DBESiteID




DataSource



DS




DataField



SiteID



DBEdit2



Name



DBESiteURL




DataSource



DS




DataField



SiteURL



DBMemo1



Name



DBMSiteDesc




DataSource



DS




DataField



SiteDesc



BitBtn1



Name



BtnDel



BitBtn



Name



BtnEdit



Form2



Name



FEdit




Caption



Edit Website



Edit4



Name



ESiteID



GroupBox4



Name



GBEdit




Caption



Detail Website




Enable



False



Edit5



Name



ESiteURL



Memo2



Name



MSiteDesc



Button3



Name



BtnOK




Caption



OK



Button4



Name



BtnCancel




Caption



Cancel




ModalResult



mrCancel




Application Interface


Tambahkan beberapa label kemudian Atur komponen-komponen diatas sehingga Interface nya menjadi seperti gambar di bawah ini :


Application Interface Design


Coding


File KatalogWeb.xml akan kita tempatkan satu folder dengan file exe aplikasi ini. Kita akan menambahkan kode Program untuk membuat file KatalogWeb.xml pada saat aplikasi pertama dijalankan untuk itu kita perlu menambahkan kode Program pada event OnCreate Form1 caranya dobel klik Form1 kemudian tambahkan kode Program dibawah ini :




procedure TFMain.FormCreate(Sender: TObject);

var namafile : string;

begin

  CDS.Close;

  //mendapatkan path absolute file KatalogWeb.xml

  namafile := extractfilepath(application.ExeName)+cds.filename;



  if not FileExists(namafile) then CDS.CreateDataSet;

  CDS.Open;



  //mengosongkan item pada SiteList

  LBSiteList.Clear;

  LBSiteList.Items.BeginUpdate;



  //membuka dan menampilkan recordset

  CDS.First;

  while not CDS.Eof do

  begin

    LBSiteList.Items.Add(CDS.FieldByName('SiteURL').AsString);

    CDS.Next;

  end;



  LBSiteList.Items.EndUpdate;

  ESiteID.Text := IntToStr(Succ(LBSiteList.Items.Count));

end;



Variabel NamaFile digunakan untuk menampung path lengkap (absolute path) nama file dari file XML yang akan kita gunakan sebagai tempat penyimpanan data aplikasi ini. function ExtractFilePath(application.ExeName) akan mendapatkan path lengkap dimana file .exe aplikasi ini berada. jadi jika kamu menempatkan aplikasi ini pada folder C:\Programming\Delphi\Database\Katalog Web\WebCatalog.exe misalnya, maka function ini akan menghasilkan string C:\Programming\Delphi\Database\Katalog Web\. Sehingga kode program extractfilepath(application.ExeName)+CDS.filename akan menghasilkan string path lengkap ke file KatalogWeb.xml dalam contoh saya adalah C:\Programming\Delphi\Database\Katalog Web\KatalogWeb.xml.



Menambahkan Data


Dobel klik BtnOK pada form FMain kemudian tambahkan kode Program berikut





procedure TFMain.BtnOKClick(Sender: TObject);

begin

  CDS.AppendRecord([StrToInt(ESiteID.Text), ESiteURL.Text, MSiteDesc.Text]);

  ECari.Clear;



  // refresh listbox daftar web

  LBSiteList.Clear;

  LBSiteList.Items.BeginUpdate;



  //membuka dan menampilkan recordset pada LBSiteList

  CDS.First;

  while not CDS.Eof do

  begin

    LBSiteList.Items.Add(CDS.FieldByName('SiteURL').AsString);

    CDS.Next;

  end;

  LBSiteList.Items.EndUpdate;

  ESiteID.Text := IntToStr(Succ(LBSiteList.Items.Count));



  ESiteURL.Clear;

  msitedesc.clear;

  ESiteURL.SetFocus;

end;



Mencari Data


masukan kode Program berikut pada event OnChange komponen ECari





procedure TFMain.ECariChange(Sender: TObject);

const

  SUBSTRING = 'Substring(SiteURL, 1, %d) = ''%s''';

var

  URLPilih: string;

begin

  CDS.Filter := Format(SUBSTRING, [Length(ECari.Text), ECari.Text]);

  //mem-filter dataset jika teks ECari tidak kosong

  CDS.Filtered := ECari.Text <> '';



  LBSiteList.Clear;

  LBSiteList.Items.BeginUpdate;



  //membuka dan menampilkan recordset

  CDS.First;

  while not CDS.Eof do

  begin

    LBSiteList.Items.Add(CDS.FieldByName('SiteURL').AsString);

    CDS.Next;

  end;

  LBSiteList.Items.EndUpdate;



  //mendapatkan nilai SiteID selanjutnya (Successor)

  //berdasarkan jumlah item yg ada di LBSiteList

  ESiteID.Text := IntToStr(Succ(LBSiteList.Items.Count));



  URLPilih := CDS.FieldByName('SiteURL').AsString;

  LBSiteList.ItemIndex := LBSiteList.Items.IndexOf(URLPilih);

end;


Incremental Search


Menampilkan Detail Data Website ketika item di LBSiteList diklik


Dobel klik LBSiteList, masukan kode Program berikut




if LBSiteList.ItemIndex <> -1 then

  CDS.Locate('SiteURL', LBSiteList.Items[LBSiteList.ItemIndex], []);


Application Interface - Runtime

Mengedit Data


Karena Aplikasi ini akan memanggil Form FEdit dari FMain, maka terlebih dahulu deklarasikan unit UEdit di Unit Umain. caranya ketikan Uses UEdit; di bawah implementation pada unit Umain. Setelah itu dobel klik BtnEdit kemudian masukan kode Program berikut pada Unit UMain.pas (Fmain)




with TFEdit.Create(Self) do

begin

  ESiteID.Text := cds.FieldByName('SiteID').AsString;

  ESiteURL.Text := cds.FieldByName('SiteURL').AsString;

  MSiteDesc.Text := cds.FieldByName('SiteDesc').AsString;

  ShowModal;



  if ModalResult = mrOK then

  begin

    CDS.Edit;

    cds.Fields[1].Value := ESiteURL.Text;

    cds.Fields[2].Value := MSiteDesc.Text;

    cds.Post;

    ECari.Clear;



    LBSiteList.Clear;

    LBSiteList.Items.BeginUpdate;

    CDS.First;

    LBSiteList.Clear;

    while not CDS.Eof do

    begin

    LBSiteList.Items.Add(CDS.FieldByName('SiteURL').AsString);

    CDS.Next;

    end;



  LBSiteList.Items.EndUpdate;

  end;

  Free;

end;



dan kode Program berikut pada unit UEdit.pas (FEdit)




procedure TFEdit.BtnOKClick(Sender: TObject);

const

  valid: array[Boolean] of TModalResult = (mrNone, mrOK);

begin

  //modalResult = mrOK jika ESiteURL dan MSiteDesc diisi

  //selain dari itu modalResult = mrNone

  ModalResult := valid[(ESiteURL.Text <> '') and (MSiteDesc.Text <> '')];

  if ModalResult = mrNone then

  MessageDlg('URL dan deskripsi situs harus diisi',

    mtInformation, [mbOK], 0);

end;


Edit Data

Menghapus Data


Dobel klik button btnDel kemudian tambahkan kode Program berikut





const

  konfirmasi = 'Anda akan menghapus alamat URL :'#13;

begin

  //konfirmasi hapus Record

  if MessageDlg(konfirmasi +

    LBSiteList.Items[LBSiteList.ItemIndex] + #13'Lanjutkan?',

    mtConfirmation, mbYesNo, 0) = mrYes then

  begin

    CDS.Delete;

    LBSiteList.Clear;

  LBSiteList.Items.BeginUpdate;



  //membuka dan menampilkan recordset

  CDS.First;

  while not CDS.Eof do

  begin

    LBSiteList.Items.Add(CDS.FieldByName('SiteURL').AsString);

    CDS.Next;

  end;

  LBSiteList.Items.EndUpdate;

  ESiteID.Text := IntToStr(Succ(LBSiteList.Items.Count));

  end;

end;





selengkapnya kamu bisa download Source Code Aplikasi ini disini.

2 comments:

infogue said...

artikel anda bagus dan menarik, artikel anda:
http://database.infogue.com/
http://database.infogue.com/membuat_aplikasi_database_berbasis_table_xml_dengan_delphi_2007

anda bisa promosikan artikel anda di www.infogue.com yang akan berguna untuk semua pembaca. Telah tersedia plugin/ widget vote & kirim berita yang ter-integrasi dengan sekali instalasi mudah bagi pengguna. Salam!

Unknown said...

update dan delete ga jalan mas

Recent Comments

Tags Cloud

Blogumulus by Roy Tanck and Amanda Fazani