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.