Modul 6 Delphi
-
Upload
yopi-agbari -
Category
Documents
-
view
253 -
download
0
Transcript of Modul 6 Delphi
-
8/18/2019 Modul 6 Delphi
1/18
Buatlah Tabel Penjualan Seperti Berikut :
Simpan dengan nama Penjualan.db. Tabel penjualan berfungsi untuk menampung semua data transaksi
penjualan
Buatlah tabel bantu seperti berikut :
Simpan dengan nama Bantu.db. Tabel bantu berfungsi sebagai keranjang belanja, untuk menampung
data barang sementara pada penjualan.
Pada Project Penjualan Tambahkan Form Baru dengan Mengklik File+New+Form , selanjutnya simpan
dengan nama UPenjualan.
MODUL 6
-
8/18/2019 Modul 6 Delphi
2/18
Rancanglah Form Seperti berikut :
Catatan :
1. Table 1
•
Name --> TbJual• TableName --> Penjualan.DB
• Active --> True
2. Table 2
• Name --> Tbbarang
• TableName --> Barang.Db
• Active --> True
3. Table 3
• Name--> TbStock
• Tablename --> Stock.Db
• Active --> True
4. Table 4
• Name--> TbBantu
• Tablename --> Bantu.Db
• Active --> True
5. DataSource 1
• Name --> DsBarang
• Dataset --> TbBarang
6. DataSource 2
• Name --> DsBantu
• Dataset --> TbBantu
7. Dbgrid 1
• DataSource --> DSbarang
8. Dbgrid 2
• DataSource --> DSbantu
Table 1
Table 3
Table 4
Table 2DataSource1
Datasource2
Dbgrid 1
Dbgrid 2
Datetimepicker
-
8/18/2019 Modul 6 Delphi
3/18
Kode Program Data Penjualan Barang
private
//Buat prosedure tersendiri/baru
{ Private declarations }
PROCEDURE KOSONGKAN_TABEL_BANTU;
PROCEDURE TOTAL_PENJUALAN;
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
{$R *.dfm}
PROCEDURE TFORM5.TOTAL_PENJUALAN();
VAR
TOTAL:REAL;
BEGIN
TOTAL:=0;
//AKTIFKAN TABEL BANTU
TBBANTU.Active :=FALSE;
TBBANTU.Active :=TRUE;
//BACA DATA DARI AWAL SAMPAI AKHIR RECORD
WHILE NOT TBBANTU.Eof DO
BEGIN
TOTAL:=TOTAL+TBBANTU['TOTAL'];
//PINDAH KE RECORD BERIKUTNYA
TBBANTU.MoveBy(1);
-
8/18/2019 Modul 6 Delphi
4/18
END;
TBBANTU.Active :=FALSE;
TBBANTU.Active :=TRUE;
//MEROBAH LABEL 11 KE FORMAT ANGKA
LABEL11.Caption :=FORMAT('%16.2M',[TOTAL]);
END;
PROCEDURE TFORM5.KOSONGKAN_TABEL_BANTU;
VAR
I:INTEGER;
BEGIN
TBBANTU.Active :=FALSE;
TBBANTU.Active:=TRUE;
FOR I:=1 TO TBBANTU.RecordCount DO
BEGIN
TBBANTU.Delete;
END;
END;
procedure TForm5.FormShow(Sender: TObject);
begin
EDIT1.Clear;
EDIT2.Clear;
EDIT3.Clear;
EDIT4.Clear;
EDIT5.Clear;
EDIT6.Clear;
EDIT7.Clear;
DateTimePicker1.Date:=DATE;
DateTimePicker1.Enabled :=FALSE;
EDIT2.Enabled :=FALSE;
EDIT3.Enabled :=FALSE;
-
8/18/2019 Modul 6 Delphi
5/18
EDIT4.Enabled :=FALSE;
EDIT5.Enabled :=FALSE;
EDIT6.Enabled :=FALSE;
EDIT7.Enabled :=FALSE;
//memanggil prosedure Kosongkan tabel bantu
KOSONGKAN_TABEL_BANTU;
//Memformat Nilai Data Dari label 11
label11.Caption :=format('%16.2m',[0.0])
end;
procedure TForm5.Edit1KeyPress(Sender: TObject; var Key: Char);
VAR
CARI:BOOLEAN;
begin
IF KEY=#13 THEN
BEGIN
TBJUAL.Active :=FALSE;
TBJUAL.Active :=TRUE;
CARI:=TBJUAL.FindKey([EDIT1.TEXT]);
IF CARI THEN
BEGIN
MessageDlg('NOMOR FAKTUR SUDAH TERDAFTAR',mtWarning,[MBOK],0);
EDIT1.SetFocus;
END
ELSE
BEGIN
DateTimePicker1.Enabled :=TRUE;
DateTimePicker1.SetFocus;
END;
END;
end;
-
8/18/2019 Modul 6 Delphi
6/18
procedure TForm5.DateTimePicker1KeyPress(Sender: TObject; var Key: Char);
begin
IF KEY=#13 THEN
BEGIN
DBGrid1.SetFocus;
END;
end;
procedure TForm5.DBGrid1DblClick(Sender: TObject);
begin
//PINDAHKAN DATA DARI TABEL BARANG KE OBJEK EDIT
EDIT2.Text:=TBBARANG['KDBRG'];
EDIT3.Text:=TBBARANG['NMBRG'];
EDIT5.Text:=FLOATTOSTR(TBBARANG['HRGBRG']);
EDIT6.Enabled :=TRUE;
EDIT6.SetFocus
end;
procedure TForm5.Edit2Change(Sender: TObject);
VAR
CARI:BOOLEAN;
begin
//Menampilkan Jumlah stock barang pada edit4
TBSTOCK.Active :=FALSE;
TBSTOCK.Active :=TRUE;
CARI:=TBSTOCK.FindKey([EDIT2.TEXT]);
IF CARI THEN
BEGIN
EDIT4.Text:=TBSTOCK['STOCK'];
END;
-
8/18/2019 Modul 6 Delphi
7/18
end;
procedure TForm5.Edit6KeyPress(Sender: TObject; var Key: Char);
VAR
UJI:INTEGER;
begin
IF KEY=#13 THEN
BEGIN
//UJI APAKAH YANG DIINPUT ANGKA ATAU TIDAK
TRY
UJI:=STRTOINT(EDIT5.Text);
//KALAU YANG DIINPUT ANGKA
EDIT7.Enabled :=TRUE;
EDIT7.SetFocus;
EXCEPT
//KALAU YANG DIINPUT BUKAN ANGKA
MessageDlg('INPUTKAN ANGKA ATAU NUMERIC',mtWarning,[MBOK],0);
EDIT6.SetFocus;
END;
end;
END;
procedure TForm5.Edit7KeyPress(Sender: TObject; var Key: Char);
VAR
UJI:INTEGER;
begin
IF KEY=#13 THEN
BEGIN
//UJI APAKAH YANG DIINPUT ANGKA ATAU TIDAK
TRY
UJI:=STRTOINT(EDIT7.Text);
-
8/18/2019 Modul 6 Delphi
8/18
//KALAU YANG DIINPUT ANGKA
BUTTON1.Enabled :=TRUE;
Button1.SetFocus;
EXCEPT
//KALAU YANG DIINPUT BUKAN ANGKA
MessageDlg('INPUTKAN ANGKA ATAU NUMERIC',mtWarning,[MBOK],0);
EDIT7.SetFocus;
END;
end;
end;
procedure TForm5.Button1Click(Sender: TObject);
VAR
CARI:BOOLEAN;
begin
TBBANTU.Active :=FALSE;
TBBANTU.Active :=TRUE;
//lihat apakah barang yang diinputkan sudah terdaftar atau belum
CARI:=TBBANTU.FindKey([EDIT2.TEXT]);
IF CARI THEN
BEGIN
//Jika sudah terdaftar lakukan pengeditan data
TBBANTU.EDIT;
TBBANTU['KDBRG']:=EDIT2.Text;
TBBANTU['NMBRG']:=EDIT3.Text;
TBBANTU['HRGJUAL']:=STRTOFLOAT(EDIT6.Text);
TBBANTU['JMLJUAL']:=STRTOFLOAT(EDIT7.Text);
TBBANTU['TOTAL']:=STRTOFLOAT(EDIT6.Text)*STRTOFLOAT(EDIT7.Text);
TBBANTU.Post;
END
ELSE
-
8/18/2019 Modul 6 Delphi
9/18
BEGIN
//jika belum terdaftar simpan data baru
TBBANTU.Append;
TBBANTU['KDBRG']:=EDIT2.Text;
TBBANTU['NMBRG']:=EDIT3.Text;
TBBANTU['HRGJUAL']:=STRTOFLOAT(EDIT6.Text);
TBBANTU['JMLJUAL']:=STRTOFLOAT(EDIT7.Text);
TBBANTU['TOTAL']:=STRTOFLOAT(EDIT6.Text)*STRTOFLOAT(EDIT7.Text);
TBBANTU.Post;
end;
EDIT2.Clear ;
EDIT3.Clear ;
EDIT4.Clear ;
EDIT5.Clear ;
EDIT6.Clear ;
EDIT7.Clear ;
// memanggil prosedure total penjualan
TOTAL_PENJUALAN;
END;
procedure TForm5.Button2Click(Sender: TObject);
begin
EDIT2.Clear ;
EDIT3.Clear ;
EDIT4.Clear ;
EDIT5.Clear ;
EDIT6.Clear ;
EDIT7.Clear ;
end;
procedure TForm5.Button3Click(Sender: TObject);
var
-
8/18/2019 Modul 6 Delphi
10/18
cari:boolean;
begin
TBBANTU.Active :=false;
TBBANTU.Active:=true;
//-----------------------------------------
//Baca Tabel Bantu Dari Awal Sampai Akhir
//-----------------------------------------
while not TBBANTU.Eof do
begin
//-------------------------------------------------
//Simpan Data Dari Tabel bantu Ke Tabel Transaksi
//-------------------------------------------------
TBJUAL.Active :=true;
TBJUAL.Append;
TBJUAL['nofaktur']:=edit1.Text;
tbjual['tglfaktur']:=DateTimePicker1.Date;
TBJUAL['kdbrg']:=TBBANTU['kdbrg'];
TBJUAL['hrgjual']:=TBBANTU['hrgjual'];
TBJUAL['jmljual']:=TBBANTU['jmljual'];
TBJUAL.Post;
TBJUAL.Active :=false;
//lakukan pencarian data pada tabel stock
TBSTOCK.Active :=true;
cari:=TBSTOCK.FindKey([tbbantu['kdbrg']]);
if cari then
begin
//edit data yang ada pada tabel stock
//kurangi jumlah barang pada stock dengan jumlah barang yg dijual
TBSTOCK.Edit;
TBSTOCK['kdbrg']:=TBBANTU['kdbrg'];
TBSTOCK['stock']:=TBSTOCK['stock']-TBBANTU['jmljual'];
-
8/18/2019 Modul 6 Delphi
11/18
TBSTOCK.Post;
TBSTOCK.Active :=false;
end;
TBBANTU.MoveBy(1);
end;
FormShow(sender);
Edit1.SetFocus;
end;
procedure TForm5.Button4Click(Sender: TObject);
begin
FormShow(sender);
edit1.SetFocus;
end;
procedure TForm5.Button5Click(Sender: TObject);
begin
close;
end;
end.
MEMBUAT LAPORAN PENJULAN PER TANGGAL
1. Buatlah Form baru dan simpan dengan nama ULAPJUAL
2. Tambahkak objek MAINMENU dari tab standar
3. Double Klik Mainmenu dan tambahkan menu seperti berikut :
4. Tambahkan objek Table dari tab BDE, Ganti properti name dengan Tbbarang, properti
Tablename Barang.db dan Properti Active ganti dengan true
5. Tambahkan Objek Query dari tab BDE, ganti Properti Name dengean Qrjual, Properti SQL
masukan Rumus SELECT * FROM Penjualan.DB untuk menghubungkan ke tabel penjualan
6. Tambahkan objek tanggal pada form seperti gambar berikut :
-
8/18/2019 Modul 6 Delphi
12/18
Gunakan Datetimepicker dari tab Win32
7. Tambahkan Objek QuickRep dari tab Qreport, ganti properti Dataset dengan Qrjual,
8. Ganti Properti Band Seperti Berikut :
Sehingga tampilan QuickRep Seperti Berikut
9. Selanjutnya Pilih PageHeader ubah properti HasChild dengan True, Maka gambarnya seperti
berikut:
10. Menambahkan Field baru pada QrJual
Double klik query QrJual, selanjutnya klik kanan pilih Add All Field
Klik kanan kembali Form6.Qrjual lalu pilih New Field, masukan field seperti berikut :
-
8/18/2019 Modul 6 Delphi
13/18
11. Rancanglah laporan seperti berikut, jadikan Qrjual sebagai dataset laporan
Catatan :
- Untuk QrSysData No atur Properties Data dengan QrsDetailNo
Qrsysdata
QrDBText
QrExpr
-
8/18/2019 Modul 6 Delphi
14/18
- Untuk Qrdbtext atur Properties Dataset dengan QrJual dan Datafield sesuaikan dengan
field laporan diatas
- Untuk QrExpr Total Harga, atur Properties SQL dengan QRJUAL.HRGJUAL *
QRJUAL.JMLJUAL
- Untuk QrExpr Total Penjualan, atur Properties SQL dengan SUM(QRJUAL.HRGJUAL *
QRJUAL.JMLJUAL)
- Untuk QrExpr Harga Stock barang, atur Properties SQL dengan SUM(QRJUAL.HRGBRG *
QRJUAL.JMLJUAL)
- Untuk QrExpr Laba Penjualan, atur Properties SQL dengan SUM(QRJUAL.HRGJUAL *
QRJUAL.JMLJUAL)-SUM(QRJUAL.HRGBRG * QRJUAL.JMLJUAL)
12. LISTING PROGRAM LAPORAN PENJUALAN PER TANGGAL
procedure TForm6.PREVIEW1Click(Sender: TObject);
begin
TBBARANG.Active :=TRUE;QRJUAL.Active :=TRUE;
QRJUAL.SQL.Clear;
QRJUAL.SQL.Add('SELECT * FROM'+QuotedStr('PENJUALAN.DB'));
QRJUAL.SQL.ADD('WHERE TGLFAKTUR=:PTGL1');
QRJUAL.ParamByName('PTGL1').AsDate :=DateTimePicker1.Date;
QRJUAL.Prepare;
QRJUAL.Open;
QuickRep1.Preview;
end;
procedure TForm6.PRINT1Click(Sender: TObject);
begin
TBBARANG.Active :=TRUE;
QRJUAL.Active :=TRUE;
QRJUAL.SQL.Clear;
QRJUAL.SQL.Add('SELECT * FROM'+QuotedStr('PENJUALAN.DB'));
QRJUAL.SQL.ADD('WHERE TGLFAKTUR=:PTGL1');
QRJUAL.ParamByName('PTGL1').AsDate :=DateTimePicker1.Date;
QRJUAL.Prepare;
QRJUAL.Open;
QuickRep1.PrINT;
end;
procedure TForm6.YA1Click(Sender: TObject);
begin
close;
end;
-
8/18/2019 Modul 6 Delphi
15/18
MEMBUAT LAPORAN PENJULAN PER PERIODE
1. Buatlah Form baru dan simpan dengan nama ULAPJUAL2
2. Copykan semua bentuk rancangan laporan dari laporan per tanggal dan tambahkan satu objek
DatetimePicker seperti gambar berikut
3. Listing Program laporan Perperiode
procedure TForm7.PREVIEW1Click(Sender: TObject);
begin
TBBARANG.Active :=TRUE;QRJUAL.Active :=TRUE;
QRJUAL.SQL.Clear;
QRJUAL.SQL.Add('SELECT * FROM'+QuotedStr('PENJUALAN.DB'));
QRJUAL.SQL.Add('WHERE TGLFAKTUR>=:PTGL1');
QRJUAL.SQL.Add('AND TGLFAKTUR=:PTGL1');QRJUAL.SQL.Add('AND TGLFAKTUR
-
8/18/2019 Modul 6 Delphi
16/18
QRJUAL.ParamByName('PTGL2').AsDate:=DateTimePicker2.Date;
QRJUAL.Prepare;
QRJUAL.Open;
QuickRep1.PrINT;
end;
procedure TForm7.YA1Click(Sender: TObject);
begin
close;
end;
-
8/18/2019 Modul 6 Delphi
17/18
Merancang Form Menu
1. Tambahkan Form baru pada Project Penjualan, dan simpan dengan nama Umenu
2. Tambahkan objek Main Menu pada form, selanjutnya klik kanan objek Main menu lalu pilih Menu
Designer
3. Rangcanglah menu Seperti Berikut :
4. Link kan/Hubungkan Form Menu dengan Form yang lain pada projeck Penjualan dengan Klik Menu
File--> UseUnit
Linkkan semua form dengan form menu
5. Listing Program Form Menu
procedure TForm8.BARANG1Click(Sender: TObject);
begin
FORM1.Show;
end;
MODUL 7
FILE TRANSAKSI LAPORAN KELUAR
BARANG
STOCK
TRANSAKSI BARANG
STOCK
PENJUALAN PER TANGGAL
PENJUALAN PER PERIODE
YA
TIDAK
-
8/18/2019 Modul 6 Delphi
18/18
procedure TForm8.STOCK1Click(Sender: TObject);
begin
FORM3.Show;
end;
procedure TForm8.PENJUALAN1Click(Sender: TObject);
begin
FORM5.Show;
end;
procedure TForm8.BARANG2Click(Sender: TObject);
begin
FORM2.Show;
end;
procedure TForm8.STOCK2Click(Sender: TObject);begin
FORM4.Show;
end;
procedure TForm8.PENJUALANPERHARI1Click(Sender: TObject);
begin
FORM6.Show;
end;
procedure TForm8.PENJUALANPERPERIODE1Click(Sender: TObject);
begin
FORM7.Show;
end;
procedure TForm8.YA1Click(Sender: TObject);
begin
CLOSE;
end;