Praktikum Pemrograman Delphi 1
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]
);
Praktikum Pemrograman Delphi 2
Tipe Data
Praktikum Pemrograman Delphi 3
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;
Praktikum Pemrograman Delphi 4
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;
Praktikum Pemrograman Delphi 5
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 ORDER BY
ASC SELECT
DESC TOP
DISTINCT TOP PERCENT
DISTINCTROW
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),
Praktikum Pemrograman Delphi 6
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
Praktikum Pemrograman Delphi 7
Operator Pembanding
Logical Operators
Operator Precedence
Contoh 1 :
SELECT SerialNum, Brand, Department
FROM Computers
WHERE (Brand = 'Dell' OR Brand = 'Gateway')
AND OfficeNumber < 130;
LIKE Operator
Contoh 2 :
SELECT *
FROM Tools
WHERE Manufacturer LIKE 'D*' AND Location LIKE '[A-C]';
Praktikum Pemrograman Delphi 8
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');
Praktikum Pemrograman Delphi 9
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. Buka aplikasi Microsoft Access 2007 yang sudah terinstal pada komputer
2. Klik File -> New -> Blank Database
3. 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. Lalu klik OK. Terakhir klik Create.
6. Buatlah tabel pegawai dengan struktur sebagai berikut :
Tabel Name : Biodata
Field Name
Data Type
Field Size
Key
NIP
Text
5
Primary Key
Nama
Text
30
Tempat_Lahir
Text
15
Tanggal_Lahir
DateTime
Alamat
Text
50
Kode_POS
Text
5
Telp
Text
15
Tabel Name : Kepegawaian
Field Name
Data Type
Field Size
Key
NIP
Text
5
Jabatan
Text
25
Golongan
Text
10
Bidang_Kerja
Text
25
Tanggal_Masuk
DateTime
Status
Text
10
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
Data Type
Field Size
Key
NIP
Text
5
Primary Key
Field Name
Data Type
Field Size
Key
NIP
Text
5
Praktikum Pemrograman Delphi 10
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
Property
AdoConnection
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
AdoQuery
Name : Adoquery1
SQL : Select * From Biodata
Active : True
DataSource
Name : Datasource1
DataSet : Adoquery1
DBGrid
DataSource : Datasource1
Praktikum Pemrograman Delphi 11
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;
Praktikum Pemrograman Delphi 12
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) + ' , ' +
Praktikum Pemrograman Delphi 13
' 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
Praktikum Pemrograman Delphi 14
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
Praktikum Pemrograman Delphi 15
Marketing
Produksi
Gudang
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;
Praktikum Pemrograman Delphi 16
DateTimePickerkepeg.Date := DBGridkepegawaian.Fields[4].AsDateTime;
ComboBoxstatus.Text := DBGridkepegawaian.Fields[5].AsString;
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;
Praktikum Pemrograman Delphi 17
// 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;
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
Praktikum Pemrograman Delphi 18
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;
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;
Praktikum Pemrograman Delphi 19
Buttonkepeg: TButton;
GroupBox1: TGroupBox;
Editcari: TEdit;
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);
Praktikum Pemrograman Delphi 20
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;
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;
Praktikum Pemrograman Delphi 21
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;
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.
Praktikum Pemrograman Delphi 22
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
Praktikum Pemrograman Delphi 23
Active := False;
SQL.Clear;
SQL.Text :=
' 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;
Praktikum Pemrograman Delphi 24
end;
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 ' +
Praktikum Pemrograman Delphi 25
' 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;
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.
Tidak ada komentar:
Posting Komentar