Supiyan Sauri)
Page 1
Langkah 3: Tentukan nama database yang akan dibuat, isi seperti gambar berikut.
Page 1
Langkah 4: Setelah membuat nama database, maka selanjutnya membuat tabel dan
mengisi field-field yang dibutuhkan, pada modul ini ada 5 tabel yang akan dibuat, yaitu:
tbl_barang, tbl_detailfaktur, tbl_faktur, tbl_login, tbl_supplier. berikut secara rinci
keterangan yang ada di dalam setiap tabel.
1. Tabel Barang
Nama Field
Tipe Data
KodeBarang
char
NamaBarang
varchar
Harga
int
Stok
int
Ukuran
5
25
11
11
Keterangan
Primary Key
Ukuran
11
15
5
5
11
11
Ketarangan
Primary Key, Auto Increment
3. Tabel Faktur
Nama Field
NomorFaktur
TanggalFaktur
TanggalJatuhTempo
TotalFaktur
Tipe Data
char
date
date
int
Ukuran
15
Ketarangan
Primary Key
11
4. Tabel Login
Nama Field
Tipe Data
User
varchar
Password
varchar
Ukuran
10
10
Ketarangan
Primary Key
5. Tabel Supplier
Nama Field
Tipe Data
KodeSupplier
char
NamaSupplier
varchar
AlamatSupplier
varchar
TeleponSupplier
varchar
Ukuran
5
25
50
14
Ketarangan
Primary Key
Page 2
Langkah 2: Berikut gambar tampilan desain relasi tabel yang akan dibuat.
tips: pastikan foreign key dahulu yang dipilih kemudian ke primary key, caranya lakukan
drag and drop, jangan lupa perhatikan constrain namenya jangan sampai ada yang sama.
3. Membuat View.
Langkah 1: View yang akan dibuat pada modul ini ada 2, yaitu: vdetailbeli & vfaktur.
Untuk membuat view di SQLyog sebenarnya menggunakan perintah sql command,
tetapi untuk mempermudah pembuatan, modul ini memanfaatkan QueryBuilder, berikut
tampilan contoh pembuatan dengan QueryBuilder pada vdetailbeli.
Modul Delphi 7 Aplikasi Penjualan Sederhana (By. Supiyan Sauri)
Page 3
Langkah 2: Buat view detailbeli, dengan cara klik kanan di bagian view, create view,
tentukan nama view dengan nama: vdetailbeli. maka akan muncul perintah sql, lakukan
copy-paste untuk sqlnya, dari QueryBuilder yang telah dibuat diatas. Berikut apabila
masih bingung perintah sqlnya tinggal copy-paste di bagian (SELECT * FROM ...).
CREATE
/*[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]*/
VIEW `db_ti12d`.`vdetailbeli`
AS
(SELECT
tbl_detailfaktur.NomorUrut
, tbl_faktur.NomorFaktur
, tbl_supplier.KodeSupplier
, tbl_supplier.NamaSupplier
, tbl_barang.KodeBarang
, tbl_barang.NamaBarang
, tbl_barang.Harga
, tbl_detailfaktur.JumlahBeli
, tbl_detailfaktur.Jumlah
FROM
db_ti12d.tbl_faktur,
db_ti12d.tbl_detailfaktur
INNER JOIN db_ti12d.tbl_supplier
ON (tbl_detailfaktur.KodeSupplier = tbl_supplier.KodeSupplier)
INNER JOIN db_ti12d.tbl_barang
ON (tbl_detailfaktur.KodeBarang = tbl_barang.KodeBarang));
Page 4
Langkah 3: Caranya sama dengan langkah 1 & langkah 2, berikut adalah urutan langkahlangkah yang harus di klik 2x terlebih dahulu pada QueryBuilder di vew faktur yang
masih kosong/belum terisi.
Urutan
Pilih Tabel
Field
1
tbl_faktur
NomorFaktur
2
tbl_faktur
TanggalFaktur
3
tbl_faktur
TanggalJatuhTempo
4
tbl_supplier
KodeSupplier
5
tbl_supplier
NamaSupplier
6
tbl_barang
KodeBarang
7
tbl_barang
NamaBarang
8
tbl_barang
Harga
9
tbl_detailfaktur
JumlahBeli
10
tbl_detailfaktur
Jumlah
11
tbl_faktur
TotalFaktur
Setelah membuat querybuilder lalu copy-paste, berikut sql lengkapnya.
CREATE
/*[ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
[DEFINER = { user | CURRENT_USER }]
[SQL SECURITY { DEFINER | INVOKER }]*/
VIEW `db_ti12d`.`vfaktur`
AS
(SELECT
tbl_faktur.NomorFaktur
, tbl_faktur.TanggalFaktur
, tbl_faktur.TanggalJatuhTempo
, tbl_supplier.KodeSupplier
, tbl_supplier.NamaSupplier
, tbl_barang.KodeBarang
, tbl_barang.NamaBarang
, tbl_barang.Harga
, tbl_detailfaktur.JumlahBeli
, tbl_detailfaktur.Jumlah
, tbl_faktur.TotalFaktur
FROM
db_ti12d.tbl_faktur,
db_ti12d.tbl_detailfaktur
INNER JOIN db_ti12d.tbl_barang
ON (tbl_detailfaktur.KodeBarang = tbl_barang.KodeBarang)
INNER JOIN db_ti12d.tbl_supplier
ON (tbl_detailfaktur.KodeSupplier = tbl_supplier.KodeSupplier));
4. Membuat Triggers.
Langkah 1: Dalam pembuatan modul ini ada 2 triggers yaitu: tsimpanpembelian &
thapuspembelian, untuk membuat triggers di dalam SQLyog adalah dengan cara klik
kanan folder triggers, pilih create trigger, tentukan nama triggersnya. Maka akan
muncul perintah sql command yang akan di excute.
Langkah 2: Copy-paste source code berikut ini untuk triggers tsimpanpembelian.
Modul Delphi 7 Aplikasi Penjualan Sederhana (By. Supiyan Sauri)
Page 5
DELIMITER $$
DROP TRIGGER /*!50032 IF EXISTS */ `xyz`.`TSimpanPembelian`$$
CREATE
/*!50017 DEFINER = 'root'@'localhost' */
TRIGGER `TSimpanPembelian` AFTER INSERT ON `tbl_detailfaktur`
FOR EACH ROW BEGIN
UPDATE tbl_barang SET stok = stok + new.
JumlahBeli WHERE KodeBarang = new.KodeBarang;
END;
$$
DELIMITER ;
Pada proses pertama pada aplikasi transaksi penjualan sederhana semua sudah selesai,
mulai dari pembuatan database, tabel, field, relasi tabel, view dan triggers. Semoga
modul ini dapat diikuti langkah-langkahnya secara mudah, dan dapat dimengerti oleh
orang yang baru mengenal database dan tools SQLyog sekalipun. Ilmu yang bermanfaat
adalah ilmu yang di bagikan. Pada modul ini sengaja tidak dijelaskan fungsi dan maksud
komponen yang digunakan, hanya beberapa saja yang dijelaskan.
Page 6
Page 7
Langkah 2: Setelah memilih ODBC Data Sources (32-bit), maka akan muncul kotak dialog
berikut.
Langkah 3: Untuk membuat koneksi ODBC baru klik Add, maka akan muncul gambar
berikut dan pilih yang MySQL ODBC 5.1 Driver. Kemudian klik Finish.
Langkah 4: Selanjutnya akan muncuk kotak dialog ODBC, samakan pada gambar
berikut.
Page 8
Langkah 5: Setelah diisi semua dengan benar maka klik ok dan akan ada tampilan
berikut, yang berarti koneksi yang dibuat sukses/berhasil. Klik Ok sekali lagi untuk
mengakhiri.
Koneksi ODBC sudah selesai. Apabila ada yang masih error, bisa jadi kesalahan dalam
menginstall odbc-nya. Semoga bisa diikuti langkah-langkahnya sampai selesai,
selanjutnya akan membuat form untuk data barang. Pada modul ini sengaja tidak
dijelaskan fungsi dan maksud komponen yang digunakan, hanya beberapa saja yang
dijelaskan.
Page 9
MainMenu1 : TMainMenu
Nilai Properties
Menu Utama
wsMaximized
FMenuUtama
ODBC_TI12D
QLogin
SELECT * FROM tbl_login
Klik kanan Add all fields
True
Isi rincian berikut :
Menu file
- Login
Page 10
GroupBox1 : TGroupBox
Label1 : TLabel (GroupBox1)
Label2 : TLabel (GroupBox1)
TEdit1 : TEdit (GroupBox1)
TEdit2 : TEdit (GroupBox1)
TBitBtn1 : TBitBtn (GroupBox1)
TBitBtn2 : TBitBtn (GroupBox1)
Image1 : Timage (main menu)
Image2 : Timage (Groupbox1)
Caption
Caption
Caption
Name
Name
PasswordChar
Caption
Name
Caption
Name
Picture
Stretch
Align
Picture
Stretch
Align
- Logout
- Keluar
Menu Data
- Barang
- Supplier
- Pembelian
.:: Form Login ::.
Username
Password
EdUser
EdPassword
* (agar karakter terbaca *)
Login
BtnLogin
Keluar
BtnKeluar
Cari lokasi gambar
True
alClient
Cari lokasi gambar
True
alClient
tips : untuk memanggil form lain maka gunakan tombol (alt+f11) pilih form yang akan
digunakan. misalnya kita berada di FMenuUtama dan ingin memanggil FBarang maka
gunakan tombol (alt+f11) untuk memanggilnya. (tombol alt+f11 adalah untuk
menampilkan kotak dialog use unit).
Langkah 2: pilih menu data, masuk ke supplier, maka akan mengarah ke kode
programnya. Isi dengan kode program berikut.
procedure Tfmenuutama.Supplier2Click(Sender: TObject);
begin
FSupplier.ShowModal;
end;
Langkah 3: pilih menu data, masuk ke pembelian, maka akan mengarah ke kode
programnya. Isi dengan kode program berikut.
procedure Tfmenuutama.Pembelian1Click(Sender: TObject);
begin
FFaktur.ShowModal;
end;
Page 11
Langkah 3: Mengisi kode pada menu file, bagian login, dengan kode berikut.
procedure Tfmenuutama.Login1Click(Sender: TObject);
begin
//menampilkan group login
GroupBox1.Visible := true;
eduser.Clear;
edpassword.Clear;
eduser.SetFocus;
Data1.Enabled := false;
//mengaktifkan fungsi logout
Logout1.Enabled := true;
Login1.Enabled := false //matikan login
end;
Langkah 4: Mengisi kode pada menu file, bagian logout, dengan kode berikut.
procedure Tfmenuutama.Logout1Click(Sender: TObject);
begin
//menyembunyikan group login
GroupBox1.Visible := false;
Data1.Enabled := false;
//mematikan fungsi logout
Logout1.Enabled := false;
Login1.Enabled := true; //aktifkan login
end;
Page 12
qlogin.SQL.Clear;
qlogin.SQL.Add('select * from tbl_login where '+
'user = '+QuotedStr(eduser.Text)+' AND '+
'password = '+QuotedStr(edpassword.Text)+'');
qlogin.Open;
if qlogin.RecordCount <> 0 THEN //jika ada/sesuai
begin
ShowMessage('SELAMAT DATANG GAN');
GroupBox1.Visible := False;
Data1.Enabled := True;;
end
else //jika data tidak ada/sesuai
begin
ShowMessage('USER/PASS SALAH GAN! PC LOADING');
eduser.SetFocus;
end;
end;
Page 13
Nilai Properties
.:: FORM DATA BARANG ::.
PoScreenCenter
FBarang
bvLowered
bvLowered
bvLowered
bvLowered
.:: Pencarian Data ::.
Kode Barang
Nama Barang
Page 14
ADOCommad1 : TADOCommand
DataSource1 : TDataSource
DBGrid1 : TDBGrid
Caption
Caption
Caption
Name
Name
Name
Name
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
ConnetionString
LoginPromt
Connection
Name
SQL
Klik 2x QBarang
Active
Connection
DataSet
Name
DataSource
Options... (dgEditing)
Options... (dbRowSelect)
Harga
Stok
Masukkan Nama Barang
EdKodeBarang
EdNamaBarang
EdHargaBarang
EdStok
EdCariBarang
Baru
BtnBaru
Edit
BtnEdit
Hapus
BtnHapus
Keluar
BtnKeluar
Batal
BtnBatal
BtnSimpan
<<
ODBC_TI12D
False
ADOConnection1
QBarang
SELECT * FROM tbl_barang
Klik kanan Add all fields
True
ADOConnection1
QBarang
DSBarang
DSBarang
False
True
Kemudian klik 2x lagi di Fbarang, cara tulisan var isikan koding seperti berikut.
var
FBarang: TFBarang;
//MEMBUAT VAR GLOBAL KET, sebagai keterangan tombol;
Modul Delphi 7 Aplikasi Penjualan Sederhana (By. Supiyan Sauri)
Page 15
KET : STRING;
Langkah 2: Pastikan kursor berada di procedure yang dibuat, kemudian tekan tombol
(shift+ctrl+c), isikan masing-masing procedure dengan kode program berikut.
PROCEDURE AUTONUMBER
procedure TFBarang.AUTONUMBER; (jangan ikut dicopy ya)
var kode : double; //membuat var untuk menampung kodebarang
begin
REFRESH_DB; //mengurutkan data melalui refresh db
//KONDISI, jika belum ada data 1 pun di tabel barang
IF QBarang.RecordCount = 0 THEN
kode := 0001
ELSE //KONDISI, jika sudah ada data minimal 1 di tbl
BEGIN
QBarang.Last; //melihat data yang terakhir
kode := StrToFloat(COPY(QBarangKodeBarang.AsString,2,4));
kode := kode + 1;
END;
EdKodeBarang.Text := 'B'+FormatFloat('0000',kode);
end;
PROCEDURE BERSIH
procedure TFBarang.BERSIH; (jangan ikut dicopy ya)
begin
EdKodeBarang.Clear;
EdNamaBarang.Clear;
EdHargaBarang.Clear;
EdStok.Clear;
EdCariBarang.Clear;
end;
PROCEDURE REFRESH_DB
procedure TFBarang.REFRESH_DB; (jangan ikut dicopy ya)
begin
//MEREFRESH DATA PADA TABEL
QBarang.Close;
QBarang.SQL.Clear;
QBarang.SQL.Add('select * from tbl_barang order by KodeBarang');
QBarang.Open;
end;
3. Setting ADOConnection.
Langkah 1: Pastikan posisi kursor berada di ADOConnection1, arahkan ke Object
Inspector, pilih tab Properties, pilih yang ConnectionString, klik 2x disebelah kanannya.
Maka akan muncul gambar berikut dan klik build.
Page 16
Langkah 2: Setelah klik Build maka akan muncul gambar berikut, pilih yang ada tulisan
ODBC Driver, kemudian klik Next.
Langkah 3: Ini adalah bagian penting, setelah di klik Next akan muncul kotak dialog
ketentuan ODBC, sesuaikan dengan gambar ini.
Langkah 4: Apabila sudah diisi dengan benar maka klik Ok, Klik Ok lagi.
tips : untuk yang form yang lain saya tidak menyertakan cara setting ADOConnection, jadi
gambaranya seperti diatas caranya. jika didalam form yang tidak ada ADOConnection
dan langsung menggunakan ADOQuery caranya sama, pilih di Propertiesnya yang
ConnectionString dan atur seperti diatas.
4. Mengisi Semua Kode Program.
Langkah 1: Pastikan sudah berada di Form Barang, kemudian pilih Object Inspector,
pilih Event, cari tulisan OnActive, klik 2x di sebelah kanannya, maka akan muncul kode
program yang masih kosong, isikan dengan kode program dibawah ini.
Modul Delphi 7 Aplikasi Penjualan Sederhana (By. Supiyan Sauri)
Page 17
Langkah 2: Mengisi kode program pada BtnBaru, caranya klik 2x BitBtn tersebut dan
copy kode berikut.
TOMBOL BARU
procedure TFBarang.BtnBaruClick(Sender: TObject);
begin
ATURPANEL(FALSE);
BERSIH;
AUTONUMBER;
KET := 'BARU'; //tombol ini pada saat diklik mempunyai keterangan BARU
EdNamaBarang.SetFocus; //fokus kursor ke ednamabarang
end;
Langkah 5: Jika kita klik di bagian DBGrid harus muncul kembali datanya di bagian Edit,
maka langkahnya pastikan sudah berada di DBGrid1, arahkan ke Object Inspector, pilih
Event cari tulisan OnCellClick (artinya apabila cell di klik, aksi apa yang akan dilakukan),
klik 2x di sebelah kanan OnCellClick maka akan muncul kotak isian kode program.
Isikan dengan kode berikut.
DBGRID ONCELLCLICK
procedure TFBarang.DBGrid1CellClick(Column: TColumn);
begin
//menampilkan data kekomponen edit melalui dbgrid
EdKodeBarang.Text := QBarangKodeBarang.AsString;
EdNamaBarang.Text := QBarangNamaBarang.AsString;
EdHargaBarang.Text := QBarangHarga.AsString;
Modul Delphi 7 Aplikasi Penjualan Sederhana (By. Supiyan Sauri)
Page 18
EdStok.Text := QBarangStok.AsString;
end;
Page 19
Page 20
Untuk form data barang sudah selesai, silahkan di running programnya. Apabila ada
yang masih error, kemungkinan karena kurang teliti saja. Semoga bisa diikuti langkahlangkahnya sampai selesai, selanjutnya akan membuat form data supplier. Pada modul
ini sengaja tidak dijelaskan fungsi dan maksud komponen yang digunakan, hanya
beberapa saja yang dijelaskan.
Page 21
Nilai Properties
.:: FORM SUPPLIER ::.
PoScreenCenter
FSupplier
bvLowered
bvLowered
bvLowered
bvLowered
.:: Pencarian Data ::.
Kode Supplier
Nama Supplier
Alamat Supplier
Page 22
ADOCommad1 : TADOCommand
DataSource1 : TDataSource
DBGrid1 : TDBGrid
Caption
Caption
Name
Name
Name
Name
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
ConnetionString
LoginPromt
Connection
Name
SQL
Klik 2x QSupplier
Active
Connection
DataSet
Name
DataSource
Options... (dgEditing)
Options... (dbRowSelect)
Telepon Supplier
Masukkan Nama Supplier
EdKodeSupplier
EdNamaSupplier
EdAlamatSupplier
EdTeleponSupplier
EdCariSupplier
Baru
BtnBaru
Edit
BtnEdit
Hapus
BtnHapus
Keluar
BtnKeluar
Batal
BtnBatal
Simpan
BtnSimpan
<<
ODBC_TI12D
False
ADOConnection1
QSupplier
SELECT * FROM tbl_supplier
Klik kanan Add all fields
True
ADOConnection1
QSupplier
DSSupplier
DSSupplier
False
True
Kemudian klik 2x lagi di FSupplier, cara tulisan var isikan koding seperti berikut.
var
FSupplier: TFSupplier;
//MEMBUAT VAR GLOBAL KET, sebagai keterangan tombol
KET : STRING;
Modul Delphi 7 Aplikasi Penjualan Sederhana (By. Supiyan Sauri)
Page 23
Langkah 2: Pastikan kursor berada di procedure yang dibuat, kemudian tekan tombol
(shift+ctrl+c), isikan masing-masing procedure dengan kode program berikut.
PROCEDURE AUTONUMBER
procedure TFSupplier.AUTONUMBER; (jangan ikut dicopy ya)
var kode : double; //membuat var untuk menampung kodesupplier
begin
REFRESH_DB; //mengurutkan data melalui refresh db
IF QSupplier.RecordCount = 0 THEN
kode := 0001
ELSE //KONDISI, jika sudah data minimal data 1 di tbl
BEGIN
QSupplier.Last; //melihat data yang terakhir
kode := StrToFloat(COPY(QSupplierKodeSupplier.AsString,2,4));
kode := kode + 1;
END;
EdKodeSupplier.Text := 'S'+FormatFloat('0000',kode);
end;
PROCEDURE BERSIH
procedure TFSupplier.BERSIH; (jangan ikut dicopy ya)
begin
EdKodeSupplier.clear;
EdNamaSupplier.Clear;
EdAlamatSupplier.Clear;
EdTeleponSupplier.Clear;
EdCariSupplier.Clear;
end;
PROCEDURE REFRESH_DB
procedure TFSupplier.REFRESH_DB; (jangan ikut dicopy ya)
begin
//MEREFRESH DATA PADA TABEL
QSupplier.Close;
QSupplier.SQL.Clear;
QSupplier.SQL.Add('select * from tbl_supplier order by KodeSupplier');
QSupplier.Open;
end;
Page 24
Langkah 2: Mengisi kode program pada BtnBaru, caranya klik 2x BitBtn tersebut dan
copy kode berikut.
TOMBOL BARU
procedure TFSupplier.BtnBaruClick(Sender: TObject); (jangan ikut dicopy ya)
begin
ATURPANEL(FALSE);
BERSIH;
AUTONUMBER;
KET :='BARU'; //tombol ini pada saat diklik mempunyai keterangan BARU
EdNamaSupplier.SetFocus; //fokus kursor ke ednamasupplier
end;
Langkah 5: Jika kita klik di bagian DBGrid harus muncul kembali datanya di bagian Edit,
maka langkahnya pastikan sudah berada di DBGrid1, arahkan ke Object Inspector, pilih
Event cari tulisan OnCellClick (artinya apabila cell di klik, aksi apa yang akan dilakukan),
klik 2x di sebelah kanan OnCellClick maka akan muncul kotak isian kode program.
Isikan dengan kode berikut.
DBGRID ONCELLCLICK
procedure TFSupplier.DBGrid1CellClick(Column: TColumn); (jangan dicopy)
begin
//menampilkan data kekomponen edit melalui dbgrid
EdKodeSupplier.Text := QSupplierKodeSupplier.AsString;
EdNamaSupplier.Text := QSupplierNamaSupplier.AsString;
EdAlamatSupplier.Text := QSupplierAlamatSupplier.AsString;
EdTeleponSupplier.Text := QSupplierTeleponSupplier.AsString;
end;
Page 25
Page 26
Untuk form data supplier sudah selesai, silahkan di running programnya. Apabila ada
yang masih error, kemungkinan karena kurang teliti saja. Semoga bisa diikuti langkahlangkahnya sampai selesai, selanjutnya akan membuat form faktur. Pada modul ini
sengaja tidak dijelaskan fungsi dan maksud komponen yang digunakan, hanya beberapa
saja yang dijelaskan.
Page 27
Nilai Properties
.:: FORM FAKTUR ::.
PoScreenCenter
FFaktur
bvLowered
bvLowered
.:: Data Faktur ::.
Page 28
GroupBox2 : TGroupBox
GroupBox3 : TGroupBox
GroupBox4 : TGroupBox
GroupBox5 : TGroupBox
GroupBox6 : TGroupBox
Label1 : TLabel (GroupBox1)
Label2 : TLabel (GroupBox1)
Label3 : TLabel (GroupBox1)
Label4 : TLabel (GroupBox1)
Label5 : TLabel (GroupBox2)
Label6 : TLabel (GroupBox2)
Label7 : TLabel (GroupBox3)
Label8 : TLabel (GroupBox3)
Label9 : TLabel (GroupBox3)
Label10 : TLabel (GroupBox3)
Label11 : TLabel (GroupBox3)
Label12 : TLabel (GroupBox3)
Label13 : TLabel (GroupBox3)
Label14 : TLabel (GbSupplier)
Label15 : TLabel (GbBarang)
TDateTimePicker1:
TDateTimePicker (GroupBox1)
TdateTimePicker2:
TDateTimePicker (GroupBox1)
TEdit1 : TEdit (GroupBox2)
TEdit2 : TEdit (GroupBox2)
TButton1 : TButton (GroupBox2)
TEdit3 : TEdit (GroupBox3)
TEdit4 : TEdit (GroupBox3)
TEdit5 : TEdit (GroupBox3)
TEdit6 : TEdit (GroupBox3)
TButton2 : TButton (GroupBox3)
TButton3 : TButton (GroupBox3)
TButton4 : TButton (GroupBox3)
TBitBtn1 : TBitBtn (Panel1)
TBitBtn2 : TBitBtn (Panel1)
TBitBtn3 : TBitBtn (Panel2)
TEdit7 : TEdit (GbSupplier)
TEdit8 : TEdit (GbBarang)
ADOConnection1 :
TADOConnection
ADOCommad1 : TADOCommand
Caption
Caption
Caption
Caption
Name
Caption
Name
Caption
Name
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Caption
Name
Caption
Caption
Name
Name
DtpJatuhTempo
Name
Name
Caption
Name
Name
Name
Name
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Caption
Name
Name
Name
ConnetionString
LoginPromt
Connection
EdKodeSupplier
EdNamaSupplier
...
BtnCariNamaSupplier
EdKodeBarang
EdNamaBarang
EdHarga
EdJumlah
...
BtnCariNamaBarang
+
BtnTambah
BtnKurang
Baru
BtnBaru
Keluar
BtnKeluar
Cetak Faktur
BtnCetak
EdCariNamaSupplier
EdCariNamaBarang
ODBC_TI12D
False
ADOConnection1
Page 29
ADOQuery1 : TADOQuery
DataSource1 : TDataSource
DBGrid1 : TDBGrid
ADOQuery2 : TADOQuery
DataSource2 : TDataSource
DBGrid2 : TDBGrid
ADOQuery3 : TADOQuery
DataSource3 : TDataSource
DBGrid3 : TDBGrid
ADOQuery4 : TADOQuery
Connection
Name
SQL
Klik 2x QFaktur
Active
DataSet
Name
DataSource
Options... (dgEditing)
Options... (dbRowSelect)
Connection
Name
SQL
Klik 2x Barang
Active
DataSet
Name
DataSource
Options... (dgEditing)
Options... (dbRowSelect)
Connection
Name
SQL
Klik 2x QSupplier
Active
DataSet
Name
DataSource
Options... (dgEditing)
Options... (dbRowSelect)
Connection
Name
ADOConnection1
QFaktur
SELECT * FROM vdetailbeli
Klik kanan Add all fields
True
QFaktur
DsFaktur
DsFaktur
False
True
ADOConnection1
QBarang
SELECT * FROM tbl_barang
Klik kanan Add all fields
True
QBarang
DsBarang
DsBarang
False
True
ADOConnection1
QSupplier
SELECT * FROM tbl_supplier
Klik kanan Add all fields
True
QSupplier
DsSupplier
DsSupplier
False
True
ADOConnection1
Qtotal
Langkah 2: Pastikan kursor berada di procedure yang telah dibuat, kemudian tekan
tombol (shift+ctrl+c), isikan masing-masing procedure dengan kode program berikut.
PROCEDURE AUTONUMBER
Modul Delphi 7 Aplikasi Penjualan Sederhana (By. Supiyan Sauri)
Page 30
procedure TFFaktur.AUTONUMBER;
var nomor : double;
BLN, THN :string;
begin
//mengambil data bulan dan tahun
BLN := FormatDateTime('MM',DtpTanggal.Date);
THN := FormatDateTime('yyyy', DtpTanggal.Date);
//refresh database
REFRESH_DB;
//kondisi untuk menentukan urutan nomor faktur
IF QFaktur.RecordCount = 0 THEN
nomor := 00001
ELSE
BEGIN
QFaktur.Last;
nomor := StrToFloat(COPY(QFakturNomorFaktur.AsString,3,5));
nomor := nomor + 1;
END;
LblNoFaktur.Caption := 'FP'+FormatFloat('00000',nomor)+
'/'+BLN+'/'+THN;
end;
PROCEDURE BERSIH
procedure TFFaktur.BERSIH;
begin
LblNoFaktur.Caption:='-';
DtpTanggal.Date:=Date;
DtpJatuhTempo.Date:=Date;
EdKodeSupplier.Clear;
EdNamaSupplier.Clear;
EdKodeBarang.Clear;
EdNamaBarang.Clear;
EdHarga.Clear;
EdJumlahBeli.Clear;
LblTotal.Caption:='-';
end;
PROCEDURE REFRESH_DB
procedure TFFaktur.REFRESH_DB;
begin
//refresh detail;
QFaktur.Close;
QFaktur.SQL.Clear;
QFaktur.SQL.Add('select * from vdetailbeli order by '+
' NomorFaktur');
QFaktur.Open;
end;
PROCEDURE REFRESH_INPUT
procedure TFFaktur.REFRESH_INPUT;
begin
REFRESH_FAKTUR;
EdKodeBarang.Clear;
EdNamaBarang.Clear;
EdHarga.Clear;
EdJumlahBeli.Clear;
EdKodeBarang.SetFocus;
end;
Modul Delphi 7 Aplikasi Penjualan Sederhana (By. Supiyan Sauri)
Page 31
PROCEDURE REFRESH_FAKTUR
procedure TFFaktur.REFRESH_FAKTUR;
begin
QFaktur.Close;
QFaktur.SQL.Clear;
QFaktur.SQL.Add('select * from vdetailbeli where '+
'NomorFaktur = '+QuotedStr(LblNoFaktur.Caption)+'');
QFaktur.Open;
end;
PROCEDURE TOTAL_BAYAR
procedure TFFaktur.TOTAL_BAYAR;
begin
REFRESH_FAKTUR;
IF QFaktur.RecordCount = 0 THEN
LblTotal.Caption := '0'
ELSE
BEGIN
QTotal.Close;
QTotal.SQL.Clear;
QTotal.SQL.Add('select sum(Jumlah) as totalx from '+
' vdetailbeli where '+
'NomorFaktur = '+QuotedStr(LblNoFaktur.Caption)+'');
QTotal.Open;
LblTotal.Caption := QTotal.FieldValues['totalx'];
END;
end;
Langkah 2: Mengisi kode program pada BtnKeluar, caranya klik 2x BitBtn tersebut dan
copy kode berikut.
TOMBOL KELUAR
procedure TFFaktur.BtnKeluarClick(Sender: TObject);
begin
close;
end;
Page 32
Langkah 3: Mengisi kode program pada BtnBaru, caranya klik 2x BitBtn tersebut dan
copy kode berikut.
TOMBOL BARU
procedure TFFaktur.BtnBaruClick(Sender: TObject);
begin
BERSIH;
AUTONUMBER;
EdKodeSupplier.SetFocus;
end;
Page 33
Page 34
Langkah 10: Mengisi kode program pada BtnTambah (ada di GroupBox3), fungsinya
apabila melakukan transaksi supplier boleh membeli lebih dari 1 barang. Isikan kode
berikut.
TOMBOL TAMBAH
procedure TFFaktur.BtnTambahClick(Sender: TObject);
var jumlahbayar : integer;
begin
QFaktur.Close;
QFaktur.SQL.Clear;
QFaktur.SQL.Add('select * from vdetailbeli where '+
'NomorFaktur = '+QuotedStr(LblNoFaktur.Caption)+' AND '+
'KodeBarang = '+QuotedStr(EdKodeBarang.Text)+'');
QFaktur.Open;
IF QFaktur.RecordCount = 0 THEN
BEGIN
jumlahbayar := StrToInt(EdHarga.Text)*
StrToInt(EdJumlahBeli.Text);
//proses penyimpanan
ADOCommand1.CommandText := 'INSERT INTO '+
'tbl_detailfaktur(NomorFaktur,KodeSupplier,'+
'KodeBarang,JumlahBeli,Jumlah) '+
'values('+QuotedStr(LblNoFaktur.Caption)+','+
QuotedStr(EdKodeSupplier.Text)+','+
QuotedStr(EdKodeBarang.Text)+','+
QuotedStr(EdJumlahBeli.Text)+','+
IntToStr(jumlahbayar)+')';
ADOCommand1.Execute;
END
ELSE
ShowMessage('Data Sudah Ada Sebelumnya');
REFRESH_INPUT;
TOTAL_BAYAR;
end;
Langkah 11: Mengisi kode program pada BtnKurang (ada di GroupBox3), fungsinya
apabila melakukan transaksi supplier boleh membatalkan atau menghapus barang yang
tidak jadi dibeli sebelum disimpan ke database. Isikan kode berikut.
TOMBOL KURANG
procedure TFFaktur.BtnKurangClick(Sender: TObject);
begin
Modul Delphi 7 Aplikasi Penjualan Sederhana (By. Supiyan Sauri)
Page 35
Langkah 12: Mengisi BtnCetakFaktur (ada di panel2), tombol ini tidak akan berfungsi
fasilitas cetaknya sebelum membuat terlebih dahulu report yang sesuai. Apabila report
sudah dibuat maka tombol cetak ini sebelum mencetak report tombol ini menyimpan
data yang diinputkan ke database. Ini adalah kode programnya.
TOMBOL CETAK FAKTUR + SIMPAN DATABASE
procedure TFFaktur.BtnCetakFakturClick(Sender: TObject);
begin
ADOCommand1.CommandText := 'INSERT INTO tbl_faktur '+
'VALUES('+QuotedStr(LblNoFaktur.Caption)+','+
QuotedStr(FormatDateTime('yyyy/MM/dd',DtpTanggal.Date))+','+
QuotedStr(FormatDateTime('yyyy/MM/dd',DtpJatuhTempo.Date))+','+
QuotedStr(LblTotal.Caption)+')';
ADOCommand1.Execute;
ShowMessage('DATA BERHASIL DISIMPAN');
//untuk mencetak faktur harus membuat form report terlebih dahulu
flaporan.QLaporan.Close;
flaporan.QLaporan.SQL.Clear;
flaporan.QLaporan.SQL.Add('select * from vfaktur where '+
'NomorFaktur = '+QuotedStr(LblNoFaktur.Caption)+'');
flaporan.QLaporan.Open;
// preview laporan
flaporan.FakturPembelian.Preview;
FormActivate(Sender);
end;
tips : khusus tombol cetak faktur + simpan database, untuk memanggil form lain maka
gunakan tombol (alt+f11) pilih form yang akan digunakan. misalnya kita berada di
FFaktur dan ingin memanggil flaporan maka gunakan tombol (alt+f11) untuk
memanggilnya. (tombol alt+f11 adalah untuk menampilkan kotak dialog use unit).
Untuk form data faktur sudah selesai, silahkan di running programnya. Apabila ada
yang masih error, kemungkinan karena kurang teliti saja. Semoga bisa diikuti langkahlangkahnya sampai selesai, selanjutnya akan membuat form untuk report. Pada modul
ini sengaja tidak dijelaskan fungsi dan maksud komponen yang digunakan, hanya
beberapa saja yang dijelaskan.
Page 36
Page 37
Komponen
Form1 : TForm1
ADOQuery1 : TADOQuery
QuickRep1 : TQuickRep
QRLabel1 (PageHeader)
QRLabel2 (PageHeader)
QRLabel3 (PageHeader)
QRLabel4 (PageHeader)
QRLabel5 (PageHeader)
QRLabel6 (PageHeader)
QRLabel7 (PageHeader)
QRLabel8 (PageHeader)
QRLabel9 (PageHeader)
QRLabel10 (PageHeader)
QRLabel11 (PageHeader)
QRLabel12 (PageHeader)
QRLabel13 (PageHeader)
QRDBText1 (PageHeader)
QRDBText2 (PageHeader)
QRDBText3 (PageHeader)
QRDBText4 (PageHeader)
QRDBText5 (PageHeader)
QRLabel14 (PageHeader)
QRLabel15 (PageHeader)
QRLabel16 (PageHeader)
QRLabel17 (PageHeader)
QRLabel18 (PageHeader)
QRLabel19 (PageHeader)
QRShape1 (PageHeader)
QRShape2 (PageHeader)
QRShape3 (PageHeader)
QRShape4 (PageHeader)
QRShape5 (PageHeader)
Nilai Properties
PoScreenCenter
FLaporan
ODBC_TI12D
QLaporan
SELECT * FROM vfaktur
Klik kanan Add all fields
True
FakturPembelian
QLaporan
FAKTUR PEMELIAN
PT TI 12 D TOPAN ANGIN BADAI
Jalan Apa Adanya Gang
Sederhana, Samping Abadi No.
10 Lampung
No Faktur
Tanggal
Jatuh Tempo
:
:
:
Kode Supplier
Nama Supplier
:
:
QFaktur
NomorFaktur
False
QFaktur
TanggalFaktur
False
QFaktur
TanggalJatuhTempo
False
QFaktur
KodeSupplier
False
QFaktur
NamaSupplier
False
No
Kode Barang
Nama Barang
Harga
Jumlah Beli
Jumlah
1
1
1
1
Page 38
QRShape6 (PageHeader)
QRSysDate1 (Detail Band)
QRDBText6 (Detail Band)
QRDBText7 (Detail Band)
QRLabel20 (Detail Band)
QRDBText8 (Detail Band)
QRShape13 (Summary)
QRLabel24 (Summary)
QRLabel25 (Summary)
Width
Data
DataSet
DataField
AutoSize
DataSet
DataField
AutoSize
Caption
DataSet
DataField
Mask
AutoSize
DataSet
DataField
AutoSize
DataSet
DataField
AutoSize
Caption
DataSet
DataField
Mask
Alignment
AutoSize
Width
Width
Width
Width
Width
Caption
Caption
DataSet
DataField
Mask
Alignment
AutoSize
Caption
Caption
1
qrsDetailNo
QFaktur
KodeBarang
False
QFaktur
NamaBarang
False
Rp.
QFaktur
Harga
#,##0
False
QFaktur
JumlahBeli
False
QFaktur
NamaSupplier
False
Rp.
QFaktur
Jumlah
#,##0
taRightJustify
False
1
1
1
1
1
Total
Rp.
QFaktur
TotalFaktur
#,##0
taRightJustify
False
Kasir,
Prof. Dr. Ir. Tanpa Nama Asli,
M.Kom., M.T.I
Page 39
Langkah 2: Setelah klik 2x dibagian tersebut, maka akan muncul kotak dialog Report
Setting, atur sesuai dengan gambar berikut.
Langkah 3: apabila sudah sesuai dengan gambar diatas atau keinginan klik Ok.
Page 40
Semua program telah dibuat, maka selesai juga modul ini semoga bisa diikuti dari awal
desain database sampai menggunakan qreport, mohon maaf apabila ada kesalahan
dalam penulisan kata atau huruf, karena kurang telitinya pembuat modul ini. silahkan
memberikan pesan kesan setelah mengikuti modul ini. Pada modul ini sengaja tidak
dijelaskan fungsi dan maksud komponen yang digunakan, hanya beberapa saja yang
dijelaskan.
Saya adalah adalah manusia biasa, kesalahan pasti ada didalam modul ini. silahkan
inisiatif sendiri atau membenarkan kesalahan tersebut.
siapa tahu ada yang penasaran berikut adalah link download dari program pembelian
dan sudah dimodifikasi sehingga desainya lumayan menarik langsung saja menuju link
berikut, : http://www.filedais.com/hejygzxo5vpd.htm
Page 41