PEMROGRAMAN DATABASE

a. Pembelian

Buat index sekunder dengan ketentuan sebagai berikut:

Nama Index

Field Kunci

KdSplTgl KodeSuplier, TglFaktur KdSplTgl KodeSuplier, TglFaktur

Buat index sekunder dengan ketentuan sebagai berikut:

Nama Index

Field Kunci

NamaSpl Nama

c. TempBeli

d. ReturPembelian

Buat index sekunder dengan ketentuan sebagai berikut:

Nama Index

Field Kunci

KdBrg KodeBarang KdBrgTgl KodeBarang,TglRetur NoRet NoRetur

e. Penjualan

Buat index sekunder dengan ketentuan sebagai berikut:

Nama Index

Field Kunci

KdBrgTgl KodeBarang,TglBon KdBrgNoBon KodeBarang,NoBon NoTglKdBrg NoBon,TglBon,KodeBarang

f. TempJual

g. ReturPenjualan

Buat index sekunder dengan ketentuan sebagai berikut:

Nama Index

Field Kunci

KdBrg KodeBarang KdBrgTgl KodeBarang,TglRetur NoRet NoRetur

Membuat Form End untuk Manipulasi Data Input Data Barang

Buatlah form dengan tampilan di bawah ini, dan simpan form tersebut dengan nama FFormInputBarang ke lokasi yang sama dengan database yang telah dibuat sebelumnya.

Komponen Properti

Form1 Caption

Input Data Barang

Name

edKodeBrg

Edit1 CharCase

ecUpperCase

Edit 2 Name

ComboBox1 Style

csDropDownList

Edit3 Name edHBeli Edit4 Name edHJual

Name

btnSave

Button1 Caption

Button2 Caption

Button3 Caption

Table1 TableName

Kemudian, tulis kode program pada Form ini: private

barang.db

{ Private declarations } IsAppend: boolean; function FindKey(kode:string):boolean; procedure DisplayData; procedure GetData; procedure doSimpan; procedure doHapus; procedure doClear;

public { Public declarations } end;

var FormInputBarang: TFormInputBarang;

implementation

{$R *.dfm}

procedure TFormInputBarang.btnCloseClick(Sender: TObject); begin

Close; end;

procedure TFormInputBarang.DisplayData; begin

edKodeBrg.Text:=tblBarang['KODE']; edNama.Text:=tblBarang['NAMA']; cboSatuan.Text:=tblBarang['SATUAN']; edHBeli.Text:=tblBarang['HARGABELI']; edHJual.Text:=tblBarang['HARGAJUAL'];

end; end;

if MessageDlg('Anda yakin akan menghapus data ini?' ,mtConfirmation, [mbYes,mbNo],0)=mryes then begin tblBarang.Delete; if not tblBarang.IsEmpty then

DisplayData; end; end;

procedure TFormInputBarang.doSimpan; begin

try if IsAppend then begin

tblBarang.Append; GetData; tblBarang.Post;

end else begin

tblBarang.Edit; GetData; tblBarang.Post;

end; ShowMessage('Data sudah disimpan!');

except on e: Exception do

ShowMessage(e.Message); end; end;

function TFormInputBarang.FindKey(kode: string): boolean; begin

result:=tblBarang.Locate('KODE',kode,[]); end;

procedure TFormInputBarang.GetData; begin

tblBarang.FieldByName('KODE').AsString:=edKodeBrg.Text; tblBarang.FieldByName('NAMA').AsString:=edNama.Text; tblBarang.FieldByName('SATUAN').AsString:=cboSatuan.Text; tblBarang.FieldByName('HARGABELI').AsString:=edHBeli.Text; tblBarang.FieldByName('HARGAJUAL').AsString:=edHJual.Text;

end;

procedure TFormInputBarang.FormShow(Sender: TObject); begin

tblBarang.Open; end;

procedure TFormInputBarang.btnSaveClick(Sender: TObject); begin

doSimpan; end;

procedure TFormInputBarang.btnDeleteClick(Sender: TObject); begin

doHapus; end; doHapus; end;

if edKodeBrg.Text<>'' then begin

if FindKey(edKodeBrg.Text) then begin

IsAppend:=false; DisplayData;

end else begin

IsAppend:=true; doClear;

end; end; end;

procedure TFormInputBarang.FormCreate(Sender: TObject); begin

edKodeBrg.Clear; doClear; cboSatuan.Items.Add('PCS'); cboSatuan.Items.Add('LUSIN'); cboSatuan.Items.Add('ROL'); cboSatuan.Items.Add('BOX'); cboSatuan.ItemIndex:=0;

end;

procedure TFormInputBarang.FormClose(Sender: TObject; var Action: TCloseAction); begin tblBarang.Close; end;

procedure TFormInputBarang.doClear; begin

edNama.Clear; edHBeli.Clear; edHJual.Clear; cboSatuan.Text:=’’;

end; end.

Browse Data Barang

Komponen Properti

Form1 Caption

Browse Barang

private

{ Private declarations } Edit1

Name

edKodeBrg

CharCase procedure doHapus; ecUpperCase

public

Edit 2 Name

edNama

{ Public declarations } Name

FormBrowseBarang: TFormBrowseBarang; Name

barang.db

{$R *.dfm}

Grid1 DataSource dsBarang

procedure TFormBrowseBarang.btnCloseClick(Sender: TObject); begin

tblBarang.Close; Close;

end;

procedure TFormBrowseBarang.doHapus; begin

if MessageDlg('Anda yakin akan menghapus data ini?' ,mtConfirmation, [mbYes,mbNo],0)=mryes then tblBarang.Delete; end;

procedure TFormBrowseBarang.FormCreate(Sender: TObject); begin

tblBarang.Open; edKodeBrg.Clear; edNama.Clear;

end;

procedure TFormBrowseBarang.edKodeBrgChange(Sender: TObject); begin

tblBarang.IndexName:=''; tblBarang.FindNearest([edKodeBrg.Text]);

end;

procedure TFormBrowseBarang.edNamaChange(Sender: TObject); begin

tblBarang.IndexName:='NamaBrg'; tblBarang.FindNearest([edNama.Text]);

end;

procedure TFormBrowseBarang.btnDeleteClick(Sender: TObject); begin

doHapus; end;

end.

Input Data Suplier

Komponen Properti

Form1 Caption

Input Data Barang

Edit1 { Private declarations } CharCase

IsAppend: boolean; Edit 2

ecUpperCase

function Edit3 Name edAlamat FindKey(kode:string):boolean;

Name

edNama

Edit4 Name edKota procedure DisplayData; Edit5 Name edKontak

procedure GetData; Edit6 Name edTelepon

procedure doSimpan; Name

Button1 procedure doHapus; Caption

btnSave

procedure doClear; Name

Simpan

Button2 public Caption

btnDelete

{ Public declarations } Name

Button3 Caption

Table1 TableName

suplier.db

FormInputSuplier: TFormInputSuplier;

implementation

{$R *.dfm}

{ TFormInputSuplier }

procedure TFormInputSuplier.DisplayData; begin

edKodeSpl.Text:=tblSuplier.FieldByName('KODESUPLIER').AsString; edNama.Text:=tblSuplier.FieldByName('NAMA').AsString; edAlamat.Text:=tblSuplier.FieldByName('ALAMAT').AsString; edKota.Text:=tblSuplier.FieldByName('KOTA').AsString; edKontak.Text:=tblSuplier.FieldByName('KONTAK').AsString; edTelepon.Text:=tblSuplier.FieldByName('TELEPON').AsString;

end;

procedure TFormInputSuplier.doHapus; begin

if MessageDlg('Anda yakin akan menghapus data ini?', mtConfirmation, [mbYes,mbNo],0)=mryes then begin tblSuplier.Delete; if MessageDlg('Anda yakin akan menghapus data ini?', mtConfirmation, [mbYes,mbNo],0)=mryes then begin tblSuplier.Delete;

procedure TFormInputSuplier.doSimpan; begin

try if IsAppend then begin

tblSuplier.Append; GetData; tblSuplier.Post;

end else begin

tblSuplier.Edit; GetData; tblSuplier.Post;

end; ShowMessage('Data sudah disimpan!');

except on e: Exception do

ShowMessage(e.Message); end; end;

function TFormInputSuplier.FindKey(kode: string): boolean; begin

result:=tblSuplier.Locate('KODESUPLIER',kode,[]); end;

procedure TFormInputSuplier.GetData; begin

tblSuplier.Fields[0].AsString:=edKodeSpl.Text; tblSuplier.Fields[1].AsString:=edNama.Text; tblSuplier.Fields[2].AsString:=edAlamat.Text; tblSuplier.Fields[3].AsString:=edKota.Text; tblSuplier.Fields[4].AsString:=edKontak.Text; tblSuplier.Fields[5].AsString:=edTelepon.Text;

end;

procedure TFormInputSuplier.btnCloseClick(Sender: TObject); begin

Close; end;

procedure TFormInputSuplier.FormShow(Sender: TObject); begin

tblSuplier.Open; end;

procedure TFormInputSuplier.FormClose(Sender: TObject; var Action: TCloseAction); begin tblSuplier.Close; end;

procedure TFormInputSuplier.btnSaveClick(Sender: TObject); begin

doSimpan; doSimpan;

procedure TFormInputSuplier.btnDeleteClick(Sender: TObject); begin

doHapus; end;

procedure TFormInputSuplier.FormCreate(Sender: TObject); begin

edKodeSpl.Clear; doClear;

end;

procedure TFormInputSuplier.edKodeSplChange(Sender: TObject); begin

if edKodeSpl.Text<>'' then begin

if FindKey(edKodeSpl.Text) then begin

IsAppend:=false; DisplayData;

end else begin

IsAppend:=true; doClear;

end; end; end;

procedure TFormInputSuplier.doClear; begin

edNama.Clear; edAlamat.Clear; edKota.Clear; edKontak.Clear; edTelepon.Clear;

end;

Browse Data Suplier

Komponen Properti

Form1 Caption

Browse Data Suplier

private

Edit1 Name

{ Private declarations } CharCase

edKodeSpl

procedure doHapus; Edit 2

{ Public declarations } Button1

Button2 Caption var Tutup

Table1 TableName TFormBrowseSuplier; supplier.db

Grid1 DataSource dsSuplier

{$R *.dfm}

{ TFormBrowseSuplier }

procedure TFormBrowseSuplier.doHapus; begin

if MessageDlg('Anda yakin akan menghapus data ini?' ,mtConfirmation, [mbYes,mbNo],0)=mryes then tblSuplier.Delete; end;

procedure TFormBrowseSuplier.FormClose(Sender: TObject; var Action: TCloseAction); begin tblSuplier.Close; end;

procedure TFormBrowseSuplier.btnCloseClick(Sender: TObject); begin

Close; end;

procedure TFormBrowseSuplier.btnDeleteClick(Sender: TObject); begin

doHapus; end;

procedure TFormBrowseSuplier.FormCreate(Sender: TObject); begin

tblSuplier.Open; edKodeSpl.Clear; edNama.Clear;

end;

procedure TFormBrowseSuplier.edKodeSplChange(Sender: TObject); begin

tblSuplier.IndexName:=''; tblSuplier.FindNearest([edKodeSpl.Text]);

end;

procedure TFormBrowseSuplier.edNamaChange(Sender: TObject); begin

tblSuplier.IndexName:='NamaSpl'; tblSuplier.FindNearest([edNama.Text]);

end; end;

Transaksi Pembelian Input Data Pembelian

Komponen Properti

Form1 Caption

Input Data Pembelian

1. Klik ganda pada Komponen Name

cboSuplier

ComboBox1 Style

tblTempBeli sehingga menampilkan Name

csDropDownList

Edit1 FieldEditor, kemudian klik kanan CharCase

edNoFaktur

ecUpperCase

DateTimePicker1 Name

dan pilih Add all fields. Name

tglFaktur

btnClose

Button1 Caption

Button2 Caption

Faktur Baru

Name

btnSimpan

Button3 Caption

Table1 TableName

supplier.db

Name

tblPembelian

Table2 TableName

pembelian.db

Name

tblTempBeli

Table3 TableName

TempBeli.db

Name

tblBarang

Table4 TableName

barang.db

Name

dsSuplier

DataSource1 Dataset

DataSource2 Dataset

DataSource3 Dataset

tblTempBeli

DBGrid1 DataSource dsTempBeli DBNavigator1 DataSource dsTempBeli

2. Klik ganda pada DBGrid1 sehingga menampilkan Columns Editor, kemudian klik icon Add All Fields.

3. Kemudian tulis kode pada blok private, seperti di bawah ini: private

{ Private declarations } procedure doOpenTable; procedure doCloseTable; procedure doSimpanHdr; procedure doGeneratesuplier; procedure doGenerateBarang;

public

4. Tekan CTRL+SHIFT+C, dan tuliskan kode seperti di bawah ini: procedure TFormInputPembelian.doCloseTable;

begin tblSuplier.Close; tblPembelian.Close; tblTempBeli.Close; tblBarang.Close;

end;

procedure TFormInputPembelian.doOpenTable; begin

tblSuplier.Open; tblPembelian.Open; tblTempBeli.Open; tblBarang.Open;

end; procedure TFormInputPembelian.doSimpanHdr; begin

tblSuplier.First; tblSuplier.MoveBy(cboSuplier.ItemIndex); tblPembelian.Append;

tblPembelian.FieldByName('KODESUPLIER').AsString:=tblSuplier['KODESUPLI ER'];

tblPembelian.FieldByName('NOFAKTUR').AsString:=edNoFaktur.Text; tblPembelian.FieldByName('TGLFAKTUR').AsDateTime:=tglFaktur.DateTime; tblPembelian.Post;

end;

procedure TFormInputPembelian.doGenerateBarang; begin

DBGrid1.Columns[0].PickList.Clear; tblBarang.First; while not tblBarang.Eof do begin

DBGrid1.Columns[0].PickList.Add(tblBarang.fieldbyname ('KODE').AsString);

tblBarang.next; end; end;

procedure TFormInputPembelian.doGeneratesuplier; begin

cboSuplier.Clear; tblSuplier.First; while not tblSuplier.Eof do begin

cboSuplier.Items.Add(tblSuplier.fieldbyname('NAMA').AsString); tblSuplier.Next;

end; end;

5. Pilih komponen tblTempBeli, klik ganda pada Events BeforePost, dan tulis kode seperti di bawah ini: procedure TFormInputPembelian.tblTempBeliBeforePost(DataSet: TDataSet);

begin tblTempBeli.FieldByName('NOFAKTUR').AsString:=edNoFaktur.Text; end;

6. Klik ganda tblTempBeli untuk menampilkan Fields Editor, kemudian pilih Field KODEBARANG kemudian klik ganda pada Events OnChange, dan ketik kode berikut: procedure TFormInputPembelian.tblTempBeliKODEBARANGChange (Sender:

TField); var

kode:string; begin kode:=tblTempBeli.fieldbyname('KODEBARANG').AsString; if tblBarang.Locate('KODE',kode,[]) then begin

tblTempBeli.fieldbyname('NAMA').AsString:=tblBarang['NAMA']; tblTempBeli.fieldbyname('SATUAN').AsString:=tblBarang['SATUAN'];

tblTempBeli.fieldbyname('HARGABELI').AsCurrency :=tblBarang['HARGABELI'];

end; end;

kemudian pilih Field BANYAK, dan klik ganda pada Events OnChange, dan tulis kode berikut: procedure TFormInputPembelian.tblTempBeliBANYAKChange(Sender: TField);

var byk:Integer; hbeli:currency;

begin byk:=tblTempBeli.FieldByName('BANYAK').AsInteger; hbeli:=tblTempBeli.FieldByName('HARGABELI').AsCurrency; tblTempBeli.FieldByName('TOTAL').AsCurrency:=byk*hbeli;

end;

7. Klik ganda pada komponen edNoFaktur dan Tulis kode berikut: procedure TFormInputPembelian.edNoFakturChange(Sender: TObject);

begin tblTempBeli.Filtered:=false; tblTempBeli.Filter:='NOFAKTUR='+QuotedStr(edNoFaktur.Text); tblTempBeli.Filtered:=true; if edNoFaktur.Text<>'' then begin

DBGrid1.Enabled:=true; DBNavigator1.Enabled:=true

end else begin

DBGrid1.Enabled:=false; DBNavigator1.Enabled:=false;

end; end;

8. Tuliskan kode pada Events OnClick pada masing-masing Button btnSimpan, btnClose, btnNew: procedure TFormInputPembelian.btnSimpanClick(Sender: TObject);

begin begin

end; procedure TFormInputPembelian.btnCloseClick(Sender: TObject); begin

close; end; procedure TFormInputPembelian.btnNewClick(Sender: TObject); begin

edNoFaktur.Clear; btnSimpan.Enabled:=true;

end;

9. Tuliskan kode berikut pada FormShow dan FormClose: procedure TFormInputPembelian.FormShow(Sender: TObject);

begin doOpenTable; doGeneratesuplier; doGenerateBarang;

end;

procedure TFormInputPembelian.FormClose(Sender: TObject; var Action: TCloseAction); begin doCloseTable; end;

Browse Data Pembelian

Komponen Properti

1. Pilih komponen quPembelian, pada Name

Nilai

FormBrowsePembelian

Form1 Caption

properties SQL, tuliskan perintah Name

Browse Pembelian

btnClose

Button1

sebagai berikut:

Caption

Tutup

SELECT a.NoFaktur, TglFaktur, Button2

Name

btnHapus

KodeSuplier, KodeBarang, Query1 Name quPembelian

Caption

Hapus

HargaBeli, Banyak

Query2 Name quHapus FROM pembelian as a , tempbeli as Name b dsPembelian DataSource1

WHERE b.NoFaktur=a.NoFaktur

Dataset

quPembelian

ORDER BY TglFaktur

DBGrid1 DataSource dsPembelian

2. Tulis kode seperti di bawah ini: procedure TFormBrowsePembelian.btnCloseClick(Sender: TObject);

begin Close; end;

procedure TFormBrowsePembelian.FormClose(Sender: TObject; var Action: TCloseAction); begin quPembelian.Close; end ;

procedure TFormBrowsePembelian.FormShow(Sender: TObject); begin

quPembelian.Open; end;

3. Tulis deklarasi procedure doHapus pada blok private dan berikan pada Events OnClick pada btnHapus: private

{ Private declarations } procedure doHapus;

public { Public declarations } end;

procedure TFormBrowsePembelian.doHapus; var

NoFak:string; begin if MessageDlg('Anda yakin akan menghapus data ini?', mtConfirmation, [mbYes,mbNo],0)=mrno then exit; if not quPembelian.IsEmpty then begin

NoFak:=quPembelian.fieldByName('NOFAKTUR').AsString; if quHapus.Active then

quHapus.Active:=false; quHapus.SQL.Clear; quHapus.SQL.Add('DELETE

NOFAKTUR=' +QuotedStr(NoFak));

FROM

tempbeli

WHERE WHERE

WHERE NOFAKTUR=' +QuotedStr(NoFak)); quHapus.ExecSQL; quPembelian.Refresh;

FROM

pembelian

end; end;

procedure TFormBrowsePembelian.btnHapusClick(Sender: TObject); begin

doHapus; end;

Retur Pembelian Input Retur Pembelian

Komponen Properti

Form1 Caption

Input Retur Pembelian

GroupBox1 Caption

<Data Pembelian yang dikembalikan>

GroupBox2 Caption <Retur Pembelian> ComboBox1 Name cboNoFaktur

ComboBox1 Name cboKodeBrg Edit1 Name edTglFaktur

Edit2 Name edNamaBrg Edit3 Name edBanyak Edit4 Name edHbeli

Edit5 Name edNoRetur Edit6 Name edRtrBanyak

DateTimePicker1 Name

Button1 Caption

Table1 TableName

returpembelian.db

Query1 Name quFaktur Query2 Name quFakturDtl

Tuliskan kode sebagai berikut: private

{ Private declarations } procedure doGenNoFaktur; procedure doGenFakturDetil; procedure doDisplay; procedure doSimpan;

public { Public declarations } end;

var FormInputReturPembelian: TFormInputReturPembelian;

implementation

{$R *.dfm}

{ TFormInputReturPembelian }

procedure TFormInputReturPembelian.doDisplay; begin

edNamaBrg.Text:=quFakturDtl.fieldbyName('NAMA').AsString; edBanyak.Text:=quFakturDtl.fieldbyName('BANYAK').AsString; edHbeli.Text:=quFakturDtl.fieldbyName('HARGABELI').AsString;

end;

procedure TFormInputReturPembelian.doGenFakturDetil; var

ItemIndex:integer; begin ItemIndex:=cboNoFaktur.ItemIndex; if ItemIndex>=0 then begin

quFakturDtl.Close; quFakturDtl.SQL.Clear;

quFakturDtl.SQL.Add('SELECT * FROM tempbeli WHERE NOFAKTUR='+ QuotedStr(cboNoFaktur.Text)); quFakturDtl.Open; cboKodeBrg.Clear; while not quFakturDtl.Eof do begin

cboKodeBrg.Items.Add(quFakturDtl.fieldbyname('KODEBARANG').AsString); quFakturDtl.Next;

end; end; end;

procedure TFormInputReturPembelian.doGenNoFaktur; begin

quFaktur.Close; quFaktur.SQL.Clear; quFaktur.SQL.Add('SELECT * FROM Pembelian ORDER BY TglFaktur'); quFaktur.Open;

cboNoFaktur.Clear; while not quFaktur.Eof do begin

cboNoFaktur.Items.Add(quFaktur.fieldbyname('NoFaktur').AsString); quFaktur.Next; cboNoFaktur.Items.Add(quFaktur.fieldbyname('NoFaktur').AsString); quFaktur.Next;

procedure TFormInputReturPembelian.doSimpan; begin

tblReturPembelian.Append; tblReturPembelian.FieldByName('NORETUR').AsString:=edNoRetur.Text; tblReturPembelian.FieldByName('TGLRETUR').AsDateTime:=tglRetur.DateTime; tblReturPembelian.FieldByName('NOFAKTUR').AsString:=cboNoFaktur.Text; quFaktur.First; quFaktur.MoveBy(cboNoFaktur.ItemIndex);

tblReturPembelian.FieldByName('TGLFAKTUR').AsDateTime:=quFaktur.fieldbyname(' TGLFAKTUR').AsDateTime;

tblReturPembelian.FieldByName('KODESUPLIER').AsString:=quFaktur.fieldbyname(' KODESUPLIER').AsString;

tblReturPembelian.FieldByName('KODEBARANG').AsString:=cboKodeBrg.Text; tblReturPembelian.FieldByName('HARGABELI').AsString:=edHbeli.Text; tblReturPembelian.FieldByName('BANYAK').AsString:=edRtrBanyak.Text; tblReturPembelian.Post;

end;

procedure TFormInputReturPembelian.btnTutupClick(Sender: TObject); begin

Close; end;

procedure TFormInputReturPembelian.btnSimpanClick(Sender: TObject); begin

doSimpan; ShowMessage('Data sudah disimpan!');

end;

procedure TFormInputReturPembelian.cboNoFakturChange(Sender: TObject); begin

quFaktur.First; quFaktur.MoveBy(cboNoFaktur.ItemIndex); edTglFaktur.Text:=quFaktur.fieldbyname('TGLFAKTUR').AsString; doGenFakturDetil;

end;

procedure TFormInputReturPembelian.cboKodeBrgChange(Sender: TObject); begin

doDisplay; end;

procedure TFormInputReturPembelian.FormClose(Sender: TObject; var Action: TCloseAction); begin tblReturPembelian.Close; quFaktur.Close; quFakturDtl.Close;

end;

procedure TFormInputReturPembelian.FormShow(Sender: TObject); begin

edNoRetur.Clear; edRtrBanyak.Clear; tglRetur.DateTime:=now; edNamaBrg.Clear; edNoRetur.Clear; edRtrBanyak.Clear; tglRetur.DateTime:=now; edNamaBrg.Clear;

end;

end.

Browse Retur Pembelian

Komponen Properti

Browse Retur Pembelian

Name

edNoRetur

Edit1 CharCase

Button1 Caption

Hapus

Button2 Tulis kode sebagai berikut: Caption

Table1 TableName

{ Private declarations } Name

returpembelian.db

procedure doHapus; DataSource1

dsRtrBeli

Dataset public tbRtrBeli { Public declarations }

Grid1 DataSource dsRtrBeli

end;

var FormBrowseReturPembelian: TFormBrowseReturPembelian;

implementation

{$R *.dfm}

procedure TFormBrowseReturPembelian.btnCloseClick(Sender: TObject); begin

tblRtrbeli.Close; Close;

end;

procedure TFormBrowseReturPembelian.doHapus; begin

if MessageDlg('Anda yakin akan menghapus data ini?',mtConfirmation, [mbYes,mbNo],0)=mryes then tblRtrbeli.Delete; end; if MessageDlg('Anda yakin akan menghapus data ini?',mtConfirmation, [mbYes,mbNo],0)=mryes then tblRtrbeli.Delete; end;

tblRtrbeli.Open; edNoRetur.Clear;

end;

procedure TFormBrowseReturPembelian.edNoReturChange(Sender: TObject); begin

tblRtrbeli.IndexName:='NoRet'; tblRtrbeli.FindNearest([edNoRetur.Text]);

end;

procedure TFormBrowseReturPembelian.btnDeleteClick(Sender: TObject); begin

doHapus; end;

end.

Transaksi Penjualan Input Data Penjualan

Komponen Properti

Form1 Caption

1. Klik ganda pada Komponen Name

Input Data Penjualan

edNoBon

Edit1 CharCase

tblTempJual sehingga menampilkan DateTimePicker1 Name

ecUpperCase

FieldEditor, kemudian klik kanan Name

tglJual

btnClose

Button1 Caption

dan pilih Add all fields. Name

No. Baru

Name

btnSimpan

Button3 Caption

Table1 TableName

Penjualan.db

TempJual.db

Name

tblBarang

Table3 TableName

barang.db

Name

dsTempJual

DataSource1 Dataset

tblTempJual

DBGrid1 DataSource dsTempJual DBNavigator1 DataSource dsTempJual

2. Klik ganda pada DBGrid1 sehingga menampilkan Columns Editor, kemudian klik icon Add All Fields.

3. Kemudian tulis kode pada blok private, seperti di bawah ini: private

{ Private declarations } procedure doOpenTable; procedure doCloseTable; procedure doSimpanHdr; procedure doGenerateBarang;

public { Public declarations } end;

4. Tekan CTRL+SHIFT+C, dan tuliskan kode seperti di bawah ini: procedure TFormInputPenjualan.doCloseTable;

begin tblTempJual.Close; tblPenjualan.Close; tblBarang.Close;

end;

procedure TFormInputPenjualan.doGenerateBarang; begin

DBGrid1.Columns[0].PickList.Clear; tblBarang.First; while not tblBarang.Eof do begin

DBGrid1.Columns[0].PickList.Add(tblBarang.fieldbyname('KODE').AsString) ;

tblBarang.next; end; end;

procedure TFormInputPenjualan.doOpenTable; begin

tblTempJual.Open; tblPenjualan.Open; tblBarang.Open;

end;

procedure TFormInputPenjualan.doSimpanHdr; begin

tblPenjualan.Append; tblPenjualan.FieldByName('NOBON').AsString:=edNoBON.Text; tblPenjualan.FieldByName('TGLBON').AsDateTime:=tglJual.DateTime; tblPenjualan.Post;

end;

5. Pilih komponen tblTempJual, klik ganda pada Events BeforePost, dan tulis kode seperti di bawah ini: procedure TFormInputPenjualan.tblTempJualBeforePost(DataSet: TDataSet);

begin tblTempJual.FieldByName('NOBON').AsString:=edNoBon.Text; end;

6. Klik ganda tblTempJual untuk menampilkan Fields Editor, kemudian pilih Field KODEBARANG kemudian klik ganda pada Events OnChange, dan ketik kode berikut: procedure TFormInputPenjualan.tblTempJualKODEBARANGChange (Sender:

TField); var

kode:string; begin kode:=tblTempJual.fieldbyname('KODEBARANG').AsString; if tblBarang.Locate('KODE',kode,[]) then begin

tblTempJual.fieldbyname('NAMA').AsString:=tblBarang['NAMA']; tblTempJual.fieldbyname('SATUAN').AsString:=tblBarang['SATUAN'];

tblTempJual.fieldbyname('HARGAJUAL').AsString:=tblBarang['HARGAJUAL'];

end; end;

kemudian pilih Field BANYAK, dan klik ganda pada Events OnChange, dan tulis kode berikut: procedure TFormInputPenjualan.tblTempJualBANYAKChange(Sender: TField);

var byk:Integer; hjual:currency;

begin byk:=tblTempJual.FieldByName('BANYAK').AsInteger; hJual:=tblTempJual.FieldByName('HARGAJUAL').AsCurrency; tblTempJual.FieldByName('TOTAL').AsCurrency:=byk*hjual;

end;

7. Klik ganda pada komponen edNoBon dan Tulis kode berikut: procedure TFormInputPenjualan.edNoBONChange(Sender: TObject);

begin tblTempJual.Filtered:=false; tblTempJual.Filter:='NOBON='+QuotedStr(edNoBON.Text); tblTempJual.Filtered:=true; if edNoBon.Text<>'' then begin

DBGrid1.Enabled:=true; DBNavigator1.Enabled:=true

end else begin

DBGrid1.Enabled:=false; DBNavigator1.Enabled:=false;

end; end;

8. Tuliskan kode pada Events OnClick pada masing-masing Button btnSimpan, btnClose, btnNew: procedure TFormInputPenjualan.btnCloseClick(Sender: TObject);

begin Close; end;

procedure TFormInputPenjualan.edNewClick(Sender: TObject); begin

edNoBON.Clear; btnSimpan.Enabled:=true;

end;

procedure TFormInputPenjualan.btnSimpanClick(Sender: TObject); procedure TFormInputPenjualan.btnSimpanClick(Sender: TObject);

end;;

9. Tuliskan kode berikut pada FormShow dan FormClose: procedure TFormInputPenjualan.FormShow(Sender: TObject);

begin doOpenTable; doGenerateBarang;

end;

procedure TFormInputPenjualan.FormClose(Sender: TObject; var Action: TCloseAction); begin doCloseTable; end;

Browse Data Penjualan

Komponen Properti

4. Pilih komponen quPenjualan, pada Name

Nilai

FormBrowsePenjualan

Form1 Caption

properties SQL, tuliskan perintah Name

Browse Penjualan

btnClose

Button1

sebagai berikut:

Caption

Tutup

SELECT a.NoBon, TglBon, Button2

Name

btnHapus

KodeBarang, HargaJual, Banyak Query1 Name quPenjualan

Caption

Hapus

FROM Penjualan as a , tempjual as Query2 Name quHapus

Name WHERE b.NoBon=a.NoBon dsPenjualan DataSource1

Dataset ORDER BY TglBon quPenjualan

DBGrid1 DataSource dsPenjualan

5. Tulis kode seperti di bawah ini: procedure TFormBrowsePenjualan.btnCloseClick(Sender: TObject);

begin Close; end; begin Close; end;

quPenjualan.Open; end;

procedure TFormBrowsePenjualan.FormClose(Sender: TObject; var Action: TCloseAction); begin quPenjualan.Close; end;

6. Tulis deklarasi procedure doHapus pada blok private dan berikan pada Events OnClick pada btnHapus: private

{ Private declarations } procedure doHapus;

public { Public declarations } end;

procedure TFormBrowsePenjualan.doHapus; var

NoBon:string; begin if MessageDlg('Anda yakin akan menghapus data ini?', mtConfirmation, [mbYes,mbNo],0)=mrno then exit; if not quPenjualan.IsEmpty then begin

NoBon:=quPenjualan.fieldByName('NOBON').AsString; if quHapus.Active then

quHapus.Active:=false; quHapus.SQL.Clear; quHapus.SQL.Add('DELETE

WHERE NOBON='+ QuotedStr(NoBon)); quHapus.ExecSQL; quHapus.SQL.Clear; quHapus.SQL.Add('DELETE

FROM

tempjual

WHERE NOBON='+ QuotedStr(NoBon)); quHapus.ExecSQL; quPenjualan.Close; quPenjualan.Open;

FROM

penjualan

end; end;

procedure TFormBrowsePenjualan.btnHapusClick(Sender: TObject); begin

doHapus; end;

Retur Penjualn Input Retur Penjualan

Komponen Properti

Nilai

Form1 Name

FormInputReturJual

Caption

Input Retur Penjualan

GroupBox1 Caption

<Data Penjualan yang dikembalikan>

GroupBox2 Caption <Retur Penjualan> ComboBox1 Name cboNoBon

ComboBox1 Name cboKodeBrg Edit1 Name edTglBon

Edit2 Name edNamaBrg Edit3 Name edBanyak Edit4 Name edHJual

Edit5 Name edNoRetur Edit6 Name edRtrBanyak

DateTimePicker1 Name

Button1 Caption

Simpan

Button2 Name

Table1 TableName

returpenjualan.db

Query1 Name quBon Query2 Name quBonDtl

Tuliskan kode sebagai berikut: private

{ Private declarations } procedure doGenNoBon; procedure doGenBonDetil; procedure doDisplay; procedure doSimpan;

public { Public declarations } end;

var

FormInputReturJual: TFormInputReturJual;

implementation

{$R *.dfm}

{ TFormInputReturJual }

procedure TFormInputReturJual.doDisplay; begin

edNamaBrg.Text:=quBonDtl.fieldbyName('NAMA').AsString; edBanyak.Text:=quBonDtl.fieldbyName('BANYAK').AsString; edHJual.Text:=quBonDtl.fieldbyName('HARGAJUAL').AsString;

end;

procedure TFormInputReturJual.doGenBonDetil; var

ItemIndex:integer; begin ItemIndex:=cboNoBon.ItemIndex; if ItemIndex>=0 then begin

quBonDtl.Close; quBonDtl.SQL.Clear;

quBonDtl.SQL.Add('SELECT * FROM tempjual WHERE NOBON='+ QuotedStr(cboNoBon.Text)); quBonDtl.Open; cboKodeBrg.Clear; while not quBonDtl.Eof do begin

cboKodeBrg.Items.Add(quBonDtl.fieldbyname('KODEBARANG').AsString); quBonDtl.Next;

end; end;

end;

procedure TFormInputReturJual.doGenNoBon; begin

quBon.Close; quBon.SQL.Clear; quBon.SQL.Add('SELECT * FROM penjualan ORDER BY TGLBON'); quBon.Open;

cboNoBon.Clear; while not quBon.Eof do begin cboNoBon.Items.Add(quBon.fieldbyname('NOBON').AsString); quBon.Next;

end; end;

procedure TFormInputReturJual.doSimpan; begin

tblReturPenjualan.Append; tblReturPenjualan.FieldByName('NORETUR').AsString:=edNoRetur.Text; tblReturPenjualan.FieldByName('TGLRETUR').AsDateTime:=tglRetur.DateTime; tblReturPenjualan.FieldByName('NOBON').AsString:=cboNoBon.Text; quBon.First; quBon.MoveBy(cboNoBon.ItemIndex); tblReturPenjualan.Append; tblReturPenjualan.FieldByName('NORETUR').AsString:=edNoRetur.Text; tblReturPenjualan.FieldByName('TGLRETUR').AsDateTime:=tglRetur.DateTime; tblReturPenjualan.FieldByName('NOBON').AsString:=cboNoBon.Text; quBon.First; quBon.MoveBy(cboNoBon.ItemIndex);

tblReturPenjualan.FieldByName('KODEBARANG').AsString:=cboKodeBrg.Text; tblReturPenjualan.FieldByName('HARGAJUAL').AsString:=edHJual.Text; tblReturPenjualan.FieldByName('BANYAK').AsString:=edRtrBanyak.Text; tblReturPenjualan.Post;

end;

procedure TFormInputReturJual.btnSimpanClick(Sender: TObject); begin

doSimpan; ShowMessage('Data sudah disimpan!');

end;

procedure TFormInputReturJual.cboNoBonChange(Sender: TObject); begin

quBon.First; quBon.MoveBy(cboNoBon.ItemIndex); edTglBon.Text:=quBon.fieldbyname('TGLBON').AsString; doGenBonDetil;

end;

procedure TFormInputReturJual.cboKodeBrgChange(Sender: TObject); begin

doDisplay; end;

procedure TFormInputReturJual.FormClose(Sender: TObject; var Action: TCloseAction); begin tblReturPenjualan.Close; quBon.Close; quBonDtl.Close;

end;

procedure TFormInputReturJual.FormShow(Sender: TObject); begin

edNoRetur.Clear; edRtrBanyak.Clear; tglRetur.DateTime:=now; edNamaBrg.Clear; edBanyak.Clear; edHJual.Clear; tblReturPenjualan.Open; doGenNoBon;

end;

procedure TFormInputReturJual.btnTutupClick(Sender: TObject); begin

Close; end;

end.

Browse Retur Penjualan

Komponen Properti

Form1 Caption

Tulis kode sebagai berikut: Name

Browse Retur Penjualan

{ Private declarations } Name

CharCase

ecUpperCase

Button1 procedure doHapus; Caption

Button2 { Public declarations } Caption

Table1 TableName

Name

tblRtrJual

returpenjualan.db

var

FormBrowseReturJual: DataSource1

Name

dsRtrJual

TFormBrowseReturJual; Grid1 DataSource dsRtrJual

{$R *.dfm}

{ TForm1 }

procedure TFormBrowseReturJual.doHapus; begin

if MessageDlg('Anda yakin akan menghapus data ini?',mtConfirmation, mbYes,mbNo],0)=mryes then tblRtrJual.Delete; end;

procedure TFormBrowseReturJual.btnCloseClick(Sender: TObject); begin

tblRtrJual.Close; Close;

end;

procedure TFormBrowseReturJual.FormShow(Sender: TObject); begin

tblRtrJual.Open; edNoRetur.Clear;

end;

procedure TFormBrowseReturJual.edNoReturChange(Sender: TObject); begin procedure TFormBrowseReturJual.edNoReturChange(Sender: TObject); begin

end;

procedure TFormBrowseReturJual.btnHapusClick(Sender: TObject); begin

doHapus; end;

end.

Sumber Pustaka: M. Agus J. Alam, 2003, Membuat Program Aplikasi Menggunakan Delphi 6 & Delphi 7, Elex Media

Komputindo, Jakarta.