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 :
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;
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], []);
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;
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:
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!
update dan delete ga jalan mas
Post a Comment