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.
1
2
3
4
5
6
7
8
9
Keterangan: No 1
Komponen Data Source
2
Table
3
Query
4
StoredProc
5
Database
6
Session
7
BatchMove
8 9
UpdateSQL NestedTable
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.
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.
5
3
1 2
4
7 6
9 8
11 10
15
13 12
14
Keterangan: No 1
Komponen DBGrid
2
DBNavigator
3
DBText
4
DBEdit
5
DBMemo
6
DBImage
7
DBListBox
8
DBComboBox
9
DBCheckBox
10
DBRadioGroup
11
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)
1
2
3
4
5
6
7
Keterangan: No 1
Komponen ADOConnection
2 3
ADOCommand ADODataSet
4
ADOTable
5
ADOQuery
6
ADOStoreProc
7
RDSConnection
Pemrograman Delphi : Bagian II – Agung Wibowo - 2005
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).
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...
1
2
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
5
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?
1
2
3
4
5
6
7
8
Pemrograman Delphi : Bagian II – Agung Wibowo - 2005
9
10
Bagaimana memindahkan fungsi DBNavigator ke dalam komponen Button?
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;
ADOConnection1
Set koneksi ke basis data Anda. LoginPrompt = False
ADOTable1
Connection = ADOConnection1 TableName = Supplier Active = True
DataSource1
DataSet = ADOTable1
ADOTable2
Connection = ADOConnection1 TableName = Stok Active = True
DataSource2
DataSet = ADOTable2
DBLookupCombobox1
ListSource = DataSource1 ListField = Kode_supplier KeyField = Kode_Supplier
DBGrid1
DataSource = DataSource2 ReadOnly = True;
Contoh penempatan variabel lihat gambar halaman 19
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)
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
19
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; 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
ADOQuery1
Connection = ADOConnection1
DataSource1
DataSet = ADOQuery1
Combobox1
Text = ‘’ (dikosongkan)
DBGrid1
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
Text = ‘’(dikosongkan)
Button1
Caption = &Tambah
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
procedureDBGrid1CellClick(Column
:
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
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;) 1)
Variabel yang diletakan di sini dapat diakses oleh semua procedure yang terdapat pada Form ini dan tidak dapat diakses oleh Form lain.
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
Lines
= klik tombol Ambil untuk menyeting lokasi basis data Anda.. ReadOnly = true
Image1 [Page Additional]
Picture = {pilih gambar Anda..}
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 >
Data Supplier Data Stok
Setting PathDB
Help
-------Exit
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).
1
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.
1
2
3
4
5
6
7
8
9
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
QRSubDetail
3
QRBand
4
QRLabel
5
QRDBText
6
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])
QRLabel2 (simpan pada QRBand2 [Detail]) QRLabel3 (simpan pada QRBand4 [Summary]) QRSysData (simpan pada QRBand4 [Page Footer])
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}
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
ADOTable1
Connection = ADOConnection1 TableName = Supplier Active = True
QuickRep1
Dataset
QRImage1
Picture = {pilih gambar yang ada sebagai pengganti logo perusahaan}
QRBand1
Bandtype = rbTitle
QRBand2
Bandtype = rbColoumnHeader Color = clGrey
QRBand3
Bandtype = rbDetail
QRBand4
Bandtype = rbSummary Color = clSilver
QRBand5
Bandtype = rbPageFooter
Pemrograman Delphi : Bagian II – Agung Wibowo - 2005
= ADOTable1
II-34
QRLabel1
Caption = AMIK JAYA ABADI Font = {sesuaikan dengan kebutuhan/keinginan Anda}
QRLabel2 {pada Gambar terletak di kolom Summary}
Caption = Jumlah Record : Color = clSilver
QRExpr1 {= QRExpression, pada gambar tertulis (none) di kolom Summary}
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
QRLabel3
Caption = Kode Supplier Color = clGrey
QRLabel4
Caption = Nama Supplier Color = clGrey
QRLabel5
Caption = Alamat Color = clGrey
QRLabel6
Caption = Kota Color = clGrey
QRLabel7
Caption = Kode Pos Color = clGrey
QRLabel8
Caption = Telepon Color = clGrey
QRLabel9
Caption = Contact Person Color = clGrey
QRDBText1
DataSet = ADOTable1 DataField = Kode_Supplier
QRDBText2
DataSet = ADOTable1 DataField = Nama_Supplier
QRDBText3
DataSet = ADOTable1 DataField = Alamat
QRDBText4
DataSet = ADOTable1 DataField = Kota
QRDBText5
DataSet = ADOTable1 DataField = Kode_Pos
QRDBText6
DataSet = ADOTable1 DataField = Telepon
QRDBText7
DataSet = ADOTable1 DataField = Contact_Person
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
Property/Event DataSet = ADOTable1
ADOTable2
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.
Dari Page Qreport Ambil Komponen QRSubDetail QRDBText8
Active = True Dataset = ADOTable2 DataSet = ADOTable2 DataField = Kode_Barang
QRDBText9
DataSet = ADOTable2 DataField = Desk_Barang
QRDBText10
DataSet = ADOTable2 DataField = Stok_Minimum
QRDBText11
DataSet = ADOTable2 DataField = Stok_Tersedia
QRDBText12
DataSet = ADOTable2 DataField = Harga
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