View
9
Download
0
Category
Preview:
Citation preview
87Universitas Kristen Petra
4. IMPLEMENTASI
Pada bab ini akan menjelaskan tentang implementasi sistem yang telah
dirancang sehingga menghasilkan suatu aplikasi yang dapat digunakan. Program ini
dibuat dengan menggunakan Microsoft Access 2000 dan pembuatan interface dengan
Borland Delphi 7.0.
4.1. Implementasi pada Microsoft Access 2000
Pada tahap implementasi, hal pertama yang dilakukan adalah membuat tabel
dalam Microsoft Access 2000 yaitu dengan cara memilih objek tables pada bagian
kiri atas dan kemudian memilih ”create table design view”, setelah itu akan muncul
table, dimana field name dan data type-nya harus diisi, field name bisa dijadikan
primary key atau tidak tergantung kebutuhan. Setelah selesai, save dengan nama yang
dikehendaki.
Gambar 4.10. Design Database
Universitas Kristen Petra
88
4.2. Implementasi Program dan Interface
Setelah database selesai dibuat, yang perlu dilakukan adalah menghubungkan
antara database dengan aplikasi yang sudah dibuat dengan menggunakan Borland
Delphi 7.0. Untuk menghubungkan keduanya digunakan komponen ADO yang
merupakan komponen bawaan dalam Borland Delphi 7.0. Beberapa komponen yang
dipakai antara lain : ADOConnection untuk menguhubungkan antara database
dengan aplikasi, ADOQuery untuk melakukan query pada database, dan DataSource
yang digunakan untuk menampilkan hasil query pada database ke dalam aplikasi.
Gambar 4.11. Beberapa komponen yang dipakai
Dalam implementasi program, hal pertama yang dilakukan adalah
menghubungkan database utama dengan program, yaitu dengan membuka
ConnectionString pada komponen ADO Connection. Lalu tekan tombol Browse yang
menggunakan data link file yang telah dibuat dengan format file *.udl, seperti pada
Gambar 4.4, untuk menghubungkan database dengan program. Seperti yang terlihat
pada Gambar 4.3.
Gambar 4.12. Menu Connection String
Universitas Kristen Petra
89
Gambar 4.13. Data Link dengan Format *.udl
Klik 2 kali pada file *.udl tersebut, kemudian akan muncul Window Data Link
Properties. Pada tab Provider, pilih Microsoft Jet 4.0 OLE DB Provider, dan tekan
tombol Next untuk pindah ke tab Connection seperti yang terlihat pada Gambar 4.5 di
bawah ini.
Gambar 4.14. Data Link Properties Tab Provider
Universitas Kristen Petra
90
Pada tab Connection, diketikkan ‘database/perusahaan.mdb’ pada langkah
nomor satu untuk menentukan database yang akan digunakan. Lalu kotak username
dikosongi dan beri tanda pada pilihan Blank Password. Setelah itu dilakukan Test
Connection melalui tombol untuk mengetahui database yang diketikkan dapat
terhubung atau tidak. Apabila hasil Test Connectin sukses, klik tombol OK untuk
mengakhiri proses penghubungan database dengan program. Tab Connection ini
dapat dilihat pada gambar 4.6 di bawah ini. Dan bila database berhasil terhubung,
hasil test connection dapat dilihat pada gambar 4.7.
Gambar 4.15. Data Link Properties tab Connection
Universitas Kristen Petra
91
Gambar 4.16. Test Connection sukses
Setelah database terhubung dengan program, dilakukan implementasi interface
dan program. Implementasi interface pada program aplikasi umumnya berupa form
dan Laporan. Program aplikasi sistem informasi produksi mempunyai sembilan menu
yang di dalamnya memuat form-form yang diperlukan dalam sistem tersebut. Berikut
akan dijelaskan fungsi dan program dari masing-masing form.
Tabel 4.1. Daftar Procedure dan Segmen Program
Sub-Menu Form Procedure No.Segment
- Login Pengecekan Login Segmen 4.1.
- Lupa Password Lupa Password Segmen 4.2.
- Main Menu Short-cut Segmen 4.3.
File Setting User Isi Menu Segmen 4.4.
Material Mutasi Material Mutasi Masuk Segmen 4.5.
- - Kode Mutasi -
Produk Mutasi Masuk Produk Mutasi Masuk Segmen 4.6.
- - Kode -
- Mutasi Keluar Produk Mutasi Keluar Segmen 4.7.
- - Kode -
Proyek Tambah Proyek Baru Tambah Proyek Segmen 4.8.
- - Isi Kode -
- Pelaksanaan Proyek Pelaksanaan Proyek Segmen 4.9.
- - Isi Grid -
- Penyesuaian Material Tutup Proyek Segmen 4.10.
- - Isi Grid -
Universitas Kristen Petra
92
Tabel 4.1. Daftar Procedure dan Segmen Program (Sambungan)
Sub-Menu Form Procedure No.Segment
- Perhitungan Lama Produksi Hitung Proses Segmen 4.11.
- - Isi Waktu Segmen 4.11.
- - Isi Bahan Segmen 4.11.
- - Isi Proses Segmen 4.11.
- Perencanaan Produksi Cek Waktu Segmen 4.12.
- - Cek Segmen 4.12.
Peramalan Penjualan Aktual Penjualan Aktual Segmen 4.13.
- Penjualan Aktual Detail Rumus Segmen 4.14.
- - Isi Bulan Segmen 4.14.
- Peramalan Baru Peramalan Baru Segmen 4.15.
Laporan Laporan Menampilkan Laporan Segmen 4.16.
4.2.1 Form Login
Form Login ini digunakan untuk mengijinkan user untuk masuk dan
menggunakan program ini. Pada form ini dilakukan pengecekan apakah username
dan password yang dimasukkan sudah sesuai dengan data yang terdapat pada
database yang telah dibuat sebelumya. Selain itu, dari username yang diinputkan
juga menentukan hak akses dari user tersebut. setiap user memiliki hak akses yang
berbeda-beda tergantung dari hak akses yang diberikan oleh pemilik perusahaan.
Segmen Program 4.1. Pengecekan Login
procedure TF_login.BitBtn1Click(Sender: TObject);beginf_main.OpenSql(ADOQuery1,'select * from tb_username where username='+quotedstr(edit1.Text));if (edit1.Text<>'') and (edit2.Text<>'') then begin if (ADOQuery1.FieldValues['username']=edit1.Text) and(ADOQuery1.FieldValues['pwd']=edit2.Text) then begin nama:=edit1.Text; f_main.Label5.Caption:=nama; f_main.show; f_login.Visible:=false; end else begin showmessage ('password / username anda salah'); edit1.Text:=''; edit2.Text:=''; end; end else showmessage ('pengisian kurang lengkap');end;
Universitas Kristen Petra
93
Dari procedure di atas dapat dilihat bila username dan password yang
dimasukkan oleh pengguna tidak sesuai maka sistem tidak akan masuk ke program
utama dan mengeluarkan pesan bahwa username atau password yang dimasukkan
salah.
4.2.2 Form Lupa Password
Form ini berfungsi untuk membantu user yang lupa akan password-nya, form
ini akan muncul jika user meng-klik kata “Lupa Password Anda?” pada form login.
User akan mendapatkan password-nya jika mengisi pertanyaan yang ada pada form
forgot password dengan benar. Pertanyaan yang ada pada form forgot password
merupakan pilihan user pada saat user pertama kali membuat username. Jika
pertanyaan diisi dengan benar maka, user akan diberikan informasi tentang password-
nya.
Segmen Program 4.2. Lupa Password
procedure TF_forgot.BitBtn1Click(Sender: TObject);beginif (edit1.Text<>'') and (combobox1.ItemIndex>=0) and (edit2.Text<>'') then begin if (edit2.Text=AdoQuery1.FieldValues['answer']) then begin showmessage('Password Anda Adalah : "' + AdoQuery1.FieldValues['pwd']+'"'); edit1.Text:=''; combobox1.Clear; edit2.Text:=''; edit2.Enabled:=false; BitBtn1.Enabled:=false; end else begin showmessage('Jawaban Anda Salah'); edit2.Text:=''; end; endelse showmessage ('Maaf Pengisian Anda Kurang Lengkap');end;
Universitas Kristen Petra
94
4.2.3. Form Main Menu
Form Main Menu merupakan form utama dari program ini, didalam form ini
terdapat beberapa sub-sub menu yang dapat atau tidak dapat diakses berdasarkan hak
akses yang dipunyai oleh setiap user. Hanya pemilik perusahaan sajalah yang
memiliki hak akses sepenuhnya pada semua sub-sub menu yang ada pada main menu.
Segmen Program 4.3. Procedure Shortcut Pemanggilan Query
4.2.4. Implementasi Menu File
4.2.4.1. Form Tambah User
Form ini berfungsi untuk menambahkan user yang dapat menggunakan
program ini. Username yang ditambahkan tidak dapat sama dengan username
yang telah ada. Setiap user baru yang dibuat tidak memiliki hak akses sama
sekali pada menu-menu yang ada pada main menu, hanya dapat masuk ke dalam
program saja.
procedure TF_main.OpenSql(q : TADOQuery;Sql : string);begin q.Close; q.SQL.Clear; q.SQL.Text:=sql; q.Open;end;
procedure TF_main.ExecuteSql(q : TADOQuery;Sql : string);begin q.Close; q.SQL.Clear; q.SQL.Text:=sql; q.ExecSQL;end;// untuk ambil fieldvalues tabel= nama tabelnya, keyfield=nama field di where, key = edit atocombobox, field = yang di selectfunction TF_main.SearchField(Tabel : string;KeyField : string;Key : string;field : string):string;begin DataModule1.ADOQuery1.Close; DataModule1.ADOQuery1.SQL.Clear; DataModule1.ADOQuery1.SQL.Text:='select '+ field +' from '+ tabel + ' where '+ keyfield +' = '+QuotedStr(key); DataModule1.ADOQuery1.Open; SearchField :=DataModule1.ADOQuery1.FieldValues[field];end;
Universitas Kristen Petra
95
4.2.4.2. Form Edit User
Form ini berfungsi untuk mengedit username, password dan pertanyaan
rahasia dari masing-masing user yang sedang akses. User tidak dapat mengganti
username lama yang sama dengan username yang telah ada di database.
4.2.4.3. Form Delete User
Form ini berfungsi untuk menghapus user-user yang tidak terpakai. User
yang tidak dapat di-delete yaitu user yang sedang login dan user milik pemilik
perusahaan, serta tidak dapat menghapus user yang ada relasi dengan tabel lain.
4.2.4.4. Form Ganti Password
Form ini berfungsi untuk mengganti password dari user yang sedang
login. Untuk mengganti password, user harus menjawab pertanyaan yang telah
dipilih pada saat pertama kali membuat user. Jika berhasil menjawab
pertannyaan dengan benar baru dapat mengganti password user.
4.2.4.5. Form Ganti User
Form yang akan dipanggil sama dengan form login, sub-menu ganti user
ini hanya sebagai link untuk kembali ke form login. Form ini dibuat untuk
memudahkan user, jika user ingin re-login dengan menggunakan username
yang lain.
4.2.4.6. Form Setting User
Form ini berfungsi untuk memberikan dan mengubah hak akses yang
dimiliki oleh user untuk mengakses menu-menu yang ada pada menu utama.
Sub-menu ini hanya dapat diakses oleh pemilik perusahaan saja.
Universitas Kristen Petra
96
Segmen Program 4.4. Procedure Setting User
4.2.5. Implementasi Menu Mesin
4.2.5.1. Form Tambah Mesin
Form ini digunakan untuk menambahkan mesin baru jika pabrik
melakukan pembelian mesin, di sini user juga bisa mengedit jumlah mesin yang
dimiliki pabrik. Kode mesin yang digunakan akan secara otomatis di-generate.
4.2.5.2. Form Add and Edit Master Jenis Mesin
Form ini digunakan untuk menambahkan dan mengubah data master jenis
mesin yang dimiliki oleh pabrik. Jenis mesin dengan nama yang sama tidak
dapat ditambahkan. Untuk mengubah info data jenis mesin, klik checkbox
”edit”.
4.2.5.3. Form View Mesin
Form ini digunakan untuk melihat data mesin baik dengan menggunakan
filter atau melihat semua data mesin. User juga dapat mencari data pada form
Function Tset_user.IsiMenu():string;var i : byte; stat : string;begin for i:=1 to 36 do begin if CheckMenu[i].Checked then stat:=stat+'1' else stat:=stat+'0'; end; IsiMenu:=stat;end;
procedure Tset_user.BitBtn1Click(Sender: TObject);varstat:string;begin stat:=IsiMenu(); f_main.ExecuteSql(ADOQuery1,'update tb_username set status='+quotedstr(stat)+'whereusername='+quotedstr(combobox1.Text)); showmessage ('Setting Telah DiRubah'); combobox1.ItemIndex:=-1; cekbox();end;
Universitas Kristen Petra
97
ini, dengan menggunakan filter semacam jenis mesin atau melalui kode mesin
maupun kode jenis mesin.
4.2.6. Implementasi Menu Material
4.2.6.1. Form Tambah Material Baru
Form ini digunakan untuk menambahkan dan mengedit data material
yang ada pada pabrik. Kode Material yang digunakan akan secara otomatis di-
generate.
4.2.6.2. Form Master Merk Material
Form ini digunakan untuk menambahkan dan mengedit data master merk
material yang ada pada pabrik. Kode Merk Material yang digunakan akan
secara otomatis di-generate . Untuk mengubah info data merk material, klik
checkbox ”edit”.
4.2.6.3. Form Master Jenis Material
Form ini digunakan untuk menambahkan dan mengedit data master jenis
material yang ada pada pabrik. Kode Jenis Material yang digunakan akan
secara otomatis di-generate. Untuk mengubah info data master jenis material,
klik checkbox ”edit”.
4.2.6.4. Form Master Satuan Material
Form ini digunakan untuk menambahkan dan mengedit data master satuan
material yang ada pada pabrik. Kode Satuan Material yang digunakan akan
secara otomatis di-generate. Untuk mengubah info data master satuan material,
klik checkbox ”edit”.
4.2.6.5. Form Master Warna Material
Form ini digunakan untuk menambahkan dan mengedit data master warna
material yang ada pada pabrik. Kode Warna Material yang digunakan akan
Universitas Kristen Petra
98
secara otomatis di-generate. Untuk mengubah info data master warna material,
klik checkbox ”edit”.
4.2.6.6. Form Mutasi Material
Form ini digunakan untuk memasukkan jumlah material apa saja yang
telah dibeli, agar stok di gudang sama dengan stok di database.
Segmen Program 4.5. Procedure Mutasi Material
procedure TM_material.BitBtn4Click(Sender: TObject);vartotal,kolom,baris,i,j,k,stok:integer;a,kodebantu:string;begin if MessageDlg('Apakah data yang anda masukkan benar?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin f_main.ExecuteSql(ADOQuery1,'insert into tb_mutasi_materialvalues('+quotedstr(label8.Caption)+','+quotedstr(f_main.Label5.Caption)+','+quotedstr(datetostr(date))+','+quotedstr(F_main.Label3.Caption)+')'); for i:=1 to stringgrid1.RowCount-2 do begin kodebantu:=StringGrid1.Cells[0,i]; f_main.OpenSql(adoQuery1,'select stok from tb_material_details wherekode_bantu='+quotedstr(kodebantu)); stok:=adoQuery1.FieldValues['stok']; a:=StringGrid1.Cells[4,i]; total:=stok+(strtoint(a)); f_main.ExecuteSql(ADOQuery1,'update tb_material_details setstok='+quotedstr(inttostr(total))+'where kode_bantu='+quotedstr(kodebantu)); f_main.ExecuteSql(ADOQuery1,'insert into tb_mutasi_material_detailvalues('+quotedstr(label8.Caption)+','+quotedstr(kodebantu)+','+quotedstr(StringGrid1.Cells[4,i])+')'); end; showmessage ('Data Telah Diupdate'); kolom:=StringGrid1.ColCount; baris:=StringGrid1.RowCount; for j:=0 to kolom do begin for k:=1 to baris do begin stringgrid1.Cells[j,k]:=''; end; end; clear(); kode_mutasi(); stringgrid1.FixedRows:=1; StringGrid1.RowCount:=2; n:=2; end;end;
Universitas Kristen Petra
99
4.2.6.7. Form View Material
Form ini digunakan untuk melihat data material baik dengan
menggunakan filter ataupun melihat semua data. User-pun dapat mencari data
pada form ini.
4.2.7. Implementasi Menu BOM
4.2.7.1. Form Produk BOM
Form ini digunakan untuk membuat rumus atau formula bahan material
apa saja dan sejumlah berapa yang dibutuhkan untuk membuat produk yang
diinginkan. Jika ingin membuat rumus untuk produk baru maka tinggal
menekan tombol “baru” pada form, yang akan memunculkan form master BOM.
4.2.7.2. Form Master BOM
Form ini digunakan untuk menambahkan dan mengubah keterangan
master BOM dimana rumusnya digunakan untuk membuat produk tertentu.
Kode bom yang dipakai pada form ini secara otomatis akan di-generate. Untuk
mengubah info data master BOM, klik checkbox ”edit”.
4.2.7.3. Form View BOM
Form ini digunakan untuk melihat bahan baku apa saja dan sebanyak
berapa yang dibutuhkan untuk membuat produk tertentu, formula ditampilkan
ini, hanya menampilkan jumlah bahan baku yang diperlukan untuk membuat 1
potong baju.
4.2.8. Implementasi Menu Produk
4.2.8.1. Form Master Produk Baru
Universitas Kristen Petra
100
Form ini digunakan untuk menambahkan ,mengubah maupun menghapus
data-data tentang master produk yang ada pada gudang pabrik ini. Kode produk
secara otomatis akan di-generate.
4.2.8.2. Form Detail Produk
Form ini digunakan untuk menambahkan detail dari sebuah produk
dengan nama produk yang sama. Detail data yang dimaksud adalah BOM yang
dipakai, ukuran, proses yang dipakai dan warna. Sebagai contoh, produk A
mempunyai 2 warna, merah dan hijau. Untuk warna merah memakai BOM
merah, ukuran S dan XL, dan proses A. Sedangkan untuk warna hijau, memakai
BOM hijau, ukuran M dan L, dan proses B. Maka produk A memiliki 2 detail
produk.
4.2.8.3. Form Master Model Produk
Form ini digunakan untuk menambahkan ,mengubah maupun menghapus
data dari master model dari sebuah produk. Kode model produk secara otomatis
akan di-generate. Untuk mengubah info data master model produk, klik
checkbox ”edit”. Nama dari model adalah unik, jadi tidak dapat kembar.
4.2.8.4. Form Master Proses Produk
Form ini digunakan untuk menambahkan ,mengubah maupun menghapus
data dari master proses yang digunakan untuk membuat sebuah produk. Kode
proses secara otomatis akan di-generate. Untuk mengubah info data master
proses produk, klik checkbox ”edit”. Nama dari proses adalah unik, jadi tidak
dapat kembar. Untuk menambahkan detail dari proses produk tinggal klik
tombol “Add Detail”, form detail proses akan muncul.
4.2.8.5. Form Detail Proses Produk
Form ini digunakan untuk menambahkan detail dari proses produk
dimana untuk setiap nama proses yang di buat akan terdiri dari beberapa proses,
Universitas Kristen Petra
101
mesin yang digunakan untuk setiap proses juga berbeda-beda. Urutan proses
dan waktu yang dibutuhkan di- input-kan oleh user. Sebagai contoh, Proses
dengan nama “Pembuatan Oblong Pallmall” memiliki 4 proses dengan urutan 1-
4 dan masing-masing urutan memakan waktu 2 menit.
4.2.8.6. Form Master Warna Produk
Form ini digunakan untuk menambahkan ,mengubah maupun menghapus
data dari master warna produk yang dimiliki oleh pabrik. Kode warna secara
otomatis akan di-generate. Untuk mengubah info data master warna produk,
klik checkbox ”edit”. Nama dari warna adalah unik, jadi tidak dapat kembar.
4.2.8.7. Form Mutasi Masuk Produk
Form ini diibaratkan sebagai baik nota retur penjualan ataupun produk
yang lupa dimasukkan ke database, sehingga produk apa saja yang
dikembalikan oleh pelanggan akan dimasukkan kembali kedalam gudang.
Setiap data yang masuk, stok akan bertambah di gudang. Yang bertanggung
jawab akan kesalahan yang dilakukan pada saat memasukkan data yaitu user
yang sedang login.
Universitas Kristen Petra
102
Segmen Program 4.6. Procedure Mutasi Masuk Produk
procedure TMutasi_pm.BitBtn4Click(Sender: TObject);vari,j,k:integer;total,kolom,baris :integer; a,k_produk,k_model,k_warna,stok,kodebantu:string;begin if MessageDlg('Apakah data yang anda masukkan benar?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin f_main.ExecuteSql(ADOQuery1,'insert into tb_mutasi_produkvalues('+quotedstr(label8.Caption)+','+quotedstr(f_main.Label5.Caption)+','+quotedstr(datetostr(date))+','+quotedstr(F_main.Label3.Caption)+')'); for i:=1 to stringgrid1.RowCount-2 do begin f_main.OpenSql(adoQuery1,'select kode_model from tb_produk_model whereinfo_model='+quotedstr(StringGrid1.Cells[2,i])); k_model:=adoQuery1.FieldValues['kode_model']; f_main.OpenSql(adoQuery1,'select kode_warna from tb_produk_warna whereinfo_warna='+quotedstr(StringGrid1.Cells[3,i])); k_warna:=adoQuery1.fieldvalues['kode_warna']; f_main.OpenSql(adoQuery1,'select kode_produk from tb_master_produk wherenama_produk='+quotedstr(StringGrid1.Cells[1,i])); k_produk:=adoQuery1.FieldValues['kode_produk']; f_main.OpenSql(adoQuery1,'select stok from tb_produk_detail wherekode_produk='+quotedstr(k_produk)+'and kode_model='+quotedstr(k_model)+'andkode_warna='+quotedstr(k_warna)); stok:=adoQuery1.FieldValues['stok']; a:=StringGrid1.Cells[4,i]; total:=(strtoint(stok))+(strtoint(a)); f_main.ExecuteSql(adoQuery1,'update tb_produk_detail set stok='+quotedstr(inttostr(total))+'where kode_produk='+quotedstr(k_produk)+'and kode_model='+quotedstr(k_model)+'andkode_warna='+quotedstr(k_warna)); f_main.OpenSql(ADOQuery1,'select kode_bantu2 from q_produk_detail wherenama_produk='+quotedstr(StringGrid1.Cells[1,i])+'andinfo_model='+quotedstr(StringGrid1.Cells[2,i])+'and info_warna='+quotedstr(StringGrid1.Cells[3,i])); kodebantu:=adoquery1.FieldValues['kode_bantu2']; f_main.ExecuteSql(ADOQuery1,'insert into tb_mutasi_produk_detailvalues('+quotedstr(label8.Caption)+','+quotedstr(kodebantu)+','+quotedstr(a)+','+'0'+')'); end; showmessage ('Data Telah Diupdate'); kolom:=StringGrid1.ColCount; baris:=StringGrid1.RowCount; for j:=0 to kolom do begin for k:=1 to baris do begin stringgrid1.Cells[j,k]:=''; end; end; clear(); kode(); stringgrid1.FixedRows:=1; StringGrid1.Rowcount:=2; n:=2; end;end;
Universitas Kristen Petra
103
4.2.8.8. Form Mutasi Penjualan
Form ini juga diibaratkan sebagai nota penjualan, sehingga produk apa
saja yang diinginkan oleh pelanggan akan diambil dari gudang. Setiap data yang
keluar, stok akan berkurang. Yang bertanggung jawab akan kesalahan yang
dilakukan pada saat memasukkan data yaitu user yang sedang login.
Segmen Program 4.7. Procedure Mutasi Keluar Produk
procedure Tmutasi_pk.BitBtn4Click(Sender: TObject);vari,j,k:integer;b,total,kolom,baris :integer;a,k_produk,k_model,k_warna,stok,kodebantu:string;begin if MessageDlg('Apakah data yang anda masukkan benar?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin// MessageDlg('Apakah data yang anda masukkan benar?', mtconfirmation,[mbOk,mbcancel], 0);f_main.ExecuteSql(ADOQuery1,'insert into tb_mutasi_produkvalues('+quotedstr(label8.Caption)+','+quotedstr(f_main.Label5.Caption)+','+quotedstr(datetostr(date))+','+quotedstr(F_main.Label3.Caption)+')'); for i:=1 to stringgrid1.RowCount-2 do begin b:=0; f_main.OpenSql(adoQuery1,'select kode_model from tb_produk_model whereinfo_model='+quotedstr(StringGrid1.Cells[2,i])); k_model:=adoQuery1.FieldValues['kode_model']; f_main.OpenSql(adoQuery1,'select kode_warna from tb_produk_warna whereinfo_warna='+quotedstr(StringGrid1.Cells[3,i])); k_warna:=adoQuery1.fieldvalues['kode_warna']; f_main.OpenSql(adoQuery1,'select kode_produk from tb_master_produk wherenama_produk='+quotedstr(StringGrid1.Cells[1,i])); k_produk:=adoQuery1.FieldValues['kode_produk']; f_main.OpenSql(adoQuery1,'select stok from tb_produk_detail wherekode_produk='+quotedstr(k_produk)+'and kode_model='+quotedstr(k_model)+'andkode_warna='+quotedstr(k_warna)); stok:=adoQuery1.FieldValues['stok']; a:=StringGrid1.Cells[4,i]; total:=(strtoint(stok))-(strtoint(a)); if (total>=0) then begin f_main.ExecuteSql(adoQuery1,'update tb_produk_detail set stok='+quotedstr(inttostr(total))+'where kode_produk='+quotedstr(k_produk)+'and kode_model='+quotedstr(k_model)+'andkode_warna='+quotedstr(k_warna)); f_main.OpenSql(ADOQuery1,'select kode_bantu2 from q_produk_detail wherenama_produk='+quotedstr(StringGrid1.Cells[1,i])+'andinfo_model='+quotedstr(StringGrid1.Cells[2,i])+'and info_warna='+quotedstr(StringGrid1.Cells[3,i])); kodebantu:=adoquery1.FieldValues['kode_bantu2']; f_main.ExecuteSql(ADOQuery1,'insert into tb_mutasi_produk_detailvalues('+quotedstr(label8.Caption)+','+quotedstr(kodebantu)+','+'0'+','+quotedstr(a)+')');
Universitas Kristen Petra
104
4.2.8.9. Form View Produk
Form ini digunakan untuk melihat data produk baik dengan menggunakan
filter ataupun melihat semua data. Dan user-pun dapat mencari data pada form
ini.
4.2.9. Implementasi Menu Proyek
4.2.9.1. Form Setting Jam Kerja
Form ini digunakan untuk mengganti jam masuk dan jam keluar yang
digunakan untuk standart jam kerja pada Pabrik Garment “X”.
4.2.9.2. Form Tambah Proyek Baru
Form ini digunakan untuk membuat proyek baru. Pertama, pilih produk
apa yang ingin diproduksi. Setelah itu, masukkan berapa jumlah yang ingin
diproduksi. Kemudian tentukan prioritas dan tanggal mulai produksi. Tanggal
end else begin //showmessage('Stok Tidak Mencukupi Untuk Produk: '+StringGrid1.Cells[0,i]+StringGrid1.Cells[1,i] +StringGrid1.Cells[2,i] +StringGrid1.Cells[3,i]); b:=1; end; end; if (b=0) then begin showmessage ('Data Telah Dikurangi'); end;
kolom:=StringGrid1.ColCount; baris:=StringGrid1.RowCount; for j:=0 to kolom do begin for k:=1 to baris do begin stringgrid1.Cells[j,k]:=''; end; end; stringgrid1.FixedRows:=1; StringGrid1.RowCount:=2; n:=2; end;end;
Universitas Kristen Petra
105
mulai produksi tidak dapat lebih kecil dari tanggal hari ini. Pengurangan untuk
kebutuhan material yang digunakan untuk proyek tersebut dilakukan pada saat
penambahan proyek, jika material yang dibutuhkan tidak mencukupi maka
proyek yang baru tidak dapat ditambahkan.
Segmen Program 4.8. Procedure Tambah Proyek Baru
procedure TAdd_projek.BitBtn1Click(Sender: TObject);varflag,flag2:boolean;a:TDate;total,sisa:integer;begintotal:=0;sisa:=0;flag2:=true;flag:=true;if (edit1.Text<>'') and (combobox3.ItemIndex>=0) and (edit2.Text<>'') and(DBLookupComboBox1.ListFieldIndex>=0) thenbegin f_main.OpenSql(ADOQuery3,'select * from q_tambah_projek wherekode_bantu2='+quotedstr(DBLookupComboBox1.Text)); while not ADOQuery3.Eof do begin total:=ADOQuery3.FieldValues['jumlah']*strtoint(edit2.Text); if ADOQuery3.FieldValues['stok']<total then begin flag2:=false; end; ADOQuery3.Next; end; if flag2 then begin sisa:=ADOQuery3.FieldValues['stok']-total; end; a:=DateOf(now); if (MonthCalendar1.Date>=a) then flag:=true; if (MonthCalendar1.Date<a) then flag:=false; if flag=true and flag2= true then begin f_main.ExecuteSql(AdoQuery1,'insert into tb_projekvalues('+quotedstr(label2.Caption)+','+quotedstr(DBLookupComboBox1.Text)+','+quotedstr(edit1.Text)+','+inttostr(combobox3.ItemIndex)+','+edit2.Text+','+quotedstr(datetostr(MonthCalendar1.date))+',Null'+',null'+',null'+',Null)');
Universitas Kristen Petra
106
4.2.9.3. Form Pelaksanaan Proyek
Form ini digunakan untuk mengisikan tanggal dan jam kapan proyek yang
telah dipilih mulai dan selesai. Tanggal dan jam proyek dimulai dan selesai
merupakan input manual, ada beberapa kondisi pengecekan untuk tgl dan jam
mulai dan selesai. Setelah diisikan tinggal menekan tombol “tutup proyek” yang
akan memunculkan form penyesuaian material. Proyek yang telah ditutup tidak
dapat di-edit tanggal dan jam mulai ataupun selesai.
//update stok material f_main.OpenSql(ADOQuery4,'select kode_bantu ,jumlah,stok from q_tambah_projek wherekode_bantu2='+quotedstr(DBLookupComboBox1.Text)); while not ADOQuery4.Eof do begin f_main.ExecuteSql(ADOQuery3,'update tb_material_details set stok='+inttostr(sisa)+' wherekode_bantu='+quotedstr(ADOQuery4.FieldValues['kode_bantu'])); ADOQuery4.Next; end;//update stok material
f_main.OpenSql(AdoQuery1,'select d.kode_bantu from tb_produk_detail as pd, tb_master_proses asp, tb_detail_proses as d where pd.kode_proses=p.kode_proses and p.kode_proses=d.kode_proses andpd.kode_bantu2='+quotedstr(DBLookupComboBox1.Text)+' order by d.urutan'); while not AdoQuery1.Eof do begin f_main.ExecuteSql(ADOQuery3,'insert into tb_projek_detailvalues('+quotedstr(label2.Caption)+','+quotedstr(AdoQuery1.FieldValues['kode_bantu'])+',null,null,null,null)'); AdoQuery1.Next; end; isi_ kode(); clear(); showmessage ('Projek Telah Ditambahkan'); end else if (flag=false) then showmessage ('Tanggal Mulai Harus Lebih Besar Atau Sama Dengan Tanggal Hari Ini') else if flag2=false then showmessage ('Bahan Material Kurang, Harap Menambahkan Di form Mutasi Pembelian Material');endelse showmessage ('Harap Mengisi Semua Field');end;
Universitas Kristen Petra
107
Segmen Program 4.9. Procedure Pelaksanaan Proyek
4.2.9.4. Form Penyesuaian Material
Form ini akan muncul setelah user telah menngisikan waktu selesai dari
mesin untuk proses produksi yang terakhir. Form ini digunakan untuk
mencocokan hasil perkiraan penggunaan material dengan kenyataan di
lapangan kerja. Setelah selesai, klik tombol “Tutup Proyek” untuk penutupan
procedure TPelaksanaanprojek.BitBtn2Click(Sender: TObject);varflag:boolean;begin
flag:=true;if (DateTimePicker1.Date>DateTimePicker3.Date) then flag:=falseelse if (DateToStr(DateTimePicker1.Date)=DateToStr(DateTimePicker3.Date))and(TimeToStr(DateTimePicker2.Time)>=TimeToStr(DateTimePicker4.Time)) then flag:=false;if flag thenbegin if (CheckBox1.Checked) and (CheckBox2.Checked) then begin f_main.ExecuteSql(ADOQuery2,'update tb_projek settgl_mulai_produksi='+quotedstr(datetostr(DateTimePicker1.Date))+','+'jam_mulai='+quotedstr(timetostr(DateTimePicker2.Time))+','+'tgl_selesai='+quotedstr(datetostr(DateTimePicker3.Date))+','+'jam_selesai='+quotedstr(timetostr(DateTimePicker4.Time))+'wherekode_projek='+quotedstr(label29.Caption)); end else if (checkbox1.Checked) then begin f_main.ExecuteSql(ADOQuery2,'update tb_projek settgl_mulai_produksi='+quotedstr(datetostr(DateTimePicker1.Date))+','+'jam_mulai='+quotedstr(timetostr(DateTimePicker2.Time))+'where kode_projek='+quotedstr(label29.Caption)); end else if CheckBox2.Checked then begin f_main.ExecuteSql(ADOQuery2,'update tb_projek settgl_selesai='+quotedstr(datetostr(DateTimePicker3.Date))+','+'jam_selesai='+quotedstr(timetostr(DateTimePicker4.Time))+'where kode_projek='+quotedstr(label29.Caption)); end;endelse showmessage ('Tgl atau Jam Selesai Produksi Tidak Boleh Lebih Kecil Dari Tgl atau Jam MulaiProduksi');f_main.OpenSql(ADOQuery2,'select tgl_selesai from tb_projek wherekode_projek='+quotedstr(label29.Caption));if ADOQuery2.FieldValues['tgl_selesai']<>NULL then begin Penyesuaian_mat.Show; Pelaksanaanprojek.Enabled:=false; end;end;
Universitas Kristen Petra
108
proyek. Stok material secara otomatis di-update, data penggunaan material ini
akan disimpan di tabel history material.
Segmen Program 4.10. Procedure Tutup Proyek
4.2.9.5. Form Perhitungan Lama Waktu Produksi
Form ini merupakan alat bantu menghitung lama waktu, dan bahan baku
yang dibutuhkan untuk memproduksi sejumlah produk. Perhitungan lama waktu
juga dipengaruhi oleh banyaknya mesin yang dipakai, semakin sedikit mesin
yang digunakan, maka semakin lama waktu yang dibutuhkan untuk
menyelesaikan proses produksi.
procedure TPenyesuaian_mat.BitBtn1Click(Sender: TObject);vari,stok,sisa:integer;kodebantu:string;beginfor i:=1 to StringGrid1.RowCount-1 do begin f_main.OpenSql(ADOQuery1,'select stok,kode_bantu from q_penyesuaian_material wherekode_projek='+quotedstr(label2.Caption)+'andmerek_material='+quotedstr(StringGrid1.Cells[1,i])+'andjenis_material='+quotedstr(StringGrid1.Cells[2,i])+'andinfo_warna='+quotedstr(StringGrid1.Cells[3,i])); stok:=ADOQuery1.FieldValues['stok']; sisa:=stok-strtoint(StringGrid1.Cells[5,i]); kodebantu:=ADOQuery1.FieldValues['kode_bantu']; if sisa>=0 then begin f_main.ExecuteSql(ADOQuery1,'update tb_material_details set stok='+quotedstr(inttostr(sisa))); f_main.ExecuteSql(ADOQuery1,'insert into tb_history_material values('+quotedstr(label2.Caption)+','+quotedstr(kodebantu)+','+quotedstr(StringGrid1.Cells[4,i])+','+quotedstr(StringGrid1.cells[5,i])+','+quotedstr(f_main.Label5.Caption)); showmessage ('Projek Telah Ditutup, Stok Material yang Dipakai Telah Dikurangi'); end else showmessage ('Stok Tidak Mencukupi'); end;end;
Universitas Kristen Petra
109
Segmen Program 4.11. Procedure Perhitungan Lama Waktu Produksi
procedure TLama_Produksi.hitung_waktu();varjam:real;i,banyak,hasil,hasilbagi,total,total1,tambahan:integer;begin total1:=0; f_main.OpenSql(ADOQuery2,'select Nama,waktu,jumlah from q_lama_produksi wherekode_bantu2='+quotedstr(DBLookupComboBox1.Text)+'order by kode_bantu2,kode_proses,urutan'); banyak:=ADOQuery2.RecordCount;if banyak>0 thenbegin for i:=1 to banyak do begin tambahan:=0; if (strtoint(StringGrid1.Cells[4,i])>(strtoint(label15.Caption))) then begin if (strtoint(label15.Caption)<>0)then begin StringGrid1.Cells[4,i]:=label15.Caption; end; end; hasil:=strtoint(label15.Caption)div strtoint(StringGrid1.Cells[4,i]); hasilbagi:=strtoint(label15.Caption)mod strtoint(StringGrid1.Cells[4,i]); if (hasilbagi<(strtoint(StringGrid1.Cells[4,i]))) then begin if hasilbagi<>0 then begin tambahan:=1*strtoint(StringGrid1.Cells[2,i]); end; end; total:=(hasil*strtoint(StringGrid1.Cells[2,i]))+(tambahan); StringGrid1.Cells[5,i]:=inttostr(total); total1:=total1+strtoint(StringGrid1.Cells[5,i]); end; jam:=total1/60; memo1.Lines.Add('Total Waktu Proses Dgn Menggunakan Beberapa Mesin Tiap Proses='+inttostr(total1)+' Menit ==> '+floattostr(jam)+' Jam');end;end;procedure TLama_Produksi.isidblook();varbanyak:integer;begin F_main.OpenSql(ADOQuery1,'select * from q_produk_detail order by kode_bantu2'); banyak:=ADOQuery1.RecordCount; if banyak<=15 then begin DBLookupComboBox1.DropDownRows:=banyak; end else begin DBLookupComboBox1.DropDownRows:=15; end; DBLookupComboBox1.ListSource:=DataSource1; DBLookupComboBox1.ListField:='kode_bantu2;nama_produk;info_model;info_warna;ukuran'; DBLookupComboBox1.KeyField:='kode_bantu2';end;
Universitas Kristen Petra
110
procedure TLama_Produksi.isiproses();vartotal,i,banyak:integer;begin memo1.Clear; f_main.OpenSql(ADOQuery2,'select Nama,waktu,jumlah from q_lama_produksi wherekode_bantu2='+quotedstr(DBLookupComboBox1.Text)+'order by kode_bantu2,kode_proses,urutan'); if ADOQuery2.RecordCount>0 then begin banyak:=ADOQuery2.RecordCount; StringGrid1.RowCount:=banyak+1; end else begin banyak:=ADOQuery2.RecordCount; StringGrid1.RowCount:=2; StringGrid1.FixedRows:=1; StringGrid1.FixedCols:=1; end;if banyak>0 then begin for i:=1 to banyak do begin total:=(ADOQuery2.FieldValues['waktu'])*(strtoint(label15.Caption)); StringGrid1.Cells[0,i]:=inttostr(i); stringgrid1.Cells[1,i]:=ADOQuery2.FieldValues['nama']; stringgrid1.Cells[2,i]:=ADOQuery2.FieldValues['waktu']; StringGrid1.Cells[3,i]:=inttostr(total); StringGrid1.Cells[4,i]:=ADOQuery2.FieldValues['jumlah']; memo1.Lines.Add(inttostr(i)+'. '+ADOQuery2.FieldValues['nama']+', Lama Proses='+''+inttostr(ADOQuery2.FieldValues['waktu'])+' Menit'+','+' Total='+' '+stringgrid1.Cells[3,i]+' Menit'); ADOQuery2.Next; end; memo1.Lines.Add(''); memo1.Lines.Add('****************************************************'); memo1.Lines.Add('Total Waktu Proses Dgn Menggunakan 1 Mesin Tiap Proses = '+label4.Caption); memo1.Lines.Add('****************************************************'); end;end;
procedure TLama_Produksi.isibahan();vari,banyak,total:integer;begin memo2.Clear; f_main.OpenSql(ADOQuery2,'select * from q_view_bom1 wherekode_bom='+quotedstr(label9.Caption)); banyak:=ADOQuery2.RecordCount; for i:=1 to banyak do begin total:=strtoint(label15.Caption)* ADOQuery2.FieldValues['jumlah']; memo2.Lines.Add('========================================'); memo2.Lines.Add(inttostr(i)+'. '+'Merk Material : '+ADOQuery2.FieldValues['merek_material']); memo2.Lines.Add(' Jenis Material : '+ADOQuery2.FieldValues['jenis_material']); memo2.lines.Add(' Info Warna : '+ADOQuery2.FieldValues['info_warna']); memo2.Lines.Add(' Total Bahan Baku Yang Dibutuhkan : '+inttostr(total)+''+ADOQuery2.FieldValues['info_satuan']+' ');
Universitas Kristen Petra
111
memo2.Lines.Add(' Stok Di Gudang Saat Ini Adalah'+inttostr(ADOQuery2.FieldValues['stok'])+' '+ADOQuery2.FieldValues['info_Satuan'] ); memo2.Lines.Add('========================================'); memo2.Lines.Add(''); ADOQuery2.Next; endend;
procedure TLama_Produksi.Edit1Change(Sender: TObject);vartotal,jumlah,jmlpro,i,j:integer;jam:real;beginif edit1.Text<>'' then begin total:=0; edit2.Text:=''; jmlpro:=(strtoint(edit1.Text)-ADOQuery1.FieldValues['stok'])+(ADOQuery1.FieldValues['stok_min']); if jmlpro<0 then label15.Caption:='0' else label15.Caption:=inttostr(jmlpro); f_main.OpenSql(ADOQuery2,'select waktu from q_lama_produksi wherekode_bantu2='+quotedstr(DBLookupComboBox1.Text)); while not ADOQuery2.Eof do begin total:=total+ADOQuery2.FieldValues['waktu']; ADOQuery2.Next; end; jumlah:=total*(strtoint(label15.Caption)); jam:=(jumlah/60); label4.Caption:=inttostr(jumlah)+' Menit ==>'+ floattostr(jam)+' Jam'; isiproses(); isibahan(); hitung_waktu(); endelse begin label4.Caption:='---- Menit ==> ---- Jam'; label15.Caption:='---- '; edit2.Text:=''; memo1.Clear; memo2.Clear; //reset stringgrid for i:=1 to stringgrid1.RowCount-1 do begin for j:=0 to stringgrid1.ColCount-1 do begin stringgrid1.Cells[j,i]:=''; end; end; StringGrid1.RowCount:=2; StringGrid1.FixedRows:=1; StringGrid1.FixedCols:=1; end;end;
Universitas Kristen Petra
112
procedure TLama_Produksi.StringGrid1Click(sender:tobject);vari:integer;temp:array [1..5] of integer;beginkolom:=StringGrid1.Col;baris:=StringGrid1.Row;if (kolom=4) then begin f_main.OpenSql(ADOQuery2,'select jumlah from q_lama_produksi wherekode_bantu2='+quotedstr(DBLookupComboBox1.Text)+'order by kode_bantu2,kode_proses,urutan'); for i:=1 to ADOQuery2.RecordCount do begin temp[i]:=ADOQuery2.FieldValues['jumlah']; if baris=i then label18.Caption:=inttostr(temp[i]); ADOQuery2.Next; end; edit2.Enabled:=true; edit2.Text:=''; edit2.SetFocus; end;end;
procedure TLama_Produksi.BitBtn1Click(Sender: TObject);beginif (edit2.Text<>'') and (edit2.Text<>'0') then begin if (strtoint(edit2.Text)<=strtoint(label18.Caption)) and (strtoint(edit2.Text)>=0) then begin if (strtoint(edit2.Text)<=strtoint(label15.Caption)) then begin StringGrid1.Cells[kolom,baris]:=edit2.Text; hitung_waktu(); end else begin if strtoint(label15.Caption)<=strtoint(label18.Caption) then begin showmessage ('Lebih Baik Menggunakan '+label15.Caption+' Mesin'); edit2.Text:=label15.Caption; end end; end else begin showmessage ('Jumlah Mesin Max adalah '+label18.Caption); edit2.Text:=label18.Caption; end; endelse begin showmessage ('Jumlah Mesin Yang Diinputkan Minimal 1'); edit2.Text:='1'; end;end;
Universitas Kristen Petra
113
4.2.9.6. Form Perencanaan Produksi
Form ini menampilkan informasi hasil penjadwalan dimana terdapat
perkiraan jam produksi dan jam selesai produksi. Perencanaan produksi ini
berdasarkan FCFS (First Come First Served) yaitu proyek yang masuk pertama
yang didahulukan. Setelah pertimbangan FCFS maka selanjutnya prioritas
pesanan pelanggan lebih diutamakan daripada make-to-stok.
Segmen Program 4.12. Procedure Penjadwalan Produksi
procedure TPenjadwalan.cekwaktu(totalwaktuproses:integer;tglmulai:tdate;jammulai:ttime; vartglselesai:tdate; var jamselesai:ttime);varjam,menit,lamakerja:integer;waktu:string;begin //totalwaktuproses:=5465; jam:=totalwaktuproses div 60; menit:=totalwaktuproses mod 60; tglselesai:=tglmulai; lamakerja:=strtoint(copy(timetostr(jam_keluar),1,pos(':',timetostr(jam_keluar))-1))-strtoint(copy(timetostr(jam_masuk),1,pos(':',timetostr(jam_masuk))-1)); if (jam>=lamakerja) then begin tglselesai:=tglselesai+(jam div lamakerja); jam:=jam mod lamakerja; end; waktu:=inttostr(jam)+':'+inttostr(menit); jamselesai:=jammulai+strtotime(waktu); if jamselesai>jam_keluar then begin jamselesai:=(jamselesai-jam_keluar)+jam_masuk; tglselesai:=tglselesai+1; end;end;
procedure TPenjadwalan.cek();varjammesinterakhir,jam_selesai,jamprosesterakhir:TTime;tgltutupprojek,tgl_pro,tgl_selesai,tglmesinterakhir,tglprosesterakhir:TDate;i,j,JmlMesinLast,temp,total,flag:integer;beginf_main.OpenSql(ADOQuery1,'select * from setting');jam_masuk:=ADOQuery1.FieldValues['jam_masuk'];jam_keluar:=ADOQuery1.FieldValues['jam_keluar'];f_main.OpenSql(ADOQuery1,'select tgl_produksi from tb_projek wherekode_projek='+quotedstr(StringGrid1.Cells[0,1]));tgl_pro:=ADOQuery1.FieldValues['tgl_produksi'];f_main.OpenSql(ADOQuery1,'select (tgl_selesai) as tglselesai ,(jam_selesai) as jamselesai fromq_penjadwalan_produksi3 ');ADOQuery1.Last;
Universitas Kristen Petra
114
//f_ main.OpenSql(ADOQuery1,'select last(tutup_projek)as tutup,last(jam_selesai)as jamselesai fromq_penjadwalan_produksi3 ');stringgrid2.Cells[0,1]:= inttostr(strtoint(stringgrid1.Cells[4,1]) mod strtoint(stringgrid1.Cells[7,1]));StringGrid2.Cells[2,1]:=StringGrid1.Cells[3,1];StringGrid2.Cells[3,1]:=StringGrid1.Cells[7,1];
if (ADOQuery1.FieldValues['jamselesai']<>NULL) and(ADOQuery1.FieldValues['tglselesai']<>NULL) thenbegin// tgltutupprojek:=ADOQuery1.FieldValues['tutup']; tgltutupprojek:=ADOQuery1.FieldValues['tglselesai']; jammesinterakhir:=ADOQuery1.FieldValues['jamselesai'];end;
if ADOQuery1.FieldValues['tglselesai']<>NULL then begin if (tgl_pro<tgltutupprojek) then begin StringGrid1.Cells[8,1]:=datetostr(tgltutupprojek); StringGrid1.Cells[9,1]:=timetostr(jammesinterakhir); end else begin StringGrid1.Cells[8,1]:=datetostr(tgl_pro); StringGrid1.Cells[9,1]:=timetostr(jam_masuk); end;
endelse begin StringGrid1.Cells[8,1]:=datetostr(tgl_pro); StringGrid1.Cells[9,1]:=timetostr(jam_masuk); end;cekwaktu(strtoint(StringGrid1.Cells[3,1]),strtodate(StringGrid1.Cells[8,1]),strtotime(StringGrid1.Cells[9,1]),tgl_selesai,jam_selesai);StringGrid1.Cells[10,1]:=datetostr(tgl_selesai);StringGrid1.Cells[11,1]:=timetostr(jam_selesai);
tglprosesterakhir:=strtodate(StringGrid1.Cells[8,1]); jamprosesterakhir:=strtotime(StringGrid1.Cells[9,1]);for i:=2 to StringGrid1.RowCount-1 do begin
for j:=1 to i-1 do begin if StringGrid1.Cells[6,i]=StringGrid1.Cells[6,j] then begin tglmesinterakhir:=strtodate(StringGrid1.Cells[10,j]); jammesinterakhir:=strtotime(StringGrid1.Cells[11,j]); jmlMesinLast:= strtoint(stringgrid2.Cells[0,j]); end;if (StringGrid1.Cells[0,i]=StringGrid1.Cells[0,j]) and (StringGrid1.Cells[2,j]<StringGrid1.Cells[2,i])then begin if tglprosesterakhir<=strtodate(StringGrid1.Cells[10,j]) then begin
Universitas Kristen Petra
115
if (tglprosesterakhir=strtodate(StringGrid1.Cells[10,j])) and(strtotime(StringGrid1.Cells[11,j])<jamprosesterakhir)then jamprosesterakhir:=jamprosesterakhir else jamprosesterakhir:=strtotime(StringGrid1.Cells[11,j]); tglprosesterakhir:=strtodate(StringGrid1.Cells[10,j]); end end; end; if (tglmesinterakhir>tglprosesterakhir) and (tglmesinterakhir<>0)then begin flag:=1; StringGrid1.Cells[8,i]:=datetostr(tglmesinterakhir); StringGrid1.Cells[9,i]:=timetostr(jammesinterakhir); if (strtoint(stringgrid1.Cells[4,i])-JmlMesinLast)>=0 then stringgrid2.Cells[0,i]:= inttostr(strtoint(StringGrid1.Cells[7,i])-((strtoint(stringgrid1.Cells[4,i])-JmlMesinLast) mod strtoint(stringgrid1.Cells[7,i]))) else stringgrid2.Cells[0,i]:= inttostr(JmlMesinLast-(strtoint(stringgrid1.Cells[4,i]))); end else if (tglprosesterakhir>tglmesinterakhir) and (tglprosesterakhir<>0) then begin flag:=2; StringGrid1.Cells[8,i]:=datetostr(tglprosesterakhir); StringGrid1.Cells[9,i]:=timetostr(jamprosesterakhir); stringgrid2.Cells[0,i]:= inttostr(strtoint(StringGrid1.Cells[7,i])-(strtoint(stringgrid1.Cells[4,i])mod strtoint(stringgrid1.Cells[7,i]))); end else if (tglmesinterakhir=tglprosesterakhir)and (tglmesinterakhir<>0) then begin StringGrid1.Cells[8,i]:=datetostr(tglmesinterakhir); if jamprosesterakhir>jammesinterakhir then begin flag:=2; StringGrid1.Cells[9,i]:=timetostr(jamprosesterakhir); stringgrid2.Cells[0,i]:= inttostr(strtoint(StringGrid1.Cells[7,i])-(strtoint(stringgrid1.Cells[4,i])mod strtoint(stringgrid1.Cells[7,i]))); end else begin flag:=1; StringGrid1.Cells[9,i]:=timetostr(jammesinterakhir); if (strtoint(stringgrid1.Cells[4,i])-JmlMesinLast)>=0 then stringgrid2.Cells[0,i]:= inttostr(strtoint(StringGrid1.Cells[7,i])-((strtoint(stringgrid1.Cells[4,i])-JmlMesinLast) mod strtoint(stringgrid1.Cells[7,i]))) else stringgrid2.Cells[0,i]:= inttostr(JmlMesinLast-(strtoint(stringgrid1.Cells[4,i]))); end end; if StringGrid1.Cells[8,i]='' then begin flag:=2; f_main.OpenSql(ADOQuery1,'select tgl_produksi from tb_projek wherekode_projek='+quotedstr(StringGrid1.Cells[0,i])); tgl_pro:=ADOQuery1.FieldValues['tgl_produksi'];
Universitas Kristen Petra
116
if (tglprosesterakhir>tgl_pro) or (tglprosesterakhir=0) then begin StringGrid1.Cells[8,i]:=datetostr(tgl_pro); StringGrid1.Cells[9,i]:=timetostr(jam_masuk); end else begin StringGrid1.Cells[8,i]:=datetostr(tglprosesterakhir); StringGrid1.Cells[9,i]:=timetostr(jamprosesterakhir); end; stringgrid2.Cells[0,i]:= inttostr(strtoint(StringGrid1.Cells[7,i])-(strtoint(stringgrid1.Cells[4,i])mod strtoint(stringgrid1.Cells[7,i]))); end; if (strtoint(StringGrid2.Cells[0,i])=strtoint(StringGrid1.Cells[7,i])) then StringGrid2.Cells[0,i]:='0';
if (flag=1) and (JmlMesinLast>=strtoint(stringgrid1.Cells[4,i])) then begin total:=strtoint(stringgrid1.Cells[5,i]); StringGrid2.Cells[3,i]:=stringgrid1.Cells[4,i]; end else begin if (JmlMesinLast>0) and (flag=1)then begin temp:=strtoint(StringGrid1.Cells[4,i])-JmlMesinLast; StringGrid2.Cells[3,i]:=inttostr(JmlMesinLast); end else begin temp:=strtoint(StringGrid1.Cells[4,i]); StringGrid2.Cells[3,i]:=StringGrid1.Cells[7,i]; end; total:=(temp div strtoint(StringGrid1.Cells[7,i]) * strtoint(StringGrid1.Cells[5,i]) ) ; if (temp mod strtoint(StringGrid1.Cells[7,i])>0) then total:=total+strtoint(StringGrid1.Cells[5,i]); if (JmlMesinLast>0) and (flag=1)then total:=total+strtoint(StringGrid1.Cells[5,i]); end; stringgrid2.Cells[2,i]:=inttostr(total);
cekwaktu(strtoint(StringGrid2.Cells[2,i]),strtodate(StringGrid1.Cells[8,i]),strtotime(StringGrid1.Cells[9,i]),tgl_selesai,jam_selesai); StringGrid1.Cells[10,i]:=datetostr(tgl_selesai); StringGrid1.Cells[11,i]:=timetostr(jam_selesai); if (StringGrid1.Cells[0,i+1]<>StringGrid1.cells[0,i]) then begin
tglmesinterakhir:= 0; jammesinterakhir:=0; tglprosesterakhir:=0; jamprosesterakhir:=0; end; end;end;
Universitas Kristen Petra
117
4.2.9.7. Form View Proyek
Form ini digunakan untuk melihat data proyek baik dengan menggunakan
filter ataupun melihat semua data. Dan user-pun dapat mencari data pada form
ini. Filter yang digunakan yaitu tanggal produksi dan nama proyek.
4.2.10. Implementasi Menu Peramalan
4.2.10.1. Form Data Penjualan Aktual
Form ini digunakan untuk memasukkan data produk, model produk dan
tahun produk yang akan dimasukkan data penjualan aktualnya. Jika detail data
produk telah ada atau pernah dibuat maka user hanya tinggal klik 2 kali pada
tabel, kemudian akan muncul sebuah form detail penjualan aktual yang
digunakan untuk mengedit jumlah data penjualan aktualnya. Setiap detail
produk yang dibuat secara otomatis semua data akan bernilai 0. Kode penjualan
akan di-generate secara otomatis.
Universitas Kristen Petra
118
Segmen Program 4.13. Procedure Simpan Data Detail Produk
procedure TPenj_aktual.kode_penj();vartempangka:integer;temphuruf,temphuruf2:string;begin//isi kode_peramalanF_main.opensql(ADOQuery1,'select kode_peramalan from tb_penjualan_aktual');ADOQuery1.Last; if ADOQuery1.RecordCount=0 then label8.Caption:='PRL00001' else begin temphuruf:=ADOQuery1.FieldValues['kode_peramalan']; if temphuruf[4]='0' then begin if temphuruf[5]='0' then begin if temphuruf[6]='0' then begin if temphuruf[7]='0' then temphuruf2:=copy(temphuruf,8,1) else temphuruf2:=copy(temphuruf,7,2); end else temphuruf2:=copy(temphuruf,6,3); end else temphuruf2:=copy(temphuruf,5,4); end else temphuruf2:=copy(temphuruf,4,5); tempangka:=strtoint(temphuruf2); tempangka:=tempangka + 1; if length(inttostr(tempangka))=1 then temphuruf:='PRL0000'+inttostr(tempangka) else if length(inttostr(tempangka))=2 then temphuruf:='PRL000'+inttostr(tempangka) else if length(inttostr(tempangka))=3 then temphuruf:='PRL00'+inttostr(tempangka) else if length(inttostr(tempangka))=4 then temphuruf:='PRL0'+inttostr(tempangka) else if length(inttostr(tempangka))=5 then temphuruf:='PRL'+inttostr(tempangka) ; label8.caption:=temphuruf; end;end;procedure TPenj_aktual.BitBtn1Click(Sender: TObject);beginif (combobox1.ItemIndex>=0)and (combobox2.ItemIndex>=0)and (edit1.Text<>'') then begin f_main.OpenSql(ADOQuery2,'select * from q_penjualan_aktual wherenama_produk='+quotedstr(combobox1.Text)+'and info_model='+quotedstr(combobox2.Text)+'andtahun='+edit1.Text); if (ADOQuery2.RecordCount=0) then
Universitas Kristen Petra
119
4.2.10.2. Form Detail Penjualan Aktual
Form ini akan menampilkan semua detail data produk yang telah dipilih
pada form sebelumnya yaitu form penjualan aktual. Pada form ini selain user
dapat mengedit maupun memasukkan data penjualan aktual, form ini juga
secara otomatis akan membuat perhitungan peramalan dengan menggunakan
Trend Line Analysis Model, dimana rumus yang dihasilkan nanti akan
digunakan sebagai standart untuk melakukan perhitungan peramalan yang baru.
Setiap perubahan data yang dilakukan pada masing-masing jenis produk akan
menghasilkan perhitungan, hasil peramalan dan rumus yang berbeda-beda.
begin f_main.ExecuteSql(ADOQuery1,'insert into tb_penjualan_aktual values('+quotedstr(label8.Caption)+','+quotedstr(f_main.SearchField('tb_master_produk','nama_produk',combobox1.Text,'kode_produk'))+','+quotedstr(f_main.SearchField('tb_produk_model','info_model',combobox2.Text,'kode_model'))+','+quotedstr(edit1.Text)+')'); isigrid(); kode_penj(); end else showmessage ('Produk Sudah Ada di database, untuk menambahkan data penjualan klik 2 kali padadata yang terdapat di tabel. Thx ^^'); endelse showmessage ('Harap Mengisi Semua Field');end;
procedure TPenj_aktual.DBGrid1DblClick(Sender: TObject);beginif(combobox1.ItemIndex>=0) thenbegin if ADOQuery2.RecordCount<>0 then begin detail_penjualan.label2.Caption:=ADOQuery2.FieldValues['nama_produk']; detail_penjualan.label4.Caption:=ADOQuery2.FieldValues['info_model']; detail_penjualan.label6.Caption:=ADOQuery2.FieldValues['tahun']; detail_penjualan.label12.Caption:=ADOQuery2.FieldValues['kode_peramalan']; detail_penjualan.Show; Penj_aktual.Enabled:=false; end;end;end;
Universitas Kristen Petra
120
Segmen Program 4.14. Procedure Simpan Hasil Perhitungan Peramalan
procedure Tdetail_penjualan.rumus();varerror1,j,i,jml,error2,rsfe1,rsfe2,abs_err1,abs_err2,kum_abs1,temp,jmlbln,jmlaktual,temp2,temp3,temp4:integer;pangkat,ratabln,rataaktual,ratatkuadrat,a,b,peramalan,mad1,tracking1:real;bulan:string;begin kum_abs1:=0; rsfe1:=0; temp2:=0; jmlbln:=78; ratabln:=78 / 12; f_main.OpenSql(ADOQuery1,'select Sum(jumlah) AS total FROM tb_penjualan_aktual_detailwhere kode_peramalan='+quotedstr(label12.Caption)); jmlaktual:=ADOQuery1.FieldValues['total']; rataaktual:=jmlaktual /12; f_main.OpenSql(ADOQuery1,'select jumlah FROM tb_penjualan_aktual_detail wherekode_peramalan='+quotedstr(label12.Caption)); for i:=1 to 12 do begin temp:=i*ADOQuery1.FieldValues['jumlah']; temp2:=temp2+temp; ADOQuery1.Next end; ratatkuadrat:=650; pangkat:=Power(ratabln,2); b:=(temp2-(12*(ratabln)*(rataaktual)))/((ratatkuadrat)-(12*(pangkat))); a:=rataaktual-(b*(ratabln)); f_main.OpenSql(ADOQuery1,'select * FROM tb_penjualan_aktual_detail wherekode_peramalan='+quotedstr(label12.Caption)); for j:=1 to 12 do begin jml:=ADOQuery1.FieldValues['jumlah']; error2:=ADOQuery1.FieldValues['error']; rsfe2:=ADOQuery1.FieldValues['rsfe']; abs_err2:=ADOQuery1.FieldValues['abs_error']; case j of 1: bulan:='1'; 2: bulan:='2'; 3: bulan:='3'; 4: bulan:='4'; 5: bulan:='5'; 6: bulan:='6'; 7: bulan:='7'; 8: bulan:='8'; 9: bulan:='9'; 10: bulan:='10'; 11: bulan:='11'; 12: bulan:='12'; end; peramalan:=a+(b*j); error1:=jml-round(peramalan);
temp3:=error2+rsfe1; rsfe1:=temp3; abs_err1:=abs(error2);
Universitas Kristen Petra
121
temp4:=abs_err2+kum_abs1; kum_abs1:=temp4; mad1:=kum_abs1/j; if(mad1<>0)then tracking1:=rsfe2/mad1 else tracking1:=0; f_main.ExecuteSql(ADOQuery2,'update tb_penjualan_aktual_detail setperamalan='+quotedstr(floattostr(peramalan))+','+'error='+quotedstr(floattostr(error1))+','+'rsfe='+quotedstr(floattostr(rsfe1))+','+'abs_error='+quotedstr(floattostr(abs_err1))+','+'kum_abs_error='+quotedstr(floattostr(kum_abs1))+','+'mad='+quotedstr(floattostr(mad1))+','+'tracking='+quotedstr(floattostr(tracking1))+'where bulan= '+ bulan +' and kode_peramalan='+quotedstr(label12.Caption)); ADOQuery1.Next; end; label14.Caption:=inttostr(jmlbln); label15.Caption:=inttostr(jmlaktual); label16.Caption:=inttostr(temp2); label17.Caption:=floattostr(ratabln); label18.Caption:=floattostr(rataaktual); label19.Caption:=floattostr(ratatkuadrat); label20.Caption:=floattostr(a); label21.Caption:=floattostr(b); label22.Caption:='Ft='+floattostr(a)+'+'+floattostr(b)+'t'; f_main.ExecuteSql(ADOQuery2,'update tb_penjualan_aktual seta='+quotedstr(floattostr(a))+','+'b='+quotedstr(floattostr(b))+' wherekode_peramalan='+quotedstr(label12.Caption));end;
procedure Tdetail_penjualan.isibulan();vari:integer;bulan:string;begin f_main.OpenSql(ADOQuery1,'select * from tb_penjualan_aktual_detail wherekode_peramalan='+quotedstr(label12.Caption)); if ADOQuery1.RecordCount=0 then begin for i:=0 to 11 do begin case i of 0: bulan:='1'; 1: bulan:='2'; 2: bulan:='3'; 3: bulan:='4'; 4: bulan:='5'; 5: bulan:='6'; 6: bulan:='7'; 7: bulan:='8'; 8: bulan:='9'; 9: bulan:='10'; 10: bulan:='11'; 11: bulan:='12'; end; f_main.ExecuteSql(ADOQuery2,'insert into tb_penjualan_aktual_detailvalues('+quotedstr(label12.Caption)+','+bulan+',''0'',''0'',''0'',''0'',''0'',''0'',''0'',''0'')'); end; end;end;
Universitas Kristen Petra
122
4.2.10.3. Form Peramalan Baru
Form ini berfungsi untuk melakukan peramalan terhadap sebuah produk
berdasarkan rumus yang terlah ada pada database yang berdasarkan hasil
perhitungan dengan data-data penjualan aktual masa lampau dari nama produk
dan jenis produk yang sama.
procedure Tdetail_penjualan.DBGrid1DblClick(Sender: TObject);vara:string;bln:integer;begin bln:=strtoint(ADOQuery2.FieldValues['bulan']); case bln of 1 : a:='Januari'; 2 : a:='Februari'; 3 : a:='Maret'; 4 : a:='April'; 5 : a:='Mei'; 6 : a:='Juni'; 7 : a:='July'; 8 : a:='Agustus'; 9 : a:='September'; 10: a:='Oktober'; 11: a:='Nopember'; 12: a:='Desember'; end; label13.Caption:=a; edit1.Text:=ADOQuery2.FieldValues['jumlah']; edit1.Enabled:=true; edit1.SetFocus; BitBtn4.Enabled:=true;end;
Universitas Kristen Petra
123
Segmen Program 4.15. Procedure Perhitungan Peramalan Baru
4.2.10.4. Form View Peramalan
Form ini berguna membantu user melihat data-data hasil peramalan
terhadap sebuah produk berdasarkan nama produk, jenis model dan tahun
penjualan.
procedure TPeramalan.BitBtn1Click(Sender: TObject);vari:integer; peramalan:real;A,B,bulan:string;beginmemo1.Clear;f_main.OpenSql(ADOQuery1,'select a,b from q_peramalan_baru wherenama_produk='+quotedstr(combobox2.Text)+'and info_model='+quotedstr(combobox3.Text)+'andtahun='+(combobox1.Text));A:=floattostr(ADOQuery1.FieldValues['a']);B:=floattostr(ADOQuery1.FieldValues['b']);memo1.Lines.Add('Perkiraan Jumlah Penjualan');if(combobox1.ItemIndex>=0)and(combobox2.ItemIndex>=0)and(combobox3.ItemIndex>=0)and(combobox4.ItemIndex>=0) then begin for i:=13 to 24 do begin case i of 13: bulan:='Januari'; 14: bulan:='Februari'; 15: bulan:='Maret'; 16: bulan:='April'; 17: bulan:='Mei'; 18: bulan:='Juni'; 19: bulan:='July'; 20: bulan:='Agustus'; 21: bulan:='September'; 22: bulan:='Oktober'; 23: bulan:='Nopember'; 24: bulan:='Desember'; end; peramalan:=round(strtofloat(A)+(strtofloat(B)*i)); memo1.Lines.Add('Untuk Bulan '+bulan+', Tahun '+combobox4.Text+' : '+floattostr(peramalan)+ ' Potong'); end; endelse begin showmessage ('Harap Mengisi Semua Field. Thx^^'); end;end;
Universitas Kristen Petra
124
4.2.11. Implementasi Menu Laporan
Pembuatan laporan pada sistem informasi produksi pada pabrik garment ini
menggunakan Crystal Report 10. Untuk menghasilkan laporan-laporan yang
dibutuhkan digunakan beberapa query untuk menampilkan field-field yang
dibutuhkan. Form ini berfungsi memberikan informasi-informasi yang diperlukan
pemilik perusahaan untuk melakukan observasi terhadap kinerja pabrik miliknya
dalam bentuk laporan-laporan. Laporan-laporan yang tersedia antara lain: laporan
mesin, laporan material, laporan BOM, laporan produk, laporan proyek dan laporan
peramalan. Berikut adalah perintah SQL dan coding program yang dibutuhkan dalam
pembuatan laporan-laporan.
Segmen Program 4.16. Procedure Menampilkan Laporan
Universitas Kristen Petra
125
4.2.12. Implementasi Menu About Creator
Form ini berfungsi memberikan informasi bagi user yang ingin mengetahui
nama dan nrp dari pembuat dari aplikasi ini.
procedure TLaporan.IsiFormula();var vTable : string;beginif CheckBox2.Checked then //jika ada filter begin case ComboBox1.ItemIndex of
4:vTable:='q_projek1'; end;Report1.RecordSelectionFormula:='{' + vTable + '.tgl_produksi} >= cdate("' +DateToStr(TglAwal.Date) +'")'; end;end;
procedure TLaporan.BitBtn1Click(Sender: TObject);var path : string;beginif CheckBox1.Checked or CheckBox2.Checked then begin if combobox1.ItemIndex=0 then path:=DirectoryListBox1.Directory+'\rpt\Mesin.rpt'; if combobox1.ItemIndex=1 then path:=DirectoryListBox1.Directory+'\rpt\Material.rpt'; if combobox1.ItemIndex=2 then path:=DirectoryListBox1.Directory+'\rpt\BOM.rpt'; if combobox1.ItemIndex=3 then path:=DirectoryListBox1.Directory+'\rpt\Produk.rpt'; if combobox1.ItemIndex=4 then path:=DirectoryListBox1.Directory+'\rpt\Projek.rpt'; if combobox1.ItemIndex=5 then path:=DirectoryListBox1.Directory+'\rpt\Peramalan.rpt'; Report1.ConnectTo(Application1.OpenReport(path,1)); //mengisi nama report ke komponenapplication dan ditampung di komponen report isiformula(); ShowReport(Report1,Application1); SetPropertiReport(); end else showmessage ('Harap Memilih Filter');end;
Recommended