Modul 6 Delphi

Embed Size (px)

Citation preview

  • 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;