Anda di halaman 1dari 38

BASIS DATA dan KOMPONEN BASIS DATA

Delphi mendukung banyak jenis basis data. Basis data default yang digunakan adalah Paradox dan dBase, tetapi delphi tidak membatasi pengguna dalam pemilihan basis data bagi aplikasi yang akan dibuatnya. Modul ini menggunakan Ms. Access sebagai basis datanya. Basis data ini dipilih karena Anda Anda sekalian sudah familiar dengan basis data produk Microsoft ini. Untuk menangani tabel-tabel Paradox dan dBase, Delphi menggunakan mesin yang dinamakan BDE (Borland Database Engine). BDE juga dapat berhubungan dengan SQL Server seperti Oracle dan Interbase untuk mengakses data source lain melalui ODBC(Open DataBase Connectivity). Dikarenakan ODBC bekerja dengan sangat lambat, maka Microsoft menciptakan ADO(ActiveX Data Object). ADO adalah sekumpulan objek COM 1) yang mengakses data melalui provider OLE DB (Object Linking Embeded Data Base), cara yang sama akan digunakan utk. mengakses basis data (Ms. Access) Anda.
1)

COM is the Component Object Model, a Windows-based distributed object architecture designed to provide object interoperability using predefined routines called interfaces. COM applications use objects that are implemented by a different process

Berikut ini komponen-komponen Delphi berikut yang akan digunakan dalam modul ini untuk operasi basis data menggunakan basis data Ms. Access (khususnya).

KOMPONEN DATA ACCESS


Komponen Data Access adalah komponen non-visual. Merupakan komponen yang secara langsung berhubungan dengan database (file secara fisik). Komponen data access hanya melakukan akses dengan database, seperti membuka tabel, membaca record, mengubah record dan sebagainya tanpa memperhatikan apa yang ditampilkan pada pengguna.

Keterangan: No 1 2 3 4 Komponen Data Source Table Query StoredProc Kegunaan Bertindak sebagi penghubung antara data access component dengan komponen-komponen visual. Bertindak sebagai DataSource yang mengakses record dari tabel. Bertindak sebagai DataSource yang mengakses record dari tabel berdasarkan perintah SQL query. Bertindak sebagai DataSource yang mengakses record dari tabel berdasarkan perintah Stored Procedure (perintah SQL Query yang telah dibuat sebelumnya) untuk database server. Menciptakan client/server connection dengan sebuah database dalam session. Menciptakan sebuah session dalam sebuah aplikasi multithreaded database. Digunakan jika kita ingin memindahkan record/field dari sebuah tabel ke tabel lainnya secara cepat (seluruhnya). Menjalankan perinah SQL seperti INSERT, UPDATE dan DELETE. Bertindak sebagai DataSource yang mengakses record dari tabel yang bersarang.

5 6 7 8 9

Database Session BatchMove UpdateSQL NestedTable

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-1

KOMPONEN DATA CONTROLS


Komponen Data Control adalah komponen visual yang juga merupakan komponen data-aware atau disebut juga visual-controls. Komponen ini melakukan interaksi antara pengguna dengan datasource (data source adalah salah satu komponen data data access components). Dengan komponen ini kita dapat menyusun tampilan untuk pemakai. Misalnya menampilkan record dan menampilkan image.

1 2
Keterangan: No 1

3 4

5 6

7 8

9 10

11 12

13 14

15

Komponen DBGrid

DBNavigator

DBText

DBEdit

5 6

DBMemo DBImage

DBListBox

DBComboBox

DBCheckBox

10 11

DBRadioGroup DBLookupListBox

12

DBLookupCombobox

13

DBRichEdit

Kegunaan Komponen visual untuk grid dinamis yang digunakan untuk menampilkan dan meng-edit data dalam bentuk tabular menyerupai tampilan spreadsheet excel. Komponen visual yang terdiri dari sejumlah tombol-tombol navigasi dan tombol operasi basis data seperti: insert, delete, edit dan post. Komponen visual berbentuk label, digunakan untuk menampilkan isi dari sebuah field pada record yang sedang aktif. Komponen visual berbentuk kotak edit, digunakan untuk menampilkan isi dari sebuah field pada record yang sedang aktif. Komponen visual memo, digunakan untuk menampilkan isi dari sebuah field pada record yang sedang aktif. Komponen visual berbentuk kotak gambar, digunakan untuk menampilkan, memotong atau menempelkan citra bitmapped BLOB (Binary Large OBject) ke dan dari record yang sedang aktif. Komponen visual berbentuk list box, box yang dapat digulung. Digunakan untuk menampilkan nilai-nilai sebuah kolom dari sebuah tabel. Komponen visual berbentuk list, box yang dapat digulung. Digunakan untuk menampilkan nilai-nilai sebuah kolom dari sebuah tabel, nilai dari kolom tersebut dapat di-edit. Komponen visual berbentuk check box, digunakan untuk menampilkan atau mengubah sebuah data field bertipe boolean pada record yang sedang aktif. Komponen visual untuk menampilkan sejumlah pilihan berbentuk radio button. DBLookupListBox adalah sebuah komponen visual berbentuk list box dimana item-item yang ditampilkan dapat diambil dari sebuah dataset, secondary data source, data field atau key. DBLookupListBox adalah sebuah komponen visual berbentuk combo box dimana item-item yang ditampilkan dapat diambil dari sebuah dataset, secondary data source, data field atau key. DBRichEdit adalah sebuah multiline edit control yang dapat digunakan untuk menampilkan dan meng-ubah sebuah rich

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-2

14

DBCtrlGrid

15

DBChart

edit memo field dalam sebuah dataset. DBCtrlGrid adalah sebuah control yang dapat menampilkan banyak field dari banyak record dalam sebuah format tabular grid. Tiap cell dalam sebuah grid menampilkan banyak fields dari sebuah record. Untuk menampilkan data dalam bentuk grafik.

KOMPONEN ADO
The components on the ADO page of the Component palette let you connect to database information using ActiveX Data Objects (ADO)

Keterangan: No 1 Komponen ADOConnection Keterangan Digunakan untuk membangun koneksi dan menyediakan berbagai layanan dengan basis data melalui ADO. Menjalankan perintah SQL pada basis data ADO. Menampilkan data dari satu atau lebih tabel dalam sebuah basis data ADO dan mengijinkan komponenkomponen visual untuk memanipulasi data yang ada dengan cara menghubungkan komponen-komponen visual tersebut dengan dengan komponen data source.Komponen ini dapat digunakan untuk menggantikan komponen ADOTable, ADOQuery atau ADOStoredProc. Menyajikan data dari sebuah tabel pada sebuah basis data melalui ADO dan mengijinkan komponenkomponen visual untuk memanipulasi data yang ada dengan cara menghubungkan komponen-komponen visual tersebut dengan dengan komponen data source. Menggunakan perintah-perintah SQL untuk menampilkan data dari sebuah tabel fisik pada basis data melalui ADO dan mengijinkan komponenkomponen visual untuk memanipulasi data yang ada dengan cara menghubungkan komponen-komponen visual tersebut dengan dengan komponen data source. Digunakan untuk mengakses stored Procedure (perintah tersimpan) pada server melalui ADO. Digunakan untuk mengelola sejumlah data ketika sebuah Objek recordset berpindah dari satu proses atau mesin ke proses atau mesin lainnya. Gunakanlah TRDSConnection ketika membangun multi-tier applications yang menggunakan bussiness Object (Applications Servers).

2 3

ADOCommand ADODataSet

ADOTable

ADOQuery

6 7

ADOStoreProc RDSConnection

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-3

MEMBANGUN BASIS DATA


Pertama-tama buatlah basis data Anda pada Access (Aktifkan Ms.Access), simpan dengan nama Barang.mdb. Berikut ini struktur tabelnya: Tabel Supplier Field Type Size 1 Kode_Supplier * Text 7 Nama_Supplier Text 50 Alamat Text 100 Kota Text 30 Kode_pos Number Long Int. Telepon Number Long Int. Contact_Person Text 40 Tabel Stok Field Type Size Kode_Barang* Text 6 Desk_Barang Text 100 n Kode_Supplier Text 7 Stok_tersedia Number Long Int. Stok_minimum Number Long Int. Harga Number [Format = Rp. #] Long Int.

MENCIPTAKAN ANTARMUKA
Basis data digunakan untuk menyimpan data, untuk memanipulasi data yang disimpan pada basis data kita terlebih dahulu harus mengetahui bagaimana mengakses basis data yang telah dibuat. Perhatikan langkah-langkah menghubungkan Basis data Ms. Access pada Delphi menggunakan ADO. Tempatkan komponen-komponen berikut, sehingga tampilannya menyerupai gambar di bawah ini:

DataSource ADOTable

ADOConnection

DBGrid

DBNavigator
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-4

Klik ganda ikon ADOConnection1, setelah muncul kotak dialog (gambar 1) berikut klik pilihan Use Connection String lalu klik tombol Build...

Pada pilihan OLE DB Provider(s); (gambar 2), pilih Microsoft Jet 4.0 OLE DB Provider Lalu klik Next >> Selanjutnya akan Tab Connection (gambar 3) akan aktif. Pada Tab ini klik tombol builder (Tombol dengan tiga buah titik)Di sebelah kolom isian Select or Enter a database name.

4 3

Cari dan pilihlah basis data yang akan Anda Gunakan (gambar 4), setelah dipilih klik Tombol Test Connection untuk menguji apakah Anda sudah terkoneksi dengan basis data(gambar 5).
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-5

Selanjutnya ubah properti dari komponen berikut: Object/Komponen ADOConnection1 ADOTable1 Properti/Event LoginPrompt = false Connection = ADOConnection1 TableName = Supplier Active = True DataSource1 DataSet = ADOTable1 DBGrid1 DataSource = DataSource1 ReadOnly = True DBNavigator1 DataSource = DataSource1 ShowHints = True DBEdit1 DataSource = DataSource1 DataField = Kode_Supplier DBEdit2 DataSource = DataSource1 DataField = Nama_Supplier DBEdit3 DataSource = DataSource1 DataField = Alamat DBEdit4 DataSource = DataSource1 DataField = Kota DBEdit5 DataSource = DataSource1 DataField = Kode_Pos DBEdit6 DataSource = DataSource1 DataField = Telepon DBEdit7 DataSource = DataSource1 DataField = Contact_person Untuk Label1 s/d Label8 ubah properti Caption menjadi seperti gambar di bawah ini, Untuk Font sesuaikan dengan selera Anda.

Berikut ini nama-nama tombol pada DBNavigator: Nama Tombol No 1 First 2 Prior(Previous) 3 Next 4 Last 5 Insert 6 Delete 7 Edit 8 Post(Save) 9 Cancel 10 Refresh

Bagaimana memilih Tombol DBNavigator yang akan ditampilkan? Bagaimana memindahkan fungsi DBNavigator ke dalam komponen Button?

10

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-6

Berikut ini gambar pembantu untuk mengubah Connection dan memilih TableName.

Simpanlah semua project Anda (Save Unit dan Project). Setelah disimpan jalankan Program Anda(F9).

MENGGUNAKAN KOMPONEN ADOTABLE


Berikut ini kita coba untuk membuat aplikasi untuk mengisi tabel Stok, pada kasus ini kita menggunakan dua buah komponen tabel dan DataSource. Data Kode_suplier yang akan disimpan pada tabel Stok didapat dari field kode_supplier pada tabel supplier untuk menampilkan data Kode_supplier pada tabel Supplier kita menggunakan komponen DblookupCombobox. Sisanya meng-akses tabel Stok. Siapkan antarmuka-nya, misalkan seperti gambar dibawah ini:

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-7

Ubah properti dan lengkapi event dari komponen-komponen di atas. Object/Komponen Form1 Properti/Event Tambahkan Variabel Tambah, ubah : boolean; Set koneksi ke basis data Anda. LoginPrompt = False Connection = ADOConnection1 TableName = Supplier Active = True DataSet = ADOTable1 Connection = ADOConnection1 TableName = Stok Active = True DataSet = ADOTable2 ListSource = DataSource1 ListField = Kode_supplier KeyField = Kode_Supplier DataSource = DataSource2 ReadOnly = True; EVENT OnCellClick // tampilkan data yang ada ke kolom isian edit1.Text := dbgrid1.Fields[0].AsString; edit2.Text := dbgrid1.Fields[1].AsString; DBLookupCombobox1.Text := dbgrid1.Fields[2].AsString; edit3.Text := dbgrid1.Fields[3].AsString; edit4.Text := dbgrid1.Fields[4].AsString; edit5.Text := dbgrid1.Fields[5].AsString; Edit1 s/d Edit5 Text = (dikosongkan)

Contoh penempatan variabel lihat gambar halaman 19

ADOConnection1

ADOTable1

DataSource1 ADOTable2

DataSource2 DBLookupCombobox1

DBGrid1

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-8

Button1

Caption = &Tambah EVENT OnClick // kosongkan kolom isian edit1.Text := ''; edit2.Text := ''; edit3.Text := ''; edit4.Text := ''; edit5.Text := ''; Button2.Enabled := false; // tombol Ubah dinon-aktifkan Button3.Enabled := false; // tombol Hapus dinon-aktifkan Button4.Enabled := true; // tombol Simpan diaktifkan Tambah := true; // mode tambah diaktifkan

Button2

Caption = &Ubah EVENT OnClick Button1.Enabled Button2.Enabled Button3.Enabled Button4.Enabled := := := := false; // tombol Tambah dinon-aktifkan false; // tombol Ubah dinon-aktifkan false; // tombol Hapus dinon-aktifkan true; // tombol Simpan diaktifkan

Ubah := true; // mode ubah diaktifkan Button3 Caption = &Hapus EVENT OnClick if edit1.Text = '' then begin Showmessage('Pilih record yang akan dihapus!'); exit; //keluar dari procedure ini end else begin
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-9

if (messagedlg('Anda yakin untuk menghapus record dengan kode barang '+ dbgrid1.Fields[0].AsString +'?',mtConfirmation,[mbYes, mbNo],0))= mrYes Then begin // jika tombol Yes ditekan maka ADOTable2.Delete; // hapus record terpilih dbgrid1cellclick(dbgrid1.Columns[0]);//panggilprocedureDBGrid1CellClick(Column:TColumn) end; end; Button4 Caption = &Simpan EVENT OnClick if Tambah = true then begin ADOTable2.InsertRecord([edit1.text, edit4.text, edit5.text]); edit2.text, dblookupcombobox1.text, edit3.text,

Button2.Enabled := true; // tombol Ubah diaktifkan Button3.Enabled := true; // tombol Hapus diaktifkan Button4.Enabled := false; // tombol Simpan dinon-aktifkan Tambah := false; // mode tambah di non-aktifkan end; if ubah = true then begin ADOTable2.Edit; ADOTable2.FieldByName('kode_barang').AsVariant := edit1.Text; ADOTable2.FieldByName('desk_barang').AsVariant := edit2.Text; ADOTable2.FieldByName('kode_supplier').AsVariant := dblookupcombobox1.Text; ADOTable2.FieldByName('stok_tersedia').AsVariant := edit3.Text; ADOTable2.FieldByName('stok_minimum').AsVariant := edit4.Text; ADOTable2.FieldByName('harga').AsVariant := edit5.Text; ADOTable2.Post; Button1.Enabled := true; // tombol Tambah diaktifkan Button2.Enabled := true; // tombol Ubah diaktifkan Button3.Enabled := true; // tombol Hapus diaktifkan
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-10

Button4.Enabled := false; // tombol Simpan dinon-aktifkan ubah := false; // mode tambah di non-aktifkan end; Button5 Caption = &First EVENT OnClick ADOTAble2.First; dbgrid1cellclick(dbgrid1.Columns[0]); //panggil procedureDBGrid1CellClick(Column : TColumn) Button6 Caption = &Prior EVENT OnClick ADOTAble2.Prior; dbgrid1cellclick(dbgrid1.Columns[0]); //panggil procedureDBGrid1CellClick(Column : TColumn) Button7 Caption = &Next EVENT OnClick ADOTAble2.Next; dbgrid1cellclick(dbgrid1.Columns[0]); //panggil procedureDBGrid1CellClick(Column : TColumn) Button8 Caption = &Last EVENT OnClick ADOTAble2.Last; dbgrid1cellclick(dbgrid1.Columns[0]); //panggil procedureDBGrid1CellClick(Column : TColumn) Untuk Label1 s/d Label7 ubah Caption-nya menjadi seperti tampilan berikut ini.

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-11

Setelah properti dari komponen-komponen yang ada telah diubah maka tampilan program Anda akan seperti gambar di atas. SAVE ALL lalu Run...

MENGENAL SQL
SQL Singkatan dari Structured Query Language dan kadang-kdang dibaca dengan sequel. SQL adalah bahasa database yang ampuh dan dapat dipakai untuk menyelesaikan masalahmasalah yang besar. Pada saat ini SQL menjadi standar untuk bekerja dengan database Client/Server. SQl mempunyai fungsi-fungsi berikut: - Data Definiton. Anda dapat mendefinisikan struktur tabel, tipe data dari setiap field di dalam tabel dan hubungan referensial dari field-field tertentu ke field-field pada tabel lain. - Data Retrieval. Aplikasi client memakai SQL, untuk meminta data dari server. SQL juga mengijinkan client mendefinisikan data yang akan dibaca dan bagaimana data tersebut di-retrieve. - Data Integrity. Anda dapat menjaga integritas data dengan berbagai konstrain integritas sebagai bagian dari tabel atau terpisah dari tabel. - Data Processing. SQL mengijinkan client mengubah, menambah, menghapus data dari server. - Security. Anda dapat memproteksi data dengan mendefinisikan hak akses, view dan batasan pengaksesan pada objek-objek database. - Concurent access. SQl mengatur pengaksessan secara simultan sehingga satu pengaksessan tidak mengganggu pengaksesan lainnya. SQL dapat diakses dari delphi dan Delphi dapat memakai perintah SQL untuk manipulasi tabel. Untuk bahasa SQL dari Delphi menggunakan ADO Anda memerlukan komponen ADOQuery. Perintah-perintah SQL selengkapnya dapat dilihat pada Local SQl help (Start >> Program >> Borland delphi 5 >> Help >> Borland Database Engine >> Local SQL Guide).

Menggunakan ADOQUERY
Hal penting dari Komponen ADOQuery adalah property SQL. Property tersebut dapat diakses dari Object Inspector pada saat mendesain form atau dari program(dituliskan melalui coding). Property SQL bertipe TString artinya berisi daftar string. Jika Anda menggunakan property SQl pada saat mendesain form, Anda memasukan SQL statis. Sebaliknya SQL dinamik mengubah pernyataan-pernyataan SQL pada saat program dijalankan berdasarkan berbagai kondisi. Program berikut ini menggunakan konsep SQL dinamik.
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-12

Siapkan antarmuka seperti dibawah ini:

Ubah properti dan komponennya sehingga menyerupai gambar berikut ini:

Daftar properti dan event yang di ubah dapat dilihat pada halaman berikut.

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-13

Object/Komponen Form1

Properti/Event Ketikkan procedure TampilkanSemuaDataStok; (sebelum kalimat Private) Lalu ketik coding berikut (setelah kalimat implementation dan {$R. *DFM}) procedure TForm1.TampilkanSemuaDataStok; begin //tampilkan semu data pada tabel Stok ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT * FROM stok'); ADOQuery1.ExecSQL; ADOQuery1.Open; end; Lihat gambar halaman Tambahkan Variabel Tambah, ubah : boolean; Kodebarang : string; EVENT OnActive procedure TForm1.FormActivate(Sender: TObject); var akhir : string; // tempat simpan record terakhir begin // ambil data kode supplier dari tabel suplier ADOQuery1.Close; // tutup Query ADOQuery1.SQL.Clear; // bersihkan perintah SQl sebelumnya ADOQuery1.SQL.Add('SELECT kode_suplier FROM suplier'); ADOQuery1.ExecSQL; // jalankan perintah SQL ADOQuery1.Open; // Aktifkan Query // bersihkan kolom pilihan kode supplier Combobox1.Text := ''; Combobox1.Items.Clear; // tempatkan pointer data ke record paling akhir ADOQuery1.Last; // simpan data ke variabel akhir akhir := ADOQuery1.Fields[0].AsString;

19

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-14

ADOQuery1.First; // tempatkan pointer ke record awal Combobox1.Items.Add(ADOQuery1.Fields[0].AsString); repeat ADOQuery1.Next; Combobox1.Items.Add(ADOQuery1.Fields[0].AsString); until ADOQuery1.Fields[0].AsString = akhir; //panggil procedure TampilkanSemuaDataStok TampilkanSemuaDataStok; end; ADOConnection1 Set koneksi ke basis data Anda (Barang.mdb). LoginPrompt = False Connection = ADOConnection1 DataSet = ADOQuery1 Text = (dikosongkan) DataSource = DataSource1 ReadOnly = True; EVENT OnCellClick // tampilkan data yang ada ke kolom isian edit1.Text := dbgrid1.Fields[0].AsString; edit2.Text := dbgrid1.Fields[1].AsString; combobox1.Text := dbgrid1.Fields[2].AsString; edit3.Text := dbgrid1.Fields[3].AsString; edit4.Text := dbgrid1.Fields[4].AsString; edit5.Text := dbgrid1.Fields[5].AsString; Edit1 s/d Edit5 Button1 Text = (dikosongkan) Caption = &Tambah

ADOQuery1 DataSource1 Combobox1 DBGrid1

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-15

EVENT OnClick // kosongkan kolom isian Combobox1.Text := ''; edit1.Text := ''; edit2.Text := ''; edit3.Text := ''; edit4.Text := ''; edit5.Text := ''; Button2.Enabled := false; // tombol Ubah dinon-aktifkan Button3.Enabled := false; // tombol Hapus dinon-aktifkan Button4.Enabled := true; // tombol Simpan diaktifkan Tambah := true; // mode tambah diaktifkan Button2 Caption = &Ubah EVENT OnClick Button1.Enabled Button2.Enabled Button3.Enabled Button4.Enabled := := := := false; // tombol Tambah dinon-aktifkan false; // tombol Ubah dinon-aktifkan false; // tombol Hapus dinon-aktifkan true; // tombol Simpan diaktifkan

Ubah := true; // mode ubah diaktifkan kodebarang := edit1.Text; //simpan kode barang yang akan diubah datanya Button3 Caption = &Hapus EVENT OnClick if edit1.Text = '' then begin Showmessage('Pilih record yang akan dihapus!'); exit; //keluar dari procedure ini end else begin if (messagedlg('Anda yakin untuk menghapus
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

record

dengan

kode

barang

'+

II-16

dbgrid1.Fields[0].AsString +'?',mtConfirmation,[mbYes, mbNo],0))= mrYes Then begin // jika tombol Yes ditekan maka ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('DELETE * FROM stok WHERE kode_barang = :v1'); ADOQuery1.Parameters[0].Value := edit1.Text; ADOQuery1.ExecSQL; TampilkanSemuaDataStok; dbgrid1cellclick(dbgrid1.Columns[0]);//panggil TColumn) end; end; Button4 Caption = &Simpan EVENT OnClick if Tambah = true then begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('INSERT INTO stok (kode_barang, desk_barang, kode_supplier, stok_tersedia, stok_minimum, harga) VALUES (:v0, :v1, :v2, :v3, :v4, :v5)'); ADOQuery1.Parameters[0].Value := edit1.Text; ADOQuery1.Parameters[1].Value := edit2.Text; ADOQuery1.Parameters[2].Value := combobox1.Text; ADOQuery1.Parameters[3].Value := edit3.Text; ADOQuery1.Parameters[4].Value := edit4.Text; ADOQuery1.Parameters[5].Value := edit5.Text; ADOQuery1.ExecSQL; TampilkanSemuaDataStok; Button2.Enabled := true; // tombol Ubah diaktifkan Button3.Enabled := true; // tombol Hapus diaktifkan Button4.Enabled := false; // tombol Simpan dinon-aktifkan Tambah := false; // mode tambah di non-aktifkan
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

procedureDBGrid1CellClick(Column

II-17

end; if ubah = true then begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('UPDATE stok SET kode_barang = :v0, desk_barang = :v1, kode_supplier= :v2, stok_tersedia = :v3, stok_minimum = :v4, harga = :v5 WHERE kode_barang = :v6'); ADOQuery1.Parameters[0].Value := edit1.Text; ADOQuery1.Parameters[1].Value := edit2.Text; ADOQuery1.Parameters[2].Value := combobox1.Text; ADOQuery1.Parameters[3].Value := edit3.Text; ADOQuery1.Parameters[4].Value := edit4.Text; ADOQuery1.Parameters[5].Value := edit5.Text; ADOQuery1.Parameters[6].Value := kodebarang; ADOQuery1.ExecSQL; TampilkanSemuaDataStok; Button1.Enabled Button2.Enabled Button3.Enabled Button4.Enabled := := := := true; // tombol Tambah diaktifkan true; // tombol Ubah diaktifkan true; // tombol Hapus diaktifkan false; // tombol Simpan dinon-aktifkan

ubah := false; // mode tambah di non-aktifkan end; Button5 Caption = &First EVENT OnClick ADOQuery1.First; dbgrid1cellclick(dbgrid1.Columns[0]); //panggil procedureDBGrid1CellClick(Column : TColumn) Button6 Caption = &Prior EVENT OnClick ADOQuery1.Prior; dbgrid1cellclick(dbgrid1.Columns[0]); //panggil procedureDBGrid1CellClick(Column : TColumn) Button7 Caption = &Next

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-18

EVENT OnClick ADOQuery1.Next; dbgrid1cellclick(dbgrid1.Columns[0]); //panggil procedureDBGrid1CellClick(Column : TColumn) Button8 Caption = &Last EVENT OnClick ADOQuery1.Last; dbgrid1cellclick(dbgrid1.Columns[0]); //panggil procedureDBGrid1CellClick(Column : TColumn) Untuk Label1 s/d Label7 ubah Caption-nya menjadi seperti tampilan pada halaman 13.

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-19

Tuliskan Procedure/function yang Anda buat disini.

Agar variabel pada form ini dapat diakses oleh form lain, tuliskan variabel dan tipe datanya di sini. Kalimat {Public Declaration} boleh Anda hapus.

Tuliskan Variabel1) dan Tipe datanya yang Anda buat disini. (setelah variable Form1 : TForm1;) Variabel yang diletakan di sini dapat diakses oleh semua procedure yang terdapat pada Form ini dan tidak dapat diakses oleh Form lain.
1)

Tuliskan Procedure lengkap yang telah Anda deklarasikan disini.

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-20

Dinamic Connections Using ADOConnection


Connection string adalah property pada ADOConnection, property ini berguna sebagai parameter penghubung dengan basis data melalui ADO. Pada contoh-contoh sebelumnya kita menggunakan cara koneksi statis, maksudnya koneksi ke basisdata dilakukan pada saat merancang program. Berikut ini cara mengkoneksikan basis data secara dinamis. Dengan cara ini Anda tidak perlu membongkar program untuk menghubungkan antarmuka dengan basis data.

Gambar kiri merupakan rancangan antarmuka dan gambar kanan hasil dari rancangan.. Berikut ini daftar properti dan event yang diubah pada rancangan antarmuka. Object/Komponen Property/Event ADOConnection1 Memo1 = klik tombol Ambil untuk menyeting lokasi basis data Anda.. ReadOnly = true Picture = {pilih gambar Anda..} Lines

Image1 [Page Additional] OpenPictureDialog [Page Dialogs] Button1

Caption = &Ambil EVENT OnClick Tambahkan sebuah variabel ConnString : String; Sehingga procedure lengkap-nya akan terlihat sebagaimana berikut procedure TForm1.Button1Click(Sender: TObject); var connString : string; begin if opendialog1.Execute then ConnString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ opendialog1.FileName +';Persist Security Info=False'; ADOConnection1.ConnectionString := ConnString; ADOConnection1.LoginPrompt := false; // ubah property LoginPrompt menjadi false ADOConnection1.Connected := true; //aktifkan koneksi dengan basis data Showmessage(Koneksi Database diaktifkan); end;

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-21

Membuat Menu
Berikut ini cara membuat menu utama pada delphi, tempatkan komponen MainMenu [Page Standard]. Untuk mengisikan menu, klik kanan komponen MainMenu1 pilih MenuDesigner. Lihat gambar dibawah ini, selain dengan klik kanan, MenuDesigner dapat ditampilkan dengan cara Klik Ganda pada komponen MainMenu.

Selanjutnya Delphi akan menampilkan dialog Menu designer, seperti yang terlihat pada gambar dibawah ini. Untuk Membuat menu Anda Klik lokasi menu yang akan ditampilkan (klik bagian kotak dengan garis putus-putus di sisi kanan atau bawah), setelah ditandai lokasi menu akan berwarna biru, isi properti Caption dengan menu yang Anda inginkan.

Tanda separator dibuat dengan mengisikan Caption dengan tanda minus (-)

ShortCut Dapat Anda pilih pada Properti ShortCut

Membuat Sub Menu


Untuk membuat sub menu, tunjuk menu yang akan dibuatkan sub menu-nya lalu klik kanan, pilih Create Submenu. Untuk lebih jelasnya lihat gambar pada halaman selanjutnya...

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-22

perlakuan untuk menambah sub menu sama dengan menambahkan menu.

Buatlah menu berikut: File Input > -------Exit Setting PathDB Help

Data Supplier Data Stok

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-23

Menggabungkan Project
Apabila Anda bekerja secara team, dimana setiap orang memiliki tugas yang berbeda dan pada akhirnya aplikasi yang Anda buat harus digabungkan menjadi sebuah aplikasi utama. Ada beberapa persyaratan yang harus dipenuhi dalam pengabungan project, diantaranya: 1. Setiap nama Form pada project anak sebaiknya berbeda dengan nama Form pada project utama. 2. Nama Form dan Unit yang digunakan pada setiap project anak harus berbeda satu sama lainnya. 3. Apabila program aplikasi menggunakan basis data gunakan Database yang sama, baik nama basis data, nama table-tabel dalam basis data dan struktur dari tabel-tabel yang digunakan. Berikut ini langkah-langkah mengabungkan Project. Klik Tombol AddFileToProject (lihat gambar).

Selanjutnya akan muncul dialog Add to Project. Melalui dialog ini pilih file (*.Pas) yang akan digabungkan, setelah dipilih tekan tombol Open (pada gambar di bawah ini tombol Buka).

Apabila muncul Error seperti yang terlihat pada halaman berikut, berarti Pada project utama telah memiliki nama Form atau Unit yang sama dengan file project yang akan digabung.

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-24

Nama yang sama

Jika yang sama adalah nama Form, maka Anda tinggal mengubah nama dari salah satu Form (yang diubah dapat nama dari form pada Project utama atau nama dari Project anak). Untuk mengganti nama dari From adalah dengan mengubah property Name (lihat gambar), klik form yang akan diganti namanya, setelah nama diganti lalu save.

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-25

Menghubungkan Unit/Form
Setelah semua file project anak sudah tergabung pada Project Utama selanjutnya, kita harus menghubungkan unit/form induk dengan unit/form anak. Fungsi dari menghubungkan unit/Form ialah untuk memudahkan dalam pemanggilan Form. Caranya pada menu utama pilih File >> Use Unit (shortcut-nya = Alt+F11). Setelah muncul dialog UseUnit pilihlah unit yang akan digabungkan, lalu tekan OK.

Selanjutnya Delphi akan menambahkan klausa Uses NamaUnit; pada Code editor. PS : Pada contoh ini MenuUtama (Unit1) akan menggunakan/terhubung dengan Form1 (SetConn). Dengan demikian Form MenuUtama dapat memanggil Form1 tetapi Form1 Tidak dapat memanggil MenuUtama. Agar Form2 dapat MenuUtama. Aktifkan MenuUtama. terhubung Form2 lalu dengan UseUnit

Apabila sebuah Form sebut saja Form1 terhubung dengan Form2, maka dari Form1 Programmer dapat memakai procedure yang ada di dalam Form2 dan mengubah property Form dan Komponen yang ditempatkan pada Form2. Sekarang Gabungkan semua Form yang telah Anda buat sebelumnya (DataSupplier, DataStok dan Setting DB). PR: Buatlah dua buah Form, Form1 menggunakan Komponen MainMenu. 1. Form1 memanggil Form2. 2. Form1 mengubah Properti Form2 3. Form1 mengubah property yang ada pada Form2.
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-26

Mutiple Document Interface (MDI)


Hasil pada kasus sebelumnya (halaman 25), Form yang dipanggil akan menutupi form pemanggil. Tipe aplikasi seperti ini disebut Single Document Interface (SDI), tipe lain dari penyusunan Dokumen adalah Multiple Document Interface (MDI). Form dalam MDI dibedakan menjadi 2 macam, yaitu : Form MDI Induk(MDIForm) dan Form MDI Anak(MDIChild). MDIChild akan akan selalu ditempatkan berada di dalam MDIForm, MDIForm dapat memuat banyak MDIChild. Salah satu contoh Aplikasi dari MDI adalah Adobe Photoshop. Sekarang buka kembali project sebelumnya (project yang ada menu-nya dan semua form yang ada telah terhubung). Ikuti langkah-langkah menyusun Aplkasi berbasis tampilan MDI: 1. Tentukanlah Form yang akan dijadikan MDIForm-nya (pilih Form dengan menu), ubah properti FormStyle menjadi fsMDIForm (lihat gambar 1). 2. Setelah MDIForm atau Form Induk telah ditentukan selanjutnya menggubah Opsi Project(lihat gambar 2).

3. Setelah dialog Project Options muncul, pindahkan Form yang ada kecuali Form Utama dari kolom Auto-create forms ke kolom Available forms, caranya anda pilih (klik) form yang akan dipilih lalu tekan tombol dengan tanda > (lihat gambar pada halaman 28). 4. Pengubahan Opsi Project sudah.., pada langkah ini tampilkan form yang ada dengan cara meng-klik tombol view form (jika Anda lupa lihat Modul bagian 1 hal. 19) pada toolbar. Selanjutnya ubah properti FormStyle dari form-form (INGAT !! jgn ubah FormStyle dari Form Induk) tersebut menjadi fsMDIChild.

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-27

Klik tombol ini untuk memindahkan form dari kolom Auto-create forms ke kolom Available forms

Perhatikan gambar Menu Utama di bawah ini.

Untuk menambahkan kode program pada menu, apabila menu designer masih tampil maka tutuplah. Selanjutnya Anda cukup memilih menu yang akan ditambahkan programnya. Contoh apabila saya ingin menambahkan coding untuk menu input stok barang, maka saya klik File >> input >> stok barang...(lihat gambar)

Selanjutnya kita menuliskan programnya, untuk lebih jelas tentang MDI lihat tabel berikut:
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-28

Object/Komponen Form MenuUtama ------------Menu Input Data Supplier (File >> input >> Data Supplier)

Property/Event EVENT Onclick TdataSupplier.Create(Self); Catatan : Untuk Data Supplier, Formnya saya beri nama DataSupplier. Untuk mengubah nama form lihat hal. 25, Coding lengkapnya akan terlihat seperti ini: procedure TMenuUtama.DataSupplier1Click(Sender: TObject); begin TdataSupplier.Create(Self); end;

Form MenuUtama ------------Menu Input Data Stok (File >> input >> Data Stok)

EVENT Onclick TdataSupplier.Create(Self); Catatan : Untuk Data Stok, Formnya saya beri nama DataStok. Untuk mengubah nama Form lihat hal. 25, Coding lengkapnya akan terlihat seperti ini: procedure TMenuUtama.DataStok1Click(Sender: TObject); begin TdataStok.Create(Self); end;

Form MenuUtama ------------Menu Setting Path DB (File >> Setting >> PathDB)

EVENT Onclick TdataSupplier.Create(Self); Catatan : Untuk setting connection, Formnya saya beri nama PathDB. Untuk mengubah nama form lihat hal. 25, Coding lengkapnya akan terlihat seperti ini: procedure TMenuUtama.PathDB1Click(Sender: TObject); begin TPathDB.Create(Self); end;

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-29

Form MenuUtama ------------Menu Exit (File >> Exit )

EVENT Onclick Coding lengkapnya akan terlihat seperti ini: procedure TMenuUtama.Exit1Click(Sender: TObject); begin Application.Terminate; //perintah ini juga dapat digunakan untuk menutup aplikasi SDI. end;

Form DataSupplier

Tambahkan Sebuah EVENT OnClose Pada event tersebut tuliskan program berikut Action := cafree;

Form DataStok

Tambahkan Sebuah EVENT OnClose Pada event tersebut tuliskan program berikut Action := cafree;

Form PathDB

Tambahkan Sebuah EVENT OnClose Pada event tersebut tuliskan program berikut Action := cafree;

PS : nilai sebuah aplikasi diantaranya dinilai dari + Tata letak objek seperti: tombol, tabel dan gambar. + Kombinasi warna yang digunakan. + Ketersedian fungsi singkat (Shortcut), shortcut disini dapat berbentuk kombinasi tombol keyboard atau tombol dengan simbol-simbol khusus untuk fungsi khusus. + Pemilihan komponen yang digunakan untuk mengolah data. + Jumlah Komponen yang digunakan. + Algoritma pemrograman. + Metode tampilan yang digunakan, semisal aplikasi dengan jumlah form yang sama, untuk aplikasi berjenis MDI akan lebih kecil ukurannya dibandingkan dengan SDI .
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-30

Membuat laporan
Untuk membuat laporan, tambahkan sebuah Form baru (klik tombol New Form pada toolbar), lalu aktifkan page Qreport pada Component pallete.

Pada nomor-nomor yang tertera gambar page QReport di atas adalah komponen-komponen yang paling sering digunakan. Keterangan lengkapnya lihat tabel di bawah ini:

No 1

Komponen QuickRep

2 3

QRSubDetail QRBand

4 5

QRLabel QRDBText

QRSysData

7 8 9

QRMemo QRImage QRDBImage

Keterangan Komponen ini adalah komponen dasar dari penyusunan laporan, komponen ini dapat diumpamakan sebagai lembar laporan. Digunakan untuk menampilkan detil dari data, umumnya digunakan pada master-detail report. Digunakan sebagai kolom pembagi laporan, QRBand ini dapat diubah menjadi Title, Coloumn Header, Summary, PageFooter, PageHeader dll. Umumnya digunakan sebagai teks keterangan, sifatnya statis (tidak dapat berubah-ubah seperti halnya QRDBText). Untuk menampilkan data teks yang terdapat dalam basis data (teks yang ditampilkan dapat berubah-ubah sesuai dengan teks yang dirujuk pada basis data). Digunakan untuk menampilkan data sistem seperti: tanggal, jam, Page number, jumlah record dsb. Pilihlah data sistem yang akan ditampilkan pada laporan dengan cara mengubah property Data pada komponen ini. Digunakan penampil data multiteks. Digunakan untuk menampilkan citra/gambar. Digunakan untuk menampilkan data citra yang terdapat dalam basis data.

Pada Form baru tadi tambahkan komponen QuickRep, untuk melakukan seting terhadap laporan semisal ukuran kertas yang akan digunakan, klik ganda pada QuickRep-nya. Selanjutnya dialog setting reports akan muncul (lihat gambar pada hal. 32). Ubahlah seting ukuran kertas, lebar margin kiri, margin kanan, atas dan bawah. Jenis Font yang akan digunakan dan lain sebagainya, sesuaikan laporan dengan kebutuhan atau keinginan Anda. Untuk menerapkan setingan Anda tekan tombol Apply, Untuk menerapkan dann sekaligus menutup kotak dialog ini tekan OK. Setelah ukuran kertas laporan disesuaikan, tambahkan QRBand pada QuickRep sebanyak 4 buah...

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-31

Ubah property dari 3 QRBand.. Object/Komponen QRBand1 QRBand2 QRBand3 QRBand4 Property/Event - {secara default band yang ditambahkan ke report akan bertipe Title (rbTitle)} BandType = rbDetail BandType = rbSummary BandType = rbPageFooter Frame: - DrawTop = True Pada QRBand1, QRBand2, QRBand3 masing-masing tempatkan sebuah QRLabel, Pada QRBand4 tempatkan sebuah QRSysData. Ubah Property dari komponen-komponen berikut; Object/Komponen QRLabel1 (simpan pada QRBand1 [Title]) Property/Event Caption = INI JUDUL LAPORAN Font = ARIAL - Size = 14 - Bold = True Caption = ini label pada kolom detail Caption = ini label pada kolom Summary / kesimpulan - {Propety Data defaultny adalah qrstime, Anda dapat ubah sesuai dengan pilihan yang disediakan}

QRLabel2 (simpan pada QRBand2 [Detail]) QRLabel3 (simpan pada QRBand4 [Summary]) QRSysData (simpan pada QRBand4 [Page Footer])

Setelah selesai, lihatlah hasil yang dicetak oleh printer, caranya klik kanan pada QuickRep lalu pilih menu Preview. Untuk lebih jelasnya lihatlah pada halaman 33.
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-32

Tekan tombol ini untuk Print

Tekan tombol ini untuk menutup Preview

Selanjutnya kita akan membuat laporan yang sesungguhnya berpindahlah ke halaman berikutnya.

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-33

Laporan Data Supplier


Buatlah komponen-komponen laporan seperti yang terlihat pada gambar berikut:

selanjutnya ubah property dari komponen-komponen berikut: Object/Komponen ADOConnection1 Property/Event Set koneksi ke basis data barang.MDB LoginPrompt = False Connection = ADOConnection1 TableName = Supplier Active = True Dataset = ADOTable1

ADOTable1

QuickRep1 QRImage1

Picture = {pilih gambar yang ada sebagai pengganti logo perusahaan} Bandtype = rbTitle Bandtype = rbColoumnHeader Color = clGrey Bandtype = rbDetail Bandtype = rbSummary Color = clSilver Bandtype = rbPageFooter

QRBand1 QRBand2

QRBand3 QRBand4

QRBand5

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-34

QRLabel1

Caption = AMIK JAYA ABADI Font = {sesuaikan dengan kebutuhan/keinginan Anda} Caption = Jumlah Record : Color = clSilver Expression = pada kolom ini klik tombol Builder (tombol dng. 3 titik), setelah muncul dialog expression, klik tombol function. Setelah muncul dialog Expression Wizzard, pilih COUNT pada kolom Available Function. Klik tombol Continue >> OK. Color = clSilver

QRLabel2 {pada Gambar terletak di kolom Summary} QRExpr1 {= QRExpression, pada gambar tertulis (none) di kolom Summary}

QRLabel3

Caption = Kode Supplier Color = clGrey Caption = Nama Supplier Color = clGrey Caption = Alamat Color = clGrey Caption = Kota Color = clGrey Caption = Kode Pos Color = clGrey Caption = Telepon Color = clGrey Caption = Contact Person Color = clGrey DataSet = ADOTable1 DataField = Kode_Supplier DataSet = ADOTable1 DataField = Nama_Supplier DataSet = ADOTable1 DataField = Alamat DataSet = ADOTable1 DataField = Kota DataSet = ADOTable1 DataField = Kode_Pos DataSet = ADOTable1 DataField = Telepon DataSet = ADOTable1 DataField = Contact_Person

QRLabel4

QRLabel5

QRLabel6

QRLabel7

QRLabel8

QRLabel9

QRDBText1

QRDBText2

QRDBText3

QRDBText4

QRDBText5

QRDBText6

QRDBText7

Dengan Asumsi bahwa table Supplier telah terisi, lihat hasilnya setelah di preview akan terlihat seperti berikut.
Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-35

Laporan Data Stok (Master-Detail Report)


Selanjutnya kita akan mencoba untuk membuat laporan berbentuk master-detail, untuk membuat laporan ini, tambahkan komponen berikut pada rancangan laporan di atas. Sehingga rancangan laporannya akan seperti gambar ini.

Komponen tambahan

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-36

Property dari komponen tambahan yang diubah: Object/Komponen DataSource1 ADOTable2 Property/Event DataSet = ADOTable1 Connection = ADOConnection1 TableName = Stok MasterSource = DataSource1 MasterField = klik tombol builder yang terdapat pada kolom ini, setelah muncul dialog Field Link Designer. Pada kolom Detail Fields klik Kode_Suplier, lalu pada kolom Master Fields klik Kode_Supplier lalu tekan tombol Add (tombol yang ada diantara kedua kolom Detail Fields dan Master Fields). OK. Active = True Dataset = ADOTable2 DataSet = ADOTable2 DataField = Kode_Barang DataSet = ADOTable2 DataField = Desk_Barang DataSet = ADOTable2 DataField = Stok_Minimum DataSet = ADOTable2 DataField = Stok_Tersedia DataSet = ADOTable2 DataField = Harga

Dari Page Qreport Ambil Komponen QRSubDetail QRDBText8

QRDBText9

QRDBText10

QRDBText11

QRDBText12

Ganti nama Form untuk laporan ini menjadi FLaporan lalu SAVE ALL, Preview untuk melihat hasilnya (contoh hasil preview dapat dilihat pada halaman 38). PS : Penulisan Coding untuk menampilkan Preview dan untuk melalukan Print Laporan tanpa Preview. Contoh coding untuk menampilkan preview laporan yang dijalankan pada saat tombol Button1 di klik Procedure FMenuUtama.Button1Click(sender : TObject); Begin FLaporan.QuickRep1.Preview; End; Sedang untuk langsung print Coding lengkapnya adalah:

Procedure FMenuUtama.Button1Click(sender : TObject); Begin FLaporan.QuickRep1.Print; End;


Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-37

Selamat Mencoba dan Berkarya

Pemrograman Delphi : Bagian II Agung Wibowo - 2005

II-38