Anda di halaman 1dari 25

PRAKTIKUM PEMROGRAMAN BORLAND DELPHI

1.1 Sekilas Borland Delphi Delphi adalah perangkat pengembangan aplikasi yang berjalan di sistem operasi Windows. Delphi merupakan kelanjutan dari Turbo Pascal yang merupakan produk Borland, sekarang telah berganti menjadi Inprise Corporation. Delphi diluncurkan pertama kali pada tahun 1995. Borland menyatakan bahwa Delphi merupakan alat yang dapat digunakan untuk Rapid Application Development (RAD), yang hingga kini tetap terbukti menjadi bahasa pemrograman yang paling baik. Dengan keberhasilan ini maka Borland (sebelum menjadi Inprise), mengembangkan produk lain yang mirip yakni C++Builder, Jbuilder (Java Language). Dengan demikian jika kita telah menguasai Delphi dengan mudah kita dapat berpindah menggunakan bahasa lainnya yaitu C++Builder atau Jbuilder. Kedua produk ini sengaja dibuat memiliki IDE yang sama dengan Delphi. Selain sebagai aplikasi biasa dengan mudah Delphi membuat aplikasi untuk internet. Seperti Win-CGI (Windows Common Gateway Interface), ISAPI (Internet Service Application Program Interface) . Bahkan Borland menyatakan sebagai satu langkah menuju ActiveX. Seperti dengan mudah membuat sebuah aplikasi ActiveForm yang dapat berjalan pada Internet Explorer sebagai suatu aplikasi biasa. Selain itu Delphi dapat membuat aplikasi MIDAS, pada aplikasi ini kita harus membuat dua lapis, lapis pertama adalah aplikasi Server yang melayani permintaan aplikasi kedua yaitu Client. Delphi dapat mengakses database Paradox, xBase, MS-Access juga dengan menggunakan ODBC Delphi dapat mengakses database lain seperti Oracle, Sybase, Interbase, DB2, MS-SQL, MySQL. Sehingga kita dapat berpindah dari satu database ke database lain tanpa perlu mengubah aplikasi secara keseluruhan.

1.2 Microsoft Access


Microsoft Access merupakan program paket Microsoft office untuk pengolahan database, lengkap dengan fasilitas query atau permintaan data, form yang berfungsi untuk menginput data dan report untuk menampilkan data. Serta bisa ditambah dengan fasilitas fasilitas lain, seperti switchboard yang berfungsi untuk navigasi program, serta dapat dikembangkan dengan menggunakan kode pemrograman visual basic. 1. Membuat Tabel dan Memasukkan Records Keyword : ALTER TABLE INSERT INTO CREATE TABLE SELECT INTO DELETE UPDATE Definisi ALTER TABLE : keyword yang digunakan untuk memodifikasi column dan constraints dari tabel yang sudah dibuat Constraint : digunakan untuk membatasi nilai yang akan diinputkan ke dalam field dan untuk menetapkan relasi antar tabel CREATE TABLE : keyword yang digunakan memberi perintah pada database untuk membuat sebuah tabel baru Data Type : menentukan jenis tipe data tiap kolom/field DELETE: statement yang digunakan untuk menghapus record dalam tabel INSERT : statement yang digunakan untuk menyisipkan/memasukan data ke dalam tabel UPDATE : statement yang digunakan untuk memperbaharui record yang ada dalam table CREATE TABLE Syntax CREATE TABLE Tablename ( Columnname Datatype Field Size, [NULL | NOT NULL] [optional constraints] );

PraktikumPemrogramanDelphi

Tipe Data

PraktikumPe emrogramanDelphi

Contoh 1 : CREATE TABLE Toys ( ToyID INTEGER CONSTRAINT ToyPk PRIMARY KEY, ToyName CHAR (30) NOT NULL, Price MONEY NOT NULL, Description CHAR (40) NULL ); Untuk melihat hasil tabel tersebut ketik kode berikut : SELECT * FROM Toys; Contoh 2 : CREATE TABLE Manufacturers ( ManufacturerID INTEGER CONSTRAINT ManfID PRIMARY KEY, ToyID INTEGER NOT NULL, CompanyName CHAR (50) NOT NULL, Address CHAR (50) NOT NULL, City CHAR (20) NOT NULL, State CHAR (2) NOT NULL, Postalcode CHAR (5) NOT NULL, Areacode CHAR (3) NOT NULL, Phonenumber CHAR (8) NOT NULL UNIQUE, CONSTRAINT ToyFk FOREIGN KEY (ToyID) REFERENCES Toys (ToyID) ON UPDATE CASCADE ON DELETE CASCADE ); Menambah Constraint ke dalam table Syntax : ALTER TABLE Tablename ADD COLUMN ColumnName ColumnType (Size) ColumnConstraint | DROP COLUMN ColumnName | ADD CONSTRAINT ColumnConstraint | DROP CONSTRAINT ColumnConstraint; Contoh 3 : ALTER TABLE Toys ADD CONSTRAINT ToyNameUnique UNIQUE (ToyName); ALTER TABLE Toys DROP CONSTRAINT ToyNameUnique; Contoh 4 : ALTER TABLE Toys ADD CONSTRAINT CheckAmount CHECK (Price > 3); ALTER TABLE Toys DROP CONSTRAINT CheckAmount; Menambahkan constraint PRIMARY KEY, FOREIGN KEY, dan NOT NULL Syntax ALTER TABLE Tablename ADD CONSTRAINT ConstraintName PRIMARY KEY (ColumnName); ALTER TABLE Tablename ADD CONSTRAINT ConstraintName FOREIGN KEY (ColumnName) REFERENCES LinkedTableName (PrimaryKey); ALTER TABLE Tablename ALTER COLUMN ColumnName Datatype (Field size) NOT NULL;

PraktikumPemrogramanDelphi

Memasukan Data Syntax : INSERT INTO Tablename [(ColumnNames, ...)] VALUES (values, ...); Contoh 5 : INSERT INTO Toys (ToyID, ToyName, Price, Description) VALUES (1, 'ToyTrain1', 11.00, 'Red/blue battery powered train'); INSERT INTO Toys (ToyID, ToyName, Price, Description) VALUES (2, 'ToyTrain2', 11.00, 'Green/red/blue battery powered train'); INSERT INTO Toys (ToyID, ToyName, Price, Description) VALUES (3, 'ElectricTrain', 15.00, 'Red/white AC/DC powered train'); INSERT INTO Toys (ToyID, ToyName, Price, Description) VALUES (4, 'LivingDoll1', 12.00, 'Asian American Doll'); INSERT INTO Toys (ToyID, ToyName, Price, Description) VALUES (5, 'LivingDoll2', 12.00, 'African American Doll'); Menampilkan Data SELECT * FROM Toys; Memasukan Data tanpa menuliskan nama kolom Contoh 6 : INSERT INTO Toys VALUES (6, 'Doll House', 17.00, 'Grand Town House'); Memasukan nilai NULL Contoh 7 : INSERT INTO Toys VALUES (7, 'Doll/Town House', 15.00, NULL); Mengcopy records dari satu table ke table lain Contoh 8 : CREATE TABLE ToysTest ( ToyID CHAR (7) CONSTRAINT ToyPk PRIMARY KEY, ToyName CHAR (30) NOT NULL, Price MONEY NOT NULL, Description CHAR (40) NULL ); Copy Data : INSERT INTO ToysTest (ToyID, ToyName, Price, Description) SELECT ToyID, ToyName, Price, Description FROM Toys; Tampilkan Data : SELECT * FROM ToysTest; Menyalin Records dari Satu Tabel ke Tabel Baru Bersamaan Contoh 9 : SELECT ToyID, ToyName, Price, Description INTO Toys2 FROM Toys; Memperbarui records Syntax : UPDATE Tablename SET ColumnName = Value WHERE Condition;

PraktikumPemrogramanDelphi

Contoh 10 : UPDATE Toys SET Description = Town House WHERE ToyID = 7; Menghapus records : Syntax : DELETE FROM Tablename WHERE Condition Contoh 11 : DELETE FROM Toys2 WHERE ToyID = 7;

2.

Mengambil / Menampilkan Records

Keywords AS ASC DESC DISTINCT DISTINCTROW

ORDER BY SELECT TOP TOP PERCENT

Definisi : AS - Digunakan untuk menetapkan nama alternatif untuk sebuah kolom atau tabel. ASC - Digunakan untuk mengurutkan nilai-nilai kolom dalam urutan ascending DESC - Digunakan untuk mengurutkan kolom nilai-nilai dalam urutan descending DISTINCT - Digunakan untuk menampilkan nilai-nilai unik di kolom. DISTINCTROW - Digunakan untuk menghilangkan record duplikat. ORDER BY - Digunakan untuk menyortir record secara ascending atau descending SELECT - Digunakan untuk mengambil record dari database. TOP - Digunakan untuk menampilkan record yang diambil dari bagian atas atau bagian bawah table menggunakan ORDER BY TOP PERCENT - Digunakan untuk menampilkan persentase record yang diambil dari bagian atas atau bagian bawah table menggunakan ORDER BY Pernyataan Select : Syntax : SELECT Columnname(s) FROM TableName(s); Contoh 1 : SELECT ToyName, Price FROM Toys; Data diurut secara Descending : Contoh 2 : SELECT * FROM Toys ORDER BY ToyName DESC; Data diurut secara Ascending : Contoh 3 : SELECT * FROM Toys ORDER BY ToyName; SELECT * FROM Toys ORDER BY ToyName ASC; Buat Tabel Employees : CREATE TABLE Employees ( SocialSecNum CHAR (11) CONSTRAINT NumPk PRIMARY KEY, Firstname CHAR (50), Lastname CHAR (50), Address CHAR (50),

PraktikumPemrogramanDelphi

Zipcode CHAR (10), Areacode CHAR (3), PhoneNumber CHAR (8) ); Isi terlebih dahulu datanya minimal 5 buah data! Data diurut berdasarkan beberapa kolom : Contoh 4 : SELECT Lastname, Firstname FROM Employees ORDER BY Lastname, Firstname; Data diurut menggunakan nomor urutan kolom : Contoh 5 : SELECT * FROM Employees ORDER BY 3, 2; Contoh 6 : SELECT Lastname, Firstname, PhoneNumber FROM Employees ORDER BY 1, 2; Penanganan Nilai Ganda / Duplikat Menggunakan DISTINCT Keyword : Contoh 7 : SELECT DISTINCT Price FROM Toys; TOP Keyword : Contoh 8 : SELECT TOP 3 CompanyName, PostalCode FROM Manufacturers ORDER BY PostalCode DESC; Contoh 9 : SELECT TOP 3 CompanyName, PostalCode FROM Manufacturers ORDER BY PostalCode; TOP PERCENT Keyword : Contoh 10 : SELECT TOP 50 PERCENT CompanyName FROM Manufacturers ORDER BY CompanyName; Contoh 11 : SELECT TOP 50 PERCENT CompanyName FROM Manufacturers ORDER BY CompanyName DESC;

3.

Menyaring Record

Keywords WHERE Definisi Operator Pembanding : Digunakan untuk melakukan perbandingan antara ekspresi Expression : Tipe data apapun yang mengembalikan sebuah nilai Logical operators : Digunakan untuk menguji kebenaran dari beberapa kondisi. Klausa WHERE : Digunakan untuk menyaring record Wildcard characters : Karakter khusus yang digunakan untuk mencocokkan bagian-bagian dari sebuah nilai

PraktikumPemrogramanDelphi

Operator r Pembanding

Logical Operators O

Operator r Precedence e

Contoh 1 : d, Department SELECT SerialNum, Brand FROM Computers R Brand = 'Gat teway') WHERE (Brand = 'Dell' OR umber < 130; AND OfficeNu LIKE Operator

Contoh 2 : SELECT * FROM Tools E 'D*' AND Location LIKE '[A A-C]'; WHERE Manufacturer LIKE

PraktikumPe emrogramanDelphi

Contoh 3 : SELECT * FROM Tools WHERE Manufacturer LIKE '*H';

Contoh 4 : SELECT * FROM Tools WHERE Manufacturer LIKE '*Dewalt*'; Contoh 5 : SELECT * FROM Tools WHERE Manufacturer LIKE 'Bos?h'; Contoh 6 : SELECT * FROM Tools WHERE ToolID LIKE '1#'; Contoh 7 : SELECT * FROM Tools WHERE Location LIKE '[!A-C]'; Contoh 8 : SELECT * FROM Tools WHERE ToolID LIKE '[!1-5]'; Contoh 9 : SELECT * FROM Tools WHERE ToolID LIKE 'b[!a-e]#'; BETWEEN Operator Contoh 10 : SELECT * FROM Tools WHERE ToolID BETWEEN 3 AND 10; SELECT * FROM Tools WHERE ToolID >= 3 AND ToolID <=10; IN and NOT Operators Contoh 11 : SELECT * FROM Tools WHERE Manufacturer NOT IN ('Bosch', 'Porter', 'Makita'); SELECT * FROM Tools WHERE Manufacturer IN ('Bosch', 'Porter', 'Makita');

PraktikumPemrogramanDelphi

2.1 Membuat Aplikasi Kepegawaian Membuat aplikasi database kepegawaian yang memuat informasi tentang biodata pegawai sebuah perusahaan beserta data aktifitas pekerjaannya.

2.1.1 Membuat database kepegawaian Langkah-langkah untuk membuat database kepegawaian menggunakan Microsoft Access. 1. 2. 3. Buka aplikasi Microsoft Access 2007 yang sudah terinstal pada komputer Klik File -> New -> Blank Database Pada isian File Name, klik tombol browse yang ada disebelah kanannya kemudian pindahkan aktif folder pada Drive D: , lalu buatlah folder dengan nama Anda dan klik Open pada folder tersebut 4. Berikutnya ketik DBPraktikum_NPM pada isian File name dan pilih Microsoft Access Database (2002-2003 Format) (*.mdb). 5. 6. Lalu klik OK. Terakhir klik Create. Buatlah tabel pegawai dengan struktur sebagai berikut : Tabel Name : Biodata Field Name NIP Nama Tempat_Lahir Tanggal_Lahir Alamat Kode_POS Telp Tabel Name : Kepegawaian Field Name NIP Jabatan Golongan Bidang_Kerja Tanggal_Masuk Status Data Type Text Text Text Text DateTime Text Field Size 5 25 10 25 10 Key Data Type Text Text Text DateTime Text Text Text Field Size 5 30 15 50 5 15 Key Primary Key

7. Setelah tabel selesai dibuat, isi data setiap tabel minimal 3 buah data sebagai sampel.

Relasi Tabel Dari struktur tabel yang telah dibuat diatas, maka dapat dilihat ada relasi antara kedua tabel tersebut. Kunci relasi dari kedua tabel tersebut adalah Field NIP. Field NIP pada tabel Bidoata digunakan sebagai kunci primer (Primary Key) yang berfungsi sebgai pengidentifikasi unik setiap record yang terdapat pada tabel tersebut. Sedangkan Field NIP pada tabel Kepegawaian digunakan sebagai kunci tamu (Foreign Key) yang berfungsi sebagai kunci referensi terhadap tabel Biodata, sehingga data Tabel Kepegawaian memiliki ketergantungan terhadap data pada Tabel Biodata. Kardinalitas dari kedua tabel tersebut adalah 1 : 1 , artinya setiap pegawai yang terdaftar pada tabel Biodata akan berrelasi dengan satu record pada Tabel Kepegawaian. Field Name NIP Data Type Text Field Size 5 Key Primary Key

Field Name NIP

Data Type Text

Field Size 5

Key

PraktikumPemrogramanDelphi

2.1.2 Membuat Aplikasi Kepegawaian Menggunakan Borland Delphi Aplikasi database kepegawaian yang dibuat menggunakan borland delphi 7. Buatlah tampilan visual (User Interface) seperti di bawah ini!

Pemberian nama komponen silahkan diatur sendiri, boleh juga menggunakan penamaan bawaan dari Delphinya. Tambahkan komponen Data Aware diantaranya adalah :

Nama Komponen
AdoConnection

Property
Name : AdoConnection1 Login Prompt : False Connection String : Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\DOCUMENT ~\Praktikum Delphi\DBPraktikum.mdb;Persist Security Info=False Connected : True Name : Adoquery1 SQL : Select * From Biodata Active : True Name : Datasource1 DataSet : Adoquery1 DataSource : Datasource1

AdoQuery

DataSource DBGrid

PraktikumPemrogramanDelphi

10

Listing Kode Program


EVENT ONCREATE Event OnCreate pada form untuk membersihkan field dan menampilkan data pada DBGrid

procedure TFormbiodata.FormCreate(Sender: TObject); begin // kosongkan semua field Editnip.Clear; Editnamapeg.Clear; Edittempatlahir.Clear; Editalamat.Clear; Editpos.Clear; Edittelepon.Clear; Editcari.Clear; DateTimePickerlahir.Date := Now(); // tampilkan semua data karyawan pada dbgridbiodata with ADOQuery1 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM BIODATA '; Active := True; end; end; EVENT BUTTONSAVE Proses button Save. Untuk menyimpan data pada Database, dilengkapi dengan validasi Field NIP tidak kboleh kosong dan tidak boleh terjadi duplikasi NIP

procedure TFormbiodata.ButtonsaveClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 then begin MessageDlg('Field NIP tidak boleh kosong!',mtWarning,[mbOK],0); Exit; end; // validasi duplikasi NIP pegawai with ADOQuery1 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM BIODATA WHERE NIP = ' + QuotedStr(Editnip.Text); Active := True; // tampilkan pesan jika terjadi duplikasi // dan keluar proses SAVE if ADOQuery1.RecordCount > 0 then begin MessageDlg('Terjadi duplikasi NIP. Silahkan ganti dengan yang baru!',mtError,[mbOK],0); Editnip.Clear; Editnip.SetFocus; // keluar dari proses insert Exit; end;

PraktikumPemrogramanDelphi

11

end; // proses simpan biodata pegawai with ADOQuery1 do begin SQL.Clear; SQL.Text := ' INSERT INTO BIODATA(NIP,Nama,Tempat_Lahir,Tanggal_Lahir,Alamat,Kode_POS,Telp) VALUES (' + QuotedStr(Editnip.Text) + ' , ' + QuotedStr(Editnamapeg.Text) + ' , ' + QuotedStr(Edittempatlahir.Text) + ' , ' + '#' + DateToStr(DateTimePickerlahir.Date) + '#' + ' , ' + QuotedStr(Editalamat.Text) + ' , ' + QuotedStr(Editpos.Text) + ' , ' + QuotedStr(Edittelepon.Text) + ')'; ExecSQL; MessageDlg('Data sudah tersimpan',mtInformation,[mbOK],0); // panggil event formcreate untuk merefresh data pada dbgrid FormCreate(Sender); end; end;

EVENT DBGRIDDOUBLECLICK Proses double click dbGrid untuk mengcopy data dari DbGrid ke dalam field di form

procedure TFormbiodata.DBGridbiodataDblClick(Sender: TObject); begin // proses meng-copy isi dbgrid ke dalam field dalam form Editnip.Text := DBGridbiodata.Fields[0].AsString; Editnamapeg.Text := DBGridbiodata.Fields[1].AsString; Edittempatlahir.Text := DBGridbiodata.Fields[2].AsString; DateTimePickerlahir.Date := DBGridbiodata.Fields[3].AsDateTime; Editalamat.Text := DBGridbiodata.Fields[4].AsString; Editpos.Text := DBGridbiodata.Fields[5].AsString; Edittelepon.Text := DBGridbiodata.Fields[6].AsString; Editnip.SetFocus; end; EVENT BUTTONUPDATE Proses untuk memperbaharui biodata pegawai procedure TFormbiodata.ButtonupdateClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 then begin MessageDlg('Pilih salah satu data pada DBGRID!',mtWarning,[mbOK],0); Exit; end; // proses update biodata pegawai with ADOQuery1 do begin SQL.Clear; SQL.Text := ' UPDATE BIODATA SET ' + ' NAMA = ' + QuotedStr(Editnamapeg.Text) + ' , ' +

PraktikumPemrogramanDelphi

12

' Tempat_Lahir = ' + QuotedStr(Edittempatlahir.Text) + ' , ' + ' Tanggal_Lahir = ' + '#' + DateToStr(DateTimePickerlahir.Date) + '#' + ' , ' + ' Alamat = ' + QuotedStr(Editalamat.Text) + ' , ' + ' Kode_POS = ' + QuotedStr(Editpos.Text) + ' , ' + ' Telp = ' + QuotedStr(Edittelepon.Text) + ' WHERE NIP = ' + QuotedStr(Editnip.Text); ExecSQL; MessageDlg('Data sudah diperbaharui',mtInformation,[mbOK],0); end; // panggil event formcreate untuk merefresh data pada dbgrid FormCreate(Sender); end; EVENT BUTTONDELETE Proses untum menghapus salah satu Biodata pegawai berdasarkan NIP yang dipilih dari DBGrid procedure TFormbiodata.ButtondeleteClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 then begin MessageDlg('Pilih salah satu data pada DBGRID!',mtWarning,[mbOK],0); Exit; end; // proses hapus biodata pegawai if Application.MessageBox('Apakah anda akan menghapus data ini?','Warning',MB_YESNO) = mrYes then begin with ADOQuery1 do begin SQL.Clear; SQL.Text := ' DELETE FROM BIODATA WHERE NIP = ' + QuotedStr(Editnip.Text); ExecSQL; MessageDlg('Data sudah terhapus',mtInformation,[mbOK],0); end; end; // panggil event formcreate untuk merefresh data pada dbgrid FormCreate(Sender); end; EVENT ONCHANGE PENCARIAN DATA Proses untuk mencari data dari tabel Biodata berdasarkan nama pegawai procedure TFormbiodata.EditcariChange(Sender: TObject); begin // proses pencarian biodata pegawai berdasarkan nama pegawai // dibuat didalam event onChange editcari with ADOQuery1 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM BIODATA WHERE NAMA LIKE ' + QuotedStr('%'+Editcari.Text+'%'); Active := True; end; end; 2.1.3 Form Kepegawaian

PraktikumPemrogramanDelphi

13

Buatlah sebuah form seperti dibawah ini. Form ini digunakan untuk memproses data kepegawaian berdasarkan data pegawai yang sudah diolah pada form Biodata

Item ComboBox Jabatan diisi dengan : Direktur Wakil Direktur Kepala Bagian Kepala Sub Staff

Item ComboBox Golongan diisi dengan : I II III IV

Item ComboBox Golongan diisi dengan : Administrasi Keuangan Umum SDM Marketing Produksi Gudang

PraktikumPemrogramanDelphi

14

Item ComboBox Status diisi dengan : Aktif Cuti Keluar

Listing Kode Program


Buatlah Variable Global dengan nama nip : String; EVENT ONCREATE procedure TFormkepeg.FormCreate(Sender: TObject); begin nip := ''; Editcarinip.Clear; Labelnamapeg.Caption := '....'; ComboBoxjabatan.Text := ''; ComboBoxgolongan.Text := ''; ComboBoxbidangkerja.Text := ''; ComboBoxstatus.Text := ''; DateTimePickerkepeg.Date := Now(); // tampilkan semua data kepegawaian pada dbgrid with ADOQuery2 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM KEPEGAWAIAN '; Active := True; end; end; EVENT ONDOUBLECLICK DBGRID KEPEGAWAIAN procedure TFormkepeg.DBGridkepegawaianDblClick(Sender: TObject); begin // tampilkan data pada field di dalam form nip := DBGridkepegawaian.Fields[0].AsString; // lakukan proses pencarian nama pegawai untuk ditampilkan pada labelnamapeg // berdasarkan nip with ADOQuery3 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT NAMA FROM BIODATA WHERE NIP = ' + QuotedStr(nip); Active := True; // tampilkan nama pegawai Labelnamapeg.Caption := ADOQuery3.FieldValues['NAMA']; end; ComboBoxjabatan.Text := DBGridkepegawaian.Fields[1].AsString; ComboBoxgolongan.Text := DBGridkepegawaian.Fields[2].AsString; ComboBoxbidangkerja.Text := DBGridkepegawaian.Fields[3].AsString; DateTimePickerkepeg.Date := DBGridkepegawaian.Fields[4].AsDateTime; ComboBoxstatus.Text := DBGridkepegawaian.Fields[5].AsString;

PraktikumPemrogramanDelphi

15

end; EVENT ONCHANGE PENCARIAN DATA PEGAWAI procedure TFormkepeg.EditcarinipChange(Sender: TObject); begin // proses pencarian NIP dan Nama pegawai berdasarkan namanya with ADOQuery3 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM BIODATA WHERE NAMA LIKE ' + QuotedStr('%'+Editcarinip.Text+'%'); Active := True; end; end; EVENT ONDOUBLECLICK DBGRIDPENCARIAN procedure TFormkepeg.DBGridpencarianDblClick(Sender: TObject); begin // mengambil nilai NIP, hasil dari query pencarian nip // dan disimpan pada variabel global nip nip := ADOQuery3.FieldValues['NIP']; Labelnamapeg.Caption := ADOQuery3.FieldValues['NAMA']; ComboBoxjabatan.SetFocus; end; EVENT SAVE BUTTONSAVE procedure TFormkepeg.ButtonsaveClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if nip = '' then begin MessageDlg('Cari data pegawai terlebih dahulu!',mtWarning,[mbOK],0); Exit; end; // validasi duplikasi NIP pegawai with ADOQuery2 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM KEPEGAWAIAN WHERE NIP = ' + QuotedStr(nip); Active := True; // tampilkan pesan jika terjadi duplikasi // dan keluar proses SAVE if ADOQuery2.RecordCount > 0 then begin MessageDlg('Terjadi duplikasi NIP. Silahkan ganti dengan yang baru!',mtError,[mbOK],0); Editcarinip.Clear; Editcarinip.SetFocus; // keluar dari proses insert Exit; end; end; // proses simpan data kepegawaian berdasarkan NIP with ADOQuery2 do

PraktikumPemrogramanDelphi

16

begin SQL.Clear; SQL.Text := ' INSERT INTO KEPEGAWAIAN(NIP,Jabatan,Golongan,Bidang_Kerja,Tanggal_Masuk,Status) VALUES ( ' + QuotedStr(nip) + ' , ' + QuotedStr(ComboBoxjabatan.Text) + ' , ' + QuotedStr(ComboBoxgolongan.Text) + ' , ' + QuotedStr(ComboBoxbidangkerja.Text) + ' , ' + '#' + DateToStr(DateTimePickerkepeg.Date) + '#' + ' , ' + QuotedStr(ComboBoxstatus.Text) + ')'; ExecSQL; MessageDlg('Data sudah tersimpan!',mtInformation,[mbOK],0); FormCreate(Sender); end; end; EVENT EVENT UPDATE BUTTONUPDATE procedure TFormkepeg.ButtonupdateClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if nip = '' then begin MessageDlg('Cari terlebih dahulu pegawainya!',mtWarning,[mbOK],0); Exit; end; // proses update data kepegawaian with ADOQuery2 do begin SQL.Clear; SQL.Text := ' UPDATE KEPEGAWAIAN SET ' + ' Jabatan = ' + QuotedStr(ComboBoxjabatan.Text) + ' , ' + ' Golongan = ' + QuotedStr(ComboBoxgolongan.Text) + ' , ' + ' Bidang_Kerja = ' + QuotedStr(ComboBoxbidangkerja.Text) + ' , ' + ' Tanggal_Masuk = ' + '#' + DateToStr(DateTimePickerkepeg.Date) + '#' + ' , ' + ' Status = ' + QuotedStr(ComboBoxstatus.Text) + ' WHERE NIP = ' + QuotedStr(nip); ExecSQL; MessageDlg('Data sudah diperbaharuo!',mtInformation,[mbOK],0); FormCreate(Sender); end; end; EVENT DELETE BUTTONDELETE procedure TFormkepeg.ButtondeleteClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if nip = '' then begin MessageDlg('Cari terlebih dahulu pegawainya!',mtWarning,[mbOK],0); Exit; end; // proses hapus data kepegawaian if Application.MessageBox('Apakah anda akan menghapus data ini?','Warning',MB_YESNO) = mrYes then begin with ADOQuery2 do begin SQL.Clear;

PraktikumPemrogramanDelphi

17

SQL.Text := ' DELETE FROM KEPEGAWAIAN WHERE NIP = ' + QuotedStr(nip); ExecSQL; MessageDlg('Data sudah terhapus',mtInformation,[mbOK],0); end; FormCreate(Sender); end; end; EVENT ONKEYPRESS procedure TFormkepeg.DBGridpencarianKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then DBGridpencarianDblClick(Sender); end; EVENT FORMACTIVATE procedure TFormkepeg.FormActivate(Sender: TObject); begin FormCreate(Sender); end;

CODING LENGKAP FORM BIODATA unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, XPMan, StdCtrls, Grids, DBGrids, ComCtrls, DB, ADODB; type TFormbiodata = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Editnip: TEdit; Editnamapeg: TEdit; Edittempatlahir: TEdit; Editalamat: TEdit; Editpos: TEdit; Edittelepon: TEdit; DateTimePickerlahir: TDateTimePicker; DBGridbiodata: TDBGrid; Buttonsave: TButton; Buttonupdate: TButton; Buttondelete: TButton; Buttonkepeg: TButton; GroupBox1: TGroupBox; Editcari: TEdit;

PraktikumPemrogramanDelphi

18

XPManifest1: TXPManifest; ADOConnection1: TADOConnection; ADOQuery1: TADOQuery; DataSource1: TDataSource; procedure FormCreate(Sender: TObject); procedure ButtonsaveClick(Sender: TObject); procedure DBGridbiodataDblClick(Sender: TObject); procedure EditcariChange(Sender: TObject); procedure ButtondeleteClick(Sender: TObject); procedure ButtonupdateClick(Sender: TObject); procedure ButtonkepegClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var Formbiodata: TFormbiodata; implementation uses Unit2; {$R *.dfm} procedure TFormbiodata.FormCreate(Sender: TObject); begin // kosongkan semua field Editnip.Clear; Editnamapeg.Clear; Edittempatlahir.Clear; Editalamat.Clear; Editpos.Clear; Edittelepon.Clear; Editcari.Clear; DateTimePickerlahir.Date := Now(); // tampilkan semua data karyawan pada dbgridbiodata with ADOQuery1 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM BIODATA '; Active := True; end; end; procedure TFormbiodata.ButtonsaveClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 then begin MessageDlg('Field NIP tidak boleh kosong!',mtWarning,[mbOK],0); Exit; end; // validasi duplikasi NIP pegawai with ADOQuery1 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM BIODATA WHERE NIP = ' + QuotedStr(Editnip.Text); Active := True; // tampilkan pesan jika terjadi duplikasi

PraktikumPemrogramanDelphi

19

// dan keluar proses SAVE if ADOQuery1.RecordCount > 0 then begin MessageDlg('Terjadi duplikasi NIP. Silahkan ganti dengan yang baru!',mtError,[mbOK],0); Editnip.Clear; Editnip.SetFocus; // keluar dari proses insert Exit; end; end; // proses simpan biodata pegawai with ADOQuery1 do begin SQL.Clear; SQL.Text := ' INSERT INTO BIODATA(NIP,Nama,Tempat_Lahir,Tanggal_Lahir,Alamat,Kode_POS,Telp) VALUES (' + QuotedStr(Editnip.Text) + ' , ' + QuotedStr(Editnamapeg.Text) + ' , ' + QuotedStr(Edittempatlahir.Text) + ' , ' + '#' + DateToStr(DateTimePickerlahir.Date) + '#' + ' , ' + QuotedStr(Editalamat.Text) + ' , ' + QuotedStr(Editpos.Text) + ' , ' + QuotedStr(Edittelepon.Text) + ')'; ExecSQL; MessageDlg('Data sudah tersimpan',mtInformation,[mbOK],0); // panggil event formcreate untuk merefresh data pada dbgrid FormCreate(Sender); end; end; procedure TFormbiodata.DBGridbiodataDblClick(Sender: TObject); begin // proses meng-copy isi dbgrid ke dalam field dalam form Editnip.Text := DBGridbiodata.Fields[0].AsString; Editnamapeg.Text := DBGridbiodata.Fields[1].AsString; Edittempatlahir.Text := DBGridbiodata.Fields[2].AsString; DateTimePickerlahir.Date := DBGridbiodata.Fields[3].AsDateTime; Editalamat.Text := DBGridbiodata.Fields[4].AsString; Editpos.Text := DBGridbiodata.Fields[5].AsString; Edittelepon.Text := DBGridbiodata.Fields[6].AsString; Editnip.SetFocus; end; procedure TFormbiodata.EditcariChange(Sender: TObject); begin // proses pencarian biodata pegawai berdasarkan nama pegawai // dibuat didalam event onChange editcari with ADOQuery1 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM BIODATA WHERE NAMA LIKE ' + QuotedStr('%'+Editcari.Text+'%'); Active := True; end; end; procedure TFormbiodata.ButtondeleteClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong

PraktikumPemrogramanDelphi

20

if Length(Editnip.Text) < 1 then begin MessageDlg('Pilih salah satu data pada DBGRID!',mtWarning,[mbOK],0); Exit; end; // proses hapus biodata pegawai if Application.MessageBox('Apakah anda akan menghapus data ini?','Warning',MB_YESNO) = mrYes then begin with ADOQuery1 do begin SQL.Clear; SQL.Text := ' DELETE FROM BIODATA WHERE NIP = ' + QuotedStr(Editnip.Text); ExecSQL; MessageDlg('Data sudah terhapus',mtInformation,[mbOK],0); end; end; // panggil event formcreate untuk merefresh data pada dbgrid FormCreate(Sender); end; procedure TFormbiodata.ButtonupdateClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if Length(Editnip.Text) < 1 then begin MessageDlg('Pilih salah satu data pada DBGRID!',mtWarning,[mbOK],0); Exit; end; // proses update biodata pegawai with ADOQuery1 do begin SQL.Clear; SQL.Text := ' UPDATE BIODATA SET ' + ' NAMA = ' + QuotedStr(Editnamapeg.Text) + ' , ' + ' Tempat_Lahir = ' + QuotedStr(Edittempatlahir.Text) + ' , ' + ' Tanggal_Lahir = ' + '#' + DateToStr(DateTimePickerlahir.Date) + '#' + ' , ' + ' Alamat = ' + QuotedStr(Editalamat.Text) + ' , ' + ' Kode_POS = ' + QuotedStr(Editpos.Text) + ' , ' + ' Telp = ' + QuotedStr(Edittelepon.Text) + ' WHERE NIP = ' + QuotedStr(Editnip.Text); ExecSQL; MessageDlg('Data sudah diperbaharui',mtInformation,[mbOK],0); end; // panggil event formcreate untuk merefresh data pada dbgrid FormCreate(Sender); end; procedure TFormbiodata.ButtonkepegClick(Sender: TObject); begin Formkepeg.Show; end; end.

PraktikumPemrogramanDelphi

21

CODING LENGKAP FORM KEPEGAWAIAN unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, ComCtrls, DB, ADODB; type TFormkepeg = class(TForm) GroupBox1: TGroupBox; Editcarinip: TEdit; ComboBoxjabatan: TComboBox; ComboBoxgolongan: TComboBox; ComboBoxbidangkerja: TComboBox; ComboBoxstatus: TComboBox; DateTimePickerkepeg: TDateTimePicker; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; DBGridkepegawaian: TDBGrid; Label6: TLabel; Labelnamapeg: TLabel; Buttonsave: TButton; Buttonupdate: TButton; Buttondelete: TButton; ADOQuery2: TADOQuery; DataSource2: TDataSource; DBGridpencarian: TDBGrid; ADOQuery3: TADOQuery; DataSource3: TDataSource; procedure EditcarinipChange(Sender: TObject); procedure DBGridpencarianDblClick(Sender: TObject); procedure ButtonsaveClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure DBGridkepegawaianDblClick(Sender: TObject); procedure ButtonupdateClick(Sender: TObject); procedure ButtondeleteClick(Sender: TObject); procedure DBGridpencarianKeyPress(Sender: TObject; var Key: Char); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Formkepeg: TFormkepeg; nip : String; implementation uses Unit1; {$R *.dfm} procedure TFormkepeg.EditcarinipChange(Sender: TObject); begin // proses pencarian NIP dan Nama pegawai berdasarkan namanya with ADOQuery3 do begin Active := False; SQL.Clear; SQL.Text :=

PraktikumPemrogramanDelphi

22

' SELECT * FROM BIODATA WHERE NAMA LIKE ' + QuotedStr('%'+Editcarinip.Text+'%'); Active := True; end; end; procedure TFormkepeg.DBGridpencarianDblClick(Sender: TObject); begin // mengambil nilai NIP, hasil dari query pencarian nip // dan disimpan pada variabel global nip nip := ADOQuery3.FieldValues['NIP']; Labelnamapeg.Caption := ADOQuery3.FieldValues['NAMA']; ComboBoxjabatan.SetFocus; end; procedure TFormkepeg.ButtonsaveClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if nip = '' then begin MessageDlg('Cari data pegawai terlebih dahulu!',mtWarning,[mbOK],0); Exit; end; // validasi duplikasi NIP pegawai with ADOQuery2 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM KEPEGAWAIAN WHERE NIP = ' + QuotedStr(nip); Active := True; // tampilkan pesan jika terjadi duplikasi // dan keluar proses SAVE if ADOQuery2.RecordCount > 0 then begin MessageDlg('Terjadi duplikasi NIP. Silahkan ganti dengan yang baru!',mtError,[mbOK],0); Editcarinip.Clear; Editcarinip.SetFocus; // keluar dari proses insert Exit; end; end; // proses simpan data kepegawaian berdasarkan NIP with ADOQuery2 do begin SQL.Clear; SQL.Text := ' INSERT INTO KEPEGAWAIAN(NIP,Jabatan,Golongan,Bidang_Kerja,Tanggal_Masuk,Status) VALUES ( ' + QuotedStr(nip) + ' , ' + QuotedStr(ComboBoxjabatan.Text) + ' , ' + QuotedStr(ComboBoxgolongan.Text) + ' , ' + QuotedStr(ComboBoxbidangkerja.Text) + ' , ' + '#' + DateToStr(DateTimePickerkepeg.Date) + '#' + ' , ' + QuotedStr(ComboBoxstatus.Text) + ')'; ExecSQL; MessageDlg('Data sudah tersimpan!',mtInformation,[mbOK],0); FormCreate(Sender); end; end;

PraktikumPemrogramanDelphi

23

procedure TFormkepeg.FormCreate(Sender: TObject); begin nip := ''; Editcarinip.Clear; Labelnamapeg.Caption := '....'; ComboBoxjabatan.Text := ''; ComboBoxgolongan.Text := ''; ComboBoxbidangkerja.Text := ''; ComboBoxstatus.Text := ''; DateTimePickerkepeg.Date := Now(); // tampilkan semua data kepegawaian pada dbgrid with ADOQuery2 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT * FROM KEPEGAWAIAN '; Active := True; end; end; procedure TFormkepeg.DBGridkepegawaianDblClick(Sender: TObject); begin // tampilkan data pada field di dalam form nip := DBGridkepegawaian.Fields[0].AsString; // lakukan proses pencarian nama pegawai untuk ditampilkan pada labelnamapeg // berdasarkan nip with ADOQuery3 do begin Active := False; SQL.Clear; SQL.Text := ' SELECT NAMA FROM BIODATA WHERE NIP = ' + QuotedStr(nip); Active := True; // tampilkan nama pegawai Labelnamapeg.Caption := ADOQuery3.FieldValues['NAMA']; end; ComboBoxjabatan.Text := DBGridkepegawaian.Fields[1].AsString; ComboBoxgolongan.Text := DBGridkepegawaian.Fields[2].AsString; ComboBoxbidangkerja.Text := DBGridkepegawaian.Fields[3].AsString; DateTimePickerkepeg.Date := DBGridkepegawaian.Fields[4].AsDateTime; ComboBoxstatus.Text := DBGridkepegawaian.Fields[5].AsString; end; procedure TFormkepeg.ButtonupdateClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if nip = '' then begin MessageDlg('Cari terlebih dahulu pegawainya!',mtWarning,[mbOK],0); Exit; end; // proses update data kepegawaian with ADOQuery2 do begin SQL.Clear; SQL.Text := ' UPDATE KEPEGAWAIAN SET ' + ' Jabatan = ' + QuotedStr(ComboBoxjabatan.Text) + ' , ' + ' Golongan = ' + QuotedStr(ComboBoxgolongan.Text) + ' , ' + ' Bidang_Kerja = ' + QuotedStr(ComboBoxbidangkerja.Text) + ' , ' +

PraktikumPemrogramanDelphi

24

' Tanggal_Masuk = ' + '#' + DateToStr(DateTimePickerkepeg.Date) + '#' + ' , ' + ' Status = ' + QuotedStr(ComboBoxstatus.Text) + ' WHERE NIP = ' + QuotedStr(nip); ExecSQL; MessageDlg('Data sudah diperbaharuo!',mtInformation,[mbOK],0); FormCreate(Sender); end; end; procedure TFormkepeg.ButtondeleteClick(Sender: TObject); begin // validasi field NIP tidak boleh kosong if nip = '' then begin MessageDlg('Cari terlebih dahulu pegawainya!',mtWarning,[mbOK],0); Exit; end; // proses hapus data kepegawaian if Application.MessageBox('Apakah anda akan menghapus data ini?','Warning',MB_YESNO) = mrYes then begin with ADOQuery2 do begin SQL.Clear; SQL.Text := ' DELETE FROM KEPEGAWAIAN WHERE NIP = ' + QuotedStr(nip); ExecSQL; MessageDlg('Data sudah terhapus',mtInformation,[mbOK],0); end; FormCreate(Sender); end; end; procedure TFormkepeg.DBGridpencarianKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then DBGridpencarianDblClick(Sender); end; procedure TFormkepeg.FormActivate(Sender: TObject); begin FormCreate(Sender); end; end.

PraktikumPemrogramanDelphi

25