BAB 4 PERANCANGAN DAN IMPLEMENTASI
4.1 Perancangan Basisdata Dalam merancangan basisdata pada PT. Ippachi Karya Sukses, digunakanlah tiga tahap utama, yaitu : 1.Perancangan basisdata konseptual 2.Perancangan basisdata logikal 3.Perancangan basisdata fisikal
4.1.1 Perancangan Basisdata Konseptual Perancangan basisdata konseptual merupakan suatu proses pembuatan model menggunakan informasi yang diperoleh oleh perusahaan, terlepas dari semua pertimbangan fisik. Langkah-langkah penting dalam merancang basisdata secara konseptual adalah : 1.Identifikasi tipe entitas 2.Identifikasi tipe relasional 3.Identifikasi dan asosiasi atribut suatu entitas 4.Identifikasi kandidat dan primay key setiap entitas 5.Validasi model konseptual lokal dengan transaksi user
88
89 4.1.1.1 Identifikasi tipe entitas Langkah ini bertujuan untuk mengidentifikasi tipe entitas yang utama yang dibutuhkan.Adapun tipe entitas yang diidentifikasi adalah seperti yang terlihat pada tabel di bawah ini. Nama Entity Supplier
Keterangan Entity Merupakan entitas yang memberikan informasi tentang supplier yang memasok barang ke PT. IKS
Staf
Merupakan entitas yang memberikan informasi tentang staf baik sales, staff, manajer ataupun presiden direktur.
Sales Contract
Merupakan
entitas
yang
berisi
informasi
tentang pemesanan yang dilakukan oleh PT. IKS kepada supplier SC Payment
Merupakan entitas yang berisi tentang jumlah pembayaran yang dilakukan oleh PT. IKS kepada supplier
Bill of Lading
Merupakan entitas yang berisi total produk yang dibeli dari supplier beserta total beratnya
Produk
Merupakan
entitas
yang
berisi
informasi
tentang produk yang didatangkan dan yang akan dijual oleh PT. IKS yaitu sepeda listrik. Customer
Entitas
yang
berisikan
informasi
tentang
konsumen dari PT. IKS Surat Pesanan
Entitas yang berisi informasi pemesanan yang
90 dilakukan oleh konsumen. SP Payment
Entitas yang berisi informasi pembayaran yang dilakukan oleh konsumen kepada PT. IKS
Delivery Order
Merupakan
entitas
yang
berisi
informasi
Penjualan
tentang pengiriman barang dari PT. IKS ke alamat konsumen.
Delivery Order
Merupakan
entitas
yang
berisi
informasi
Pembelian
tentang pengiriman barang dari supplier ke PT IKS
Commercial
Merupakan entitas yang berisi produk-produk
Invoice
beserta jumlah dan harga yang dibeli oleh PT IKS dari supplier
Packing List
Entitas yang berisi berat beserta ukuran keseluruhan dari produk yang dibeli dari supplier
Tabel 4.1 Identifikasi Tipe Entitas
4.1.1.2 Identifikasi Tipe Relasional Tujuan dari tahapan ini adalah untuk menentukan hubunganhubungan penting yang ada antara jenis entitas yang telah di identifikasikan. Langkah-langkah penting dalam identifikasi tipe rasional adalah : 1. Menentukan ER Diagram (gambar 4.1) 2. Menentukan pembatas multiplicity dari tipe relasional (table 4.2)
91 Hubungan antara semua entity-entity dapat dilihat pada diagram berikut ini: B ill o f L a d in g 1 ..1
d is e r ta i 1 ..1
P a c k in g L is t
C o m m e rc ia l In v o ic e
d is e rta i 1 ..1
1 ..1
S a le s C o n tra c t
m e m ilik i 1 ..1
1 ..1 1 ..1
1 ..1
b e rd a sa rka n
m e m ilik i
1 ..1
D ib e rik a n k e
1 ..1
D e liv e ry O rd e r P e m b e lia n
1 ..1
0 ..*
m em buat
S u p p lie r
S C Paym ent
0 ..*
0 ..*
0 ..*
0 ..* D ik ir im k e m e la k u k a n
m enam bah
1 ..*
1 ..1
m e n g u ra n g i
1 ..* 0 ..*
P ro d u k
S ta f M e m e r ik s a
1 ..1
1 ..* 1 ..* 1 ..1
D ib e rik a n k e
0 ..*
SP P aym ent
S u ra t P e s a n a n 1 ..1
1 ..1
b e rd a sa rka n
0 ..*
0 ..*
1 ..1
m e m ilik i
m e la k u k a n m em buat 1 ..1
C u s to m e r
1 ..1
0 ..* 1 ..*
D ik irim k e
Gambar 4.1 Diagram ER
0 ..*
1 ..1
D e liv e ry O rd e r P e n ju a la n
92 Tipe relationship adalah hubungan antara semua tipe entity yang telah di identifikasi dari analisa kebutuhan. Hubungan antara semua entity yang telah di identifikasikan sebelumnya dapat dilihat pada tabel sebagai berikut: Entity name
Staf
Mul
Relationship
Entity name
Mul
tipli
tipli
city
city
1..1
Membuat
Sales Contract
0..*
1..1
Melakukan
SC Payment
0..*
1..1
Memeriksa
Produk
0..*
1..1
Membuat
Surat Pesanan
0..*
1..1
Melakukan
SP Payment
0..*
0..*
Diberikan ke
Supplier
1..1
1..1
Memiliki
Commercial Invoice
1..1
SC Payment
1..1
Berdasarkan
Sales Contract
1..1
Surat Pesanan
0..*
Diberikan ke
Staf
1..1
1..1
Memiliki
Delivery Order
1..1
Customer
Sales Contract
Penjualan SP Payment
1..1
Berdasarkan
Surat Pesanan
1..1
Commercial
1..1
Disertai
Packing List
1..1
0..*
Dikirim ke
Customer
1..*
Invoice Delivery Order
93
Packing List
1..1
Disertai
Bill of Lading
1..1
Bill of Lading
1..1
Memiliki
Delivery Order
1..1
Pembelian Delivery Order
0..*
Menambah
Produk
1..*
0..*
Dikirim ke
Staf
1..*
Pembelian
Tabel 4.2 Multiplicity Tipe Relasional
4.1.1.3
Identifikasi dan Asosiasi Atribut suatu Entitas Tujuan dari tahapan ini adalah untuk mengidentifikasikan dan
mengasosiasikan atribut dari entitas atau tipe relasi. a. Staf NIP, Nama_staf, posisi, Alamat, Telepon, Handphone, sex, komisi, bonus, gaji_pokok, tgl_mulai_kerja. b. Supplier Id_supplier, Nama_supplier, Alamat, Telp, Fax, E-mail c. Produk Id_produk, Nama_produk, Satuan, Warna, Harga_satuanm Stok d. Customer Id_customer, Nama_customer, Alamat, Telp, Handphone, Fax
94 e. Packing List No_PL, Tgl_PL, No_SC, No_CI, Keterangan_produk f. Commercial Invoice No_CI, Tgl_CI, Id_produk, Rincian_produk,
Quan, Harga_Satuan,
Jumlah, Total g. Surat Pesanan No_SP, Tgl_SP, Nama_customer, Alamat, Telp, Id_produk,
Warna,
Quantity, Perlengkapan_tambahan, Harga Satuan, Total, Uang_Muka, Sisa h. Bill of Lading No_BL, Tgl_BL, Keterangan_produk i. Sales Contract No_SC, Tgl_SC, Id_produk, Quan, Harga_Satuan, Jumlah, Total j. Delivery Order Pembelian Tgl,
No_pengiriman,
No_SC,
Id_produk,
Nama_produk,
Quan,
Id_produk,
Nama_produk,
Quan,
harga_satuan, Jumlah, Total k. Delivery Order Penjualan Tgl,
No_pengiriman,
No_SP,
harga_satuan, Jumlah, Total l. SC Payment Tgl, No_SCPayment, No_pengiriman, NIP, Jumlah m. SP Payment Tgl, No_SPPayment, Id_customer, Nama_customer, Jumlah Berikut ini merupakan tabel dari mengidentifikasikan dan mengasosiasikan atribut dari entitas atau tipe relasi.
95
Entity Name
Atribute
Description
Data Type
Nulls
& Lenght Staf
NIP
Secara unik
5 variabel
mengidentifi
karakter
Multiva lue
Tidak
Tidak
Tidak
Tidak
Tidak
Tidak
Tidak
Tidak
kasi staf
Nama_staf
Nama Staf
30 variabel karakter
Posisi
Posisi atau
15 variabel
jabatan yang
karakter
dimiliki Alamat
Alamat
50 variabel
tempat
karakter
tinggal staf Telepon
No telp staf
numerik
Tidak
Ya
Handphone
No
numerik
Ya
Ya
1 variabel
Tidak
Tidak
Ya
Tidak
handphone staf Sex
Jenis kelamin staf
karakter (P/W)
Komisi
Komisi staf
numerik
96 Bonus
Bonus staf
numerik
Ya
Tidak
Gaji_pokok
Gaji awal
numerik
Tidak
Tidak
tanggal
Tidak
Tidak
Mengidentifi
5 variabel
Tidak
Tidak
kasi supplier
karakter
Nama_Suppl
30 variabel
Tidak
Tidak
Tidak
Tidak
staf Tgl_mulai_kerja
Tanggal mulai kerja staff
Supplier
Id_supplier
Nama_supplier
ier Alamat
Telp
karakter
Alamat
50 variabel
supplier
karakter
No telpon
numerik
Tidak
Ya
numerik
Tidak
Ya
20 variabel
Tidak
Tidak
Tidak
Tidak
Tidak
Tidak
Ya
Tidak
supplier Fax
No Fax supplier
E-mail
Produk
Id_produk
Nama_produk
Alamat email supplier
karakter
Mengidentifi
7 variabel
kasi produk
karakter
Nama_produ
20 variabel
k Satuan
Satuan
karakter 7 variabel
97
Warna
barang
karakter
Warna
10 variabel
Tidak
Ya
numerik
Tidak
Tidak
numerik
Tidak
Tidak
5 variabel
Tidak
Tidak
Tidak
Tidak
Tidak
Tidak
karakter Harga_satuan
Harga dari produk
Stok
Stok dari produk
Customer
Id_customer
Mengidentifi kasi
karakter
customer Nama_customer
Nama_custo mer
Alamat
Telp
Alamat
15 variabel karakter 30 variabel
customer
karakter
No telpon
numerik
Tidak
Ya
numerik
Ya
Ya
numerik
Tidak
Ya
numerik
Tidak
Tidak
customer Handphone
No telpon seluler customer
Fax
No fax customer
Packing List
No_PL
Nomor surat packing list
98 Tgl_PL
Tanggal
tanggal
Tidak
Tidak
numerik
Tidak
Tidak
numerik
Tidak
Tidak
50 variabel
Tidak
Tidak
numerik
Tidak
Tidak
Tanggal
Tidak
Tidak
Kode produk
8 variabel
Tidak
Tidak
yang dikirim
karakter Tidak
Tidak
Tidak
Tidak
packing list No_SC
Nomor Sales Contract
No_CI
Nomor Commercial Invoice
Keterangan_produk
Deskripsi produk yang
karakter
dikirim Commercia
No_CI
Nomor commercial
l Invoice
invoice Tgl_CI
Tanggal invoice dibuat
Id_Produk
Rincian_Produk
Deskripsi dan perincian
30 variabel karakter
dari produk Quan
Banyaknya produk
numerik
99 Harga_satuan
Harga satuan
numerik
Tidak
Tidak
Numerik
Tidak
Tidak
Numerik
Tidak
Tidak
numerik
Tidak
Tidak
Tanggal
Tidak
Tidak
15 variabel
Tidak
Tidak
Tidak
Tidak
produk Jumlah
Jumlah produk
Total
Total harga yang dipesan
Surat
No_SP
Nomor surat pesanan
Pesanan Tgl_SP
Tanggal surat pesanan dibikin
Nama_customer
Nama Customer
Alamat
Telp
Alamat
karakter 30 variabel
customer
karakter
Nomor
Numerik
Tidak
Ya
Kode produk
7 variabel
Tidak
Tidak
yang dipesan
karakter
Tidak
Tidak
telepon customer Id_produk
customer Warna
Warna produk yang
10 variabel karakter
100 dipesan Quan
Banyaknya
Numerik
Tidak
Tidak
20 variabel
Ya
Tidak
Numerik
Tidak
Tidak
Numerik
Tidak
Tidak
Numerik
Tidak
Tidak
Numerik
Ya
Tidak
numerik
Tidak
Tidak
Tanggal
Tidak
Tidak
barang yang dipesan Perlengkapan_tambaha
Barang lain
n
seperti
karakter
sparepart yang dipesan Harga_satuan
Harga satuan barang
Total
Total harga pesanan
Uang_muka
Uang muka yang dibayar customer
Sisa
Sisa uang yang harus dibayar
Bill of
No_BL
Nomor bill of lading
Lading Tgl_BL
Tanggal pembuatan bill of lading
101 Keterangan_produk
Keterngan produk yang
50 variabel
tidak
Tidak
Numerik
Tidak
tidak
Tanggal
Tidak
Tidak
7 variabel
Tidak
Tidak
Numerik
Tidak
Tidak
Numerik
Tidak
Tidak
Numerik
Tidak
Tidak
Numerik
Tidak
Tidak
Tanggal
Tidak
Tidak
Numerik
Tidak
Tidak
karakter
dikirim Sales
No_SC
Nomor sales contract
Contract Tgl_SC
Tanggal sales contract dibuat
Id_produk
Kode produk
karakter Quan
Banyaknya barang
Harga_satuan
Harga satuan produk
Jumlah
Banyaknya barang yang dipesan
Total
Total harga barang yang dipesan
Delivery
Tgl
pembelian
Order Pembelian
Tanggal DO
No_pengiriman
Nomor
102 pengiriman No_SC
Nomor SC
Numerik
Tidak
Tidak
Id_produk
Kode produk
7 variabel
Tidak
Tidak
yang dipesan
karakter
Nama_produ
20 variabel
Tidak
Tidak
Numerik
Tidak
Tidak
Numerik
Tidak
Tidak
Numerik
Tidak
Tidak
Nama_produk
k yang
karakter
dipesan Quan
Banyaknya produk yang dipesan
Harga_satuan
Harga satuan barang
Jumlah
Jumlah barang yang dipesan
Delivery
Total
Total harga
Numerik
Tidak
Tidak
Tgl
Tanggal DO
Tanggal
Tidak
Tidak
Numerik
Tidak
Tidak
dibuat
Order Penjualan
No_pengiriman
Nomor pengiriman
No_SP
Nomor surat
Numerik
Tidak
Tidak
Id_produk
Kode produk
7 variabel
Tidak
Tidak
karakter
103 Nama_produk
Quan
Nama_produ
20 variabel
Tidak
Tidak
k
karakter
Jumlah
Numerik
Tidak
Tidak
Numerik
Tidak
Tidak
Numerik
Tidak
Tidak
barang yang dipesan Harga_satuan
Harga satuan barang
Jumlah
Jumlah barang yang dipesan
SC
Total
Total harga
Numerik
Tidak
Tidak
Tgl
Tanggal
Tanggal
Tidak
Tidak
dibuat
Payment No_SCPayment
Nomor surat
Numerik
Tidak
Tidak
No_pengiriman
Nomor surat
Numerik
Tidak
Tidak
5 variabel
Tidak
Tidak
Numerik
Tidak
Tidak
Tanggal
Tidak
Tidak
pengiriman NIP
Nomor induk staff
Jumlah SP
Tgl
Tanggal
karakter
dibuat
Payment No_SPPayment
Nomor surat
Numerik
Tidak
Tidak
Id_customer
Mengidentifi
5 variabel
Tidak
Tidak
104 kasi
karakter
customer Nama_customer
Nama
15 variabel
Customer Jumlah
Tidak
Tidak
Tidak
Tidak
karakter Numerik
Tabel 4.3 Identifikasi dan Asosiasi Atribut suatu Entitas
4.1.1.4 Identifikasi kandidat dan primay key setiap entitas Tahapan ini bertujuan untuk mengidentifikasi kandidat key dan primary key dari field-field pada setiap tabel.
Entity
Kandidat Key
Primary Key
Staff
NIP
NIP
Supplier
Id_Supplier
Id_Supplier
Produk
Id_Produk
Id_Produk
Customer
Id_Customer
Id_Customer
Packing List
No_PL, No_CI, No_SC
No_PL
Commercial Invoice
No_CI
No_CI
Surat Pesanan
No_SP
No_SP
Bill of Lading
No_BL
No_BL
Sales Contract
No_SC, Id_Produk
No_SC
Delivery
Order No_Pengiriman,
No_Pengiriman
105 Pembelian Delivery
No_SC, Id_Produk Order No_Pengiriman,
Penjualan
No_SP, Id_Produk
SC Payment
No_SCPayment,
No_Pengiriman
No_SCPayment
No_Penerimaan, NIP SP Payment
No_SPPayment,
No_SCPayment
Id_Customer
Tabel 4.4 Kandidat dan Primary key setiap entitas
106 Berikut ini adalah diagram menentukan primary key dari entity-entity yang ada:
Gambar 4.2 Diagram ERD Konseptual dengan primary key
4.1.1.5 Validasi model konseptual lokal dengan transaksi user Tahapan ini bertujuan untuk memastikan model konseptual lokal untuk mendukung transaksi yang dibutuhkan oleh transaksi user. Dalam hal ini digunakan jalur arah transaksi (pathways) yang digambarkan dalam diagram ER untuk memeriksa model konseptual lokal untuk mendukung transaksi. Model Konseptual
107 Lokal
dengan
transaksi
user
dapat
dilihat
pada
diagram
berikut
Gambar 4.3 Model Konseptual Lokal dengan Transaksi User
ini:
108 Dari model konseptual lokal dengan Transaksi user di atas, didapat deskripsi transaksi-transaksi sebagai berikut: (a) Menampilkan order pembelian yang ada (b) Mengidentifikasi Sales Contract (c) Mengidentifikasi pembayaran (d) Mengidentifikasi pembayaran pembelian (e) Mengidentifikasi produk yang di order (f) Mengidentifikasi commercial invoice (g) Mengidentifikasi Packing List (h) Mengidentifikasi Bill of Lading (i) Menambah produk (j) Menampilkan staf (k) Menampilkan pesanan/order penjualan yang ada (l) Menampilkan Surat Pesanan (m) Menampikan produk yang akan dikirim ke pelanggan (n) Input pembayaran (o) Mengidentifikasi pembayaran penjualan (p) Menampilkan pelanggan (q) Mengurangi produk (r) Menampilkan stok produk
109 4.1.2 Perancangan Basisdata Logikal Perancangan basis data logikal merupakan suatu proses membangun sebuah model informasi yang digunakan dalam sebuah perusahaan berdasarkan pada sebuah model data khusus, tetapi bebas dari DBMS tertentu dan pertimbangan fisik lainnya. Tahapan utama dalam fase ini adalah membangun suatu model data logikal lokal dari sebuah model data konseptual lokal yang merepresentasikan view tertentu dari perusahaan dan kemudian memvalidasi model ini untuk meyakinkan bahwa model tersebut secara struktural benar dan model tersebut mendukung semua transaksi yang dibutuhkan. Sehingga pada akhir tahap ini akan dihasilkan hanya satu model data logikal lokal yang sekaligus menjadi model data logikal global. Adapun langkahlangkah dalam merancang basis data logikal yaitu : 1.Menghilangkan feature yang tidak kompatibel dengan model relasional. 2.Membuat relasi untuk model data logikal lokal. 3.Memvalidasi relasi menggunakan teknik normalisasi. 4.Mendefinisikan batasan integritas (integrity constraints).
4.1.2.1 Menghilangkan feature tidak kompatibel dengan model relasional Tujuan dari langkah ini adalah untuk memperhalus model data konseptual lokal dengan menghilangkan feature yang tidak kompatibel dengan model relasional. Adapun cara yang digunakan dalam tahapan ini untuk menghilangkan feature tidak kompatibel dengan model relasional adalah dengan menghilangkan hubungan many-to-many (*:*) binary relationship
110 types. Hasil dari langkah ini secara keseluruhan dapat dilihat pada gambar diagram ER sebagai berikut: 1.
Menghilangkan many-to-many binary relationship Pada langkah ini, relationship *:* diganti dengan dua relationship oneto-many (1:*) ke sebuah entity baru. Adapun relationship *:* yang perlu dihilangkan yaitu :
a) Hubungan Delivery Order Pembelian dengan Produk
(a)
(b) Keterangan: a. Kondisi awal b. Kondisi akhir
b)
Hubungan antara Delivery Order Penjualan dengan Produk
(a)
111
(b) Gambar 4.4 Membuang Relasi many to many
2. Menghilangkan atribut multi-valued Atribut multi-valued memegang banyak nilai untuk sebuah entity. Oleh sebab itu, pada langkah ini kita menghilangkan atribut multi-valued ini dengan mengidentifikasikan sebuah entity baru dimana atribut tersebut direpresentasikan sebagai sebuah atribut tunggal (primary key) dan sebuah relationship 1:* dibuat. Adapun atribut multi-valued yang dihilangkan yaitu: a) Atribut telepon dan handphone pada entity Staf
Gambar 4.5 Atribut multi-valued pada entity Staf
112
a) Entity Staf dengan atribut multi-valued Telepon dan Handphone
b) Membuat
entity
baru
dengan
nama
Telepon_staf
dan
memindahkan atribut Telepon ke entity Telepon_staf dengan Telepon sebagai primary key dan relationship 1:* dengan nama memiliki
c) Membuat entity baru dengan nama Handphone_staf dan memindahkan atribut Handphone ke entity Handphone_staf
113 dengan Handphone sebagai primary key dan relationship 0:* dengan nama memiliki
b) Atribut telepon dan fax pada entity Supplier
Gambar 4.6 Atribut multi-valued pada entity Supplier
a) Entity Supplier dengan atribut multi-valued Telepon dan Fax
b) Membuat entity baru dengan nama Telp_supplier dan memindahkan atribut Telp ke entity Telp_supplier dengan Telp sebagai primary key dan relationship 1:* dengan nama memiliki
114 c) Membuat entity baru dengan nama Fax_supplier dan memindahkan atribut Fax ke entity Fax_supplier dengan Fax sebagai primary key dan relationship 1:* dengan nama memiliki c) Atribut telepon, handphone dan fax pada entity Customer
Gambar 4.7 Atribut multi-valued pada entity Customer
a) Entity Supplier dengan atribut multi-valued Telp, Handphone dan Fax
b) Membuat entity baru dengan nama Telp_customer dan memindahkan atribut Telp ke entity Telp_customer dengan Telp sebagai primary key dan relationship 1:* dengan nama memiliki
115
c) Membuat entity baru dengan nama Handphone_customer dan memindahkan atribut Handphone ke entity Handphone_customer dengan Handphone sebagai primary key dan relationship 0:* dengan nama memiliki
d) Membuat entity baru dengan nama Fax_customer dan memindahkan atribut Fax ke entity Fax_customer dengan Fax sebagai primary key dan relationship 0:* dengan nama memiliki
4.1.2.2 Membuat relasi untuk model data logikal lokal Langkah ini bertujuan untuk menciptakan relasi bagi model data logikal lokal untuk merepresentasikan entity, relationship dan atribut yang telah diidentifikasikan. Adapun langkah-langkah dalam membuat relasi dari struktur yang mungkin dalam model data antara lain: 1. Strong entity types Untuk setiap strong entity dalam model data, ciptakan sebuah tabel yang mencakup semua atribut dari entity tersebut. Adapun tabel yang dihasilkan dari strong entity yaitu :
116 a) Staf (NIP, Nama_staf, posisi, Alamat, sex, komisi, bonus, gaji_pokok, tgl_mulai_kerja) Primary Key NIP
b) Supplier (Id_supplier, Nama_supplier, Alamat, E-mail) Primary Key Id_supplier c) Customer (Id_customer, Nama_customer, Alamat) Primary Key Id_customer d) Produk
(Id_produk,
Nama_produk,
Satuan,
Warna,
Harga_satuan, Stok) Primary Key Id_produk e) Packing
List
(No_PL,
Tgl_PL,
No_CI,
No_SC,
Keterangan_produk) Primary Key No_PL Foreign Key No_CI references Commercial Invoice (No_CI) Foreign Key No_SC references Sales Contract (No_SC) f) Commercial
Invoice
(No_CI,
Tgl_CI,
Id_produk,
Rincian_produk, Quan, Harga_Satuan, Jumlah, Total) Primary Key No_CI Foreign Key Id_produk references Produk (Id_produk) g) Surat Pesanan (No_SP, Tgl_SP, Nama_customer, Alamat, Telp, Id_produk, Warna, Quantity, Perlengkapan_tambahan, Harga Satuan, Total, Uang_Muka, Sisa) Primary Key No_SP
117 Foreign Key Id_produk references Produk (Id_produk)
h) Bill of Lading (No_BL, Tgl_BL, Keterangan_produk) Primary Key No_BL i) Sales
Contract
(No_SC,
Tgl_SC,
Id_produk,
Quan,
Harga_Satuan, Jumlah, Total) Primary Key No_SC Foreign Key Id_produk references Produk (Id_produk) j) Delivery order pembelian (Tgl, No_pengiriman, No_SC, Id_produk, Nama_produk, Quan, harga_satuan, Jumlah, Total) Primary Key No_pengiriman Foreign Key No_SC references Sales Contract (No_SC) Foreign Key Id_produk references Produk (Id_produk) k) Delivery order penjualan (Tgl, No_pengiriman, No_SP, Id_produk, Nama_produk, Quan, harga_satuan, Jumlah, Total Primary Key No_pengiriman Foreign Key No_SP references Surat Pesanan (No_SP) Foreign Key Id_produk references Produk (Id_produk) i) SP_payment
(Tgl,
No_SPPayment,
No_pengiriman,
Id_customer, Nama_customer, Jumlah) Primary Key No_SPPPayment Foreign Key Id_customer references Customer (Id_customer)
118 Foreign Key No_pengiriman references Delivery Order Penjualan (No_pengiriman)
j) SC_payment (Tgl, No_SCPayment, No_pengiriman, NIP, Jumlah) Primary Key No_SCPayment Foreign Key No_pengiriman references Delivery Order Pembelian (No_pengiriman) Foreign Key NIP references Staf (NIP) k) Telepon_staf (Telepon) Primary Key Telepon l) Handphone_staf (Handphone) Primary Key Handphone m) Telp_supplier (Telp) Primary Key Telp n) Fax_supplier (Fax) Primary Key Fax o) Telp_customer (Telp) Primary Key Telp p) Handphone_customer (Handphone) Primary Key Handphone q) Fax_customer (Fax) Primary Key Fax
119
2. Week entity types Untuk setiap weak entity dalam model data, ciptakan sebuah tabel yang mencakup semua atribut dari entity tersebut. Adapun tabel yang dihasilkan dari weak entity yaitu : a) Delivery
Order
Pembelian
detil
(No_pengiriman,
Id_produk, satuan, harga_satuan, quan, jumlah) Primary Key No_pengiriman, Id_produk Foreign Key No_pengiriman reference Delivery Order Pembelian(No_pengiriman) Foreign Key Id_produk reference Produk(Id_produk) b) Delivery Order Penjualan detil (No_pengiriman, Id_produk, satuan, harga_satuan, quan, jumlah) Primary Key No_pengiriman, Id_produk Foreign Key No_pengiriman reference Delivery Order Penjualan(No_pengiriman) Foreign Key Id_produk reference Produk (Id_produk) 3. Tipe relasi biner one-to-many (1:*) Untuk setiap relationship biner 1:*, entity pada ‘sisi satu’ dari relationship dianggap sebagai entity induk dan entity pada ‘sisi banyak’ dianggap sebagai entity anak. Untuk merepresentasikan relationship, kita mengirim copy-an atribut primary key dari entity
120 induk ke dalam tabel yang merepresentasikan entity anak, untuk bertindak sebagai foreign key. Adapun relationship 1:* yang terlibat yaitu : a). Staf memiliki Telepon_staf Gambar 4.8 Relationship 1:* Staf Memiliki Telepon_staf
b). Staf memiliki Handphone_staf Gambar 4.9 Relationship 1:* Staf Memiliki Handphone_staf
121 c). Supplier memiliki Telp_supplier Gambar 4.10 Relationship 1:* Supplier Memiliki Telp_supplier
d). Supplier memiliki Fax_supplier Gambar 4.11 Relationship 1:* Supplier memiliki Fax_supplier
e). Customer memiliki Telp_customer Gambar 4.12 Relationship 1:* Customer memiliki Telp_customer
122 f). Customer memiliki Fax_customer Gambar 4.13 Relationship 1:* Customer memiliki Fax_customer
g). Customer memiliki Handphone_customer Gambar 4.14 Relationship 1:* Customer memiliki Handphone_customer
h). Staf melakukan SC Payment Gambar 4.15 Relationship 1:* Staf melakukan SC Payment
123
i). Customer melakukan SP Payment Gambar 4.16 Relationship 1:* Customer melakukan SP Payment
4. Tipe relasi biner many-to-many (*:*) Untuk setiap relasi biner many-to-many membuat sebuah hubungan untuk mewakili relasi tersebut dan meliputi atribut-atribut yang merupakan bagian dari relasi tersebut. Adapun relasi *:* yang terlibat, antara lain: a). Relasional antara Delivery Order Pembelian dengan Produk Gambar 4.17 Relationship *:* antara Delivery Order Pembelian dengan produk
124
b) Relasional antara Delivery Order Penjualan dengan Produk
Gambar 4.18 Relationship *:* antara Delivery Order Penjualan dengan Produk
4.1.2.3 Menvalidasi relasi menggunakan teknik normalisasi Tujuan dari langkah ini adalah untuk memvalidasi relasi-relasi dalam model data logikal lokal menggunakan teknik normalisasi. Teknik normalisasi bertujuan untuk menghasilkan model data yang konsisten, dan memiliki minimal redundansi (pengulangan data yang tidak perlu) dan maksimum stabilitas. Proses normalisasi dimulai dengan
menentukan functional
dependency antar atribut dalam suatu relasi. Sistemnya telah berada pada kondisi normalisasi pertama karena telah ditentukan primary key dan sistem telah dihilangkan attribute multi value. Jadi kita mulai pada tahap 2NF atau
125 normalisasi yang ke dua. Untuk 2NF menghilangkan partial depedency dan pada 3NF menghilangkan transitif depedency. Proses normalisasi adalah sebagai berikut: Gambar 4.19 Validasi Relasi dengan Normalisasi Staf NIP Nama_staf posisi alamat sex komisi bonus gaji_pokok Tgl_mulai_kerja
(primary key)
126 Supplier
Id_supplier
(primary key)
Nama_supplier Alamat e-mail
Produk Id_produk Nama_produk Satuan Warna Harga_satuan
Customer Id_customer Nama_customer Alamat
(primary key)
127 Packing List No_PL
(primary key)
Tgl_PL No_SC No_CI Keterangan_produk
Commercial Invoice No_CI Tgl_CI Id_produk Rincian_produk Quan Harga_satuan Jumlah Total
(primary key)
128 Surat Pesanan (primary key)
No_SP Tgl_SP Nama_customer Alamat Telp Id_produk Warna Quantity Perlengkapan_tambahan Harga_satuan Total Uang_muka Sisa
Relasi yang terbentuk: Surat Pesanan (@No_SP, Tgl_SP, No_customer, Alamat, Telp, Perlengkapan_tambahan, Total, Uang_muka, sisa) Produk (@Id_produk, Warna, , Harga Satuan)
129
Bill of Lading No_BL
(primary key)
Tgl_BL Keterangan_produk
Sales Contract No_SC Tgl_SC Id_produk Quan Harga_satuan Jumlah Total
(primary key)
130 Delivery Order Pembelian (primary key) Tgl No_pengiriman No_SC Id_produk Nama_produk Quan Harga_satuan Jumlah Total
Relasi yang terbentuk adalah: Delivery Order Pembelian ( @No_pengiriman, Tgl. No_SC, Jumlah, Total) Id_produk (@Id_produk, Nama_produk, Quan, Harga_satuan)
131
Delivery Order Penjualan (primary key) Tgl No_pengiriman No_SP Id_produk Nama_produk Quan Harga_satuan Jumlah Total
Relasi yang terbentuk adalah: Delivery Order Penjualan ( @No_pengiriman, Tgl. No_SP, Jumlah, Total) Id_produk (@Id_produk, Nama_produk, Quan, Harga_satuan)
132
SC Payment (primary key)
Tgl No_SCPayment No_pengiriman NIP jumlah
SP Payment (primary key)
Tgl No_SPPayment No_pengiriman Id_customer Nama_customer jumlah
Relasi yang terbentuk adalah: SP Payment (@No_SPPayment, Tgl, No_pengiriman, jumlah) Customer (@Id_customer, Nama_customer)
133
Telepon_staf Telepon
(primary key)
NIP
Handphone_staf Handphone
(primary key)
NIP
Telp_supplier (primary key)
Telp Id_supplier
Fax_supplier (primary key)
Fax Id_supplier
Telp_customer Telp Id_customer
(primary key)
134
Handphone_customer (primary key)
Handphone Id_customer
Fax_customer (primary key)
Fax Id_customer
Berdasarkan functional dependency antar atribut dalam suatu relasi tersebut, dapat dilihat bahwa ternyata semua atribut nonprimary key dalam suatu relasi tergantung sepenuhnya pada atribut primary key dari relasi tersebut. Penentuan primary key untuk setiap relasi sudah dilakukan pada tahap sebelumnya, sehingga secara otomatis di dalam setiap relasi sudah tidak ada lagi repeating group yang berarti setiap relasi sudah memenuhi 1NF. Di dalam setiap relasi juga tidak terdapat atribut non-primary key yang tergantung pada salah satu atribut primary key (partial dependency), sehingga setiap relasi berarti sudah memenuhi 2NF. Juga tidak ditemukan adanya atribut non-primary key dalam suatu relasi yang tergantung pada atribut non-primary key yang lain dalam relasi tersebut (transitive dependency). Hal ini berarti bahwa setiap relasi juga sudah memenuhi 3NF. Dengan menentukan functional dependency
135 dari setiap relasi, maka dapat diketahui bahwa semua relasi tersebut sudah normal dan tidak perlu dilakukan normalisasi lagi.
4.1.2.4 Mendefinisikan batasan integritas (integrity constraints) Tujuan dari langkah ini adalah untuk menentukan batasan integritas yang dapat melindungi basis data dari ketidakkonsistenan. Ada lima batasan integritas yang didefinisikan yaitu : 1. Required data Beberapa atribut harus selalu mengandung sebuah nilai yang valid atau dengan kata lain, atribut-atribut ini tidak diperkenankan untuk mengandung nilai null. Batasan ini sudah diidentifikasikan dalam tahap 4.1.1.3. 2. Attribute domain constraints Setiap atribut mempunyai sebuah domain, yang merupakan serangkaian nilai yang legal atau sah. Batasan ini juga sudah diidentifikasikan ketika memilih domain atribut untuk model data pada tahap 4.1.1.3.
3. Entity integrity Primary key dari sebuah entity tidak boleh null. Batasan ini juga sudah dipertimbangkan ketika mengidentifikasikan primary key untuk setiap entity type yang dilakukan pada tahap 4.1.1.4.
136 4. Referential integrity Jika sebuah foreign key mengandung sebuah nilai, maka nilai tersebut harus mengacu pada suatu baris (tuple) yang ada dalam relasi induknya. Adapun referential integrity constraints untuk relasi-relasi yang telah diciptakan sebelumnya adalah seperti terlihat pada tabel berikut ini. Tabel 4.5 Tabel Menentukan Integrity Constraint Staf (NIP, Nama_staf, posisi, alamat, sex, komisi, bonus, gaji_pokok, tgl_mulai_kerja) Primary Key NIP Supplier (Id_supplier, Nama_supplier, Alamat, E-mail Primary Key Id_supplier Produk (Id_produk, Nama_produk, Satuan, Warna, Harga_satuan, Stok) Primary Key Id_produk Customer (Id_customer, Nama_customer, alamat Primary Key Id_customer Packing List (No_PL, Tgl_PL, No_SC, No_CI, Keterangan_produk) Primary Key No_PL Foreign Key No_SC references Sales Contract(No_SC) on update cascade on delete no action Foreign Key No_CI references Commercial Invoice(No_CI) on update
137 cascade on delete no action Commercial Invoice (No_CI, Tgl_CI, Id_produk, Rincian_produk, Quan, Harga_satuan, Jumlah, Total) Primary Key No_CI Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action Surat Pesanan (No_SP, Tgl_SP, Nama_customer, Alamat, Telp, Id_produk, Warna, Quan, Perlengkapan_tambahan, Harga_satuan, Total, Uang_muka, Sisa Primary Key No_SP Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action Bill of Lading (No_BL, Tgl_BL, Keterangan_produk) Primary Key No_BL Sales Contract (No_SC, Tgl_SC, Id_produk, Quan, Harga_satuan, Jumlah, Total) Primary Key No_SC Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action Delivery Order Pembelian (No_pengiriman, Tgl, No_SC, Id_produk,
138 Nama_produk, Quan, harga_satuan, jumlah, total) Primary Key No_pengiriman Foreign Key No_SC references Sales Contract(No_SC) on update cascade on delete no action Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action Delivery Order Penjualan (No_pengiriman, Tgl, No_SP, Id_produk, Nama_produk, Quan, Harga_satuan, jumlah, total Primary Key No_pengiriman Foreign Key No_SP references Surat Pesanan(No_SP) on update cascade on delete no action Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action SC Payment (No_SCPayment, Tgl, No_pengiriman, NIP, jumlah Primary Key No_SCPayment Foreign
Key
No_pengiriman
references
Delivery
Order
Pembelian(No_pengiriman) on update cascade on delete no action Foreign Key NIP references Staf(NIP) on update cascade on delete no action SP Payment (No_SPPayment, Tgl, Id_customer, Nama_customer, jumlah
139 Primary Key No_SPPayment Foreign Key Id_customer references Customer(Id_customer) on update cascade on delete no action Telepon_staf (Telepon, NIP) Primary Key Telepon Foreign Key NIP references Staf(NIP) on update cascade on delete no action Handphone_staf (Handphone, NIP) Primary Key Handphone Foreign Key NIP references Staf(NIP) on update cascade on delete no action Telp_supplier (Telp, Id_supplier) Primary Key Telp Foreign Key Id_supplier references Supplier(Id_supplier) on update cascade on delete no action Fax_supplier (Fax, Id_supplier) Primary Key Fax Foreign Key Id_supplier references Supplier(Id_supplier) on update cascade on delete no action Telp_customer (Telp, Id_customer)
140 Primary Key Telp Foreign Key Id_customer references Customer(Id_customer) on update cascade on delete no action Handphone_customer (Handphone, Id_customer) Primary Key Handphone Foreign Key Id_customer references Customer(Id_customer) on update cascade on delete no action Fax_customer (Fax, Id_customer) Primary Key Fax Foreign Key Id_customer references Customer(Id_customer) on update cascade on delete no action Delivery Order Penjualan detil (No_pengiriman, Id_produk, Satuan, Harga_satuan, Quan, Jumlah) Primary Key No_pengiriman, Id_produk Foreign
Key
No_pengiriman
references
Delivery
Order
Penjualan(No_pengiriman) on update cascade on delete no action Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action Delivery Order Pembelian detil (No_pengiriman, Id_produk, Satuan, Harga_satuan, Quan, Jumlah)
141 Primary Key No_pengiriman, Id_produk Foreign
Key
No_pengiriman
references
Delivery
Order
Pembelian(No_pengiriman) on update cascade on delete no action Foreign Key Id_produk references Produk(Id_produk) on update cascade on delete no action
142
Gambar 4.20 Data Model Lokal Logikal
143 4.1.3 Perancangan Basisdata Fisikal Perancangan basis data fisik merupakan proses untuk memutuskan bagaimana struktur logika diimplementasikan secara fisik (sebagai relasi) ke target DBMS. Adapun langkah-langkah dalam perancangan basis data secara fisik yaitu : 1.Merancang relasional basis data. 2.Menganalisis transaksi. 3.Memilih index 4.Memperkirakan kebutuhan kapasitas penyimpanan. 5.Merancang mekanisme keamanan. 6.Pemilihan DBMS
4.1.3.1 Merancang Relasional Basis data Tujuan dari langkah ini adalah untuk memutuskan bagaimana merepresentasikan relasi dasar yang diidentifikasikan dalam model data logikal global ke dalam target DBMS. Informasi yang diperlukan untuk proses ini dapat diperoleh dari kamus data dan definisi dari relasi dideskripsikan menggunakan Database Definition Language (DBDL). Adapun DBDL yang didefinisikan adalah sebagai berikut :
144 DBDL Staf
Domain
NIP
variable length character string, length 5
Domain
NamaStaf
Domain
Posisi
variable length character string, length 15
Domain
Alamat
variable length character string, length 50
Domain
Sex
single character must be one of ’P’, ’W’
Domain
Komisi
monetary value
Domain
Bonus
monetary value
Domain
GajiPokok
monetary value
Domain
TanggalMulaiKerja
date
variable length character string, length 30
Staf ( NIP
NIP
NOT NULL,
Nama_staf
NamaStaf
NOT NULL,
Posisi
Posisi
NOT NULL,
Alamat
Alamat
NOT NULL,
sex
Sex
NOT NULL,
komisi
Komisi
Bonus
Bonus
145 Gaji_pokok
GajiPokok
Tgl_mulai_kerja
NOT NULL,
TanggalMulaiKerja
NOT NULL,
Primary Key (NIP));
DBDL Supplier Domain
IdSupplier
variable length character string,
NamaSupplier
variable length character string,
length 5 Domain length 30 Domain
Alamat
variable length character sting,
E-mail
variable length character string,
length 50 Domain length 20 Supplier ( Id_supplier
IdSupplier
NOT NULL,
Nama_supplier
NamaSupplier
NOT NULL,
Alamat
Alamat
NOT NULL,
E-mail
E-mail
Primary Key (Id_supplier));
146 DBDL Produk Domain Domain
IdProduk NamaProduk
variable length character string, length 7 variable length character string, length
20 Domain Domain
Satuan Warna
variable length character string, length 7 variable length character string, length
10 Domain
HargaSatuan
Domain
Stok
monetary value Integer
Produk ( Id_produk
IdProduk
NOT NULL,
Nama_produk
NamaProduk
NOT NULL,
Satuan
Satuan
Warna
Warna
NOT NULL,
Harga_satuan
HargaSatuan
NOT NULL,
Stok
Stok
Primary Key (Id_produk));
NOT NULL,
147 DBDL Customer Domain
IdCustomer
variable length character string, length 5
Domain
NamaCustomer
variable length character string, length 15
Domain
Alamat
variable length character string, length 30
Id_customer
IdCustomer
NOT NULL,
Nama_customer
NamaCustomer
NOT NULL,
Customer (
Alamat
Alamat
NOT NULL,
Primary Key (Id_customer));
DBDL Packing List Domain
NoPackingList
integer
Domain
TanggalPackingList
date
Domain
NoSalesContract
integer
Domain
NoCommercialInvoice integer
Domain
KeteranganProduk
variable length character string, length 50
Packing List ( No_PL
NoPackingList
NOT NULL,
Tgl_PL
TanggalPackingList
NOT NULL,
148 No_SC
NoSalesContract
NOT NULL,
No_CI
NoCommercialInvoice
NOT NULL,
Keterangan_produk KeteranganProduk
NOT NULL,
Primary Key (No_PL), Foreign Key (No_SC) references Sales Contract(No_SC) on update cascade on delete no action, Foreign Key (No_CI) references Commercial Invoice (No_CI) on update cascade on delete no action);
DBDL Commercial Invoice Domain
NoCommercialInvoice
Domain
TanggalCommercialInvoice date
Domain
IdProduk
variable length character string, length 8
Domain
RincianProduk
variable length character string, length 30
Domain
Quantity
integer
Domain
HargaSatuan
monetary value
Domain
Jumlah
monetary value
Domain
Total
monetary value
Commercial Invoice (
integer
149 No_CI
NoCommercialInvoice
NOT NULL,
Tgl_CI
TanggalCommercialInvoice NOT NULL,
Id_produk
IdProduk
NOT NULL,
Rincian_produk RincianProduk
NOT NULL,
Quan
Quantity
NOT NULL,
Harga_satuan
HargaSatuan
NOT NULL,
Jumlah
Jumlah
NOT NULL,
Total
Total
NOT NULL,
Primary Key (No_CI), Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL Surat Pesanan Domain
NoSuratPesanan
integer
Domain
TanggalSuratPesanan
date
Domain
NamaCustomer
variable length character string, length
Alamat
variable length character string, length
15 Domain 30
150 Domain
Telepon
integer
Domain
IdProduk
variable length character string, length 7
Domain
Warna
variable length character string, length
10 Domain Domain
Quantity PerlengkapanTambahan
integer variable length character string, length
20 Domain
HargaSatuan
monetary value
Domain
Total
monetary value
Domain
UangMuka
monetary value
Domain
Sisa
monetary value
No_SP
NoSuratPesanan
NOT NULL,
Tgl_SP
TanggalSuratPesanan
NOT NULL,
Nama_customer
NamaCustomer
NOT NULL,
Alamat
Alamat
NOT NULL,
Telp
Telepon
NOT NULL,
Id_produk
IdProduk
NOT NULL,
Warna
Warna
NOT NULL,
Surat Pesanan (
151 Quan
Quantity
NOT NULL,
Perlengkapan_Tambahan PerlengkapanTambahan Harga_satuan
Harga_satuan
NOT NULL,
Total
Total
NOT NULL,
Uang_muka
UangMuka
NOT NULL,
Sisa
Sisa
Primary Key (No_SP), Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL Bill of Lading Domain
NoBillOfLading
integer
Domain
TanggalBillOfLading
date
Domain
KeteranganProduk
variable length character string, length 50
No_BL
NoBillOfLading
NOT NULL,
Tgl_BL
TanggalBillOfLading
NOT NULL,
Bill of Lading (
Keterangan Produk KeteranganProduk Primary Key (No_BL));
NOT NULL,
152
DBDL Sales Contract Domain
NoSalesContract
integer
Domain
TanggalSalesContract
date
Domain
IdProduk
variable length character string, length 7
Domain
Quantity
integer
Domain
HargaSatuan
monetary value
Domain
Jumlah
monetary value
Domain
Total
monetary value
No_SC
NoSalesContract
NOT NULL,
Tgl_SC
TanggalSalesContract
NOT NULL,
Id_produk
IdProduk
NOT NULL,
Quan
Quantity
NOT NULL,
Harga_satuan
HargaSatuan
NOT NULL,
Jumlah
Jumlah
NOT NULL,
Total
Total
NOT NULL,
Sales Contract (
Primary Key (No_SC), Foreign Key (Id_produk) references Produk(Id_produk) on update cascade on delete no action);
DBDL Delivery Order Pembelian Domain
NoPengiriman
integer
153 Domain
Tanggal
date
Domain
NoSalesContract
integer
Domain
IdProduk
variable length character string, length 7
Domain
NamaProduk
variable length character string, length 20
Domain
Quantity
integer
Domain
HargaSatuan
monetary value
Domain
Jumlah
monetary value
Domain
Total
monetary value
Delivery Order Pembelian ( No_pengiriman
NoPengiriman
NOT NULL,
Tgl
Tanggal
NOT NULL,
No_SC
NoSalesContract
NOT NULL,
Id_produk
IdProduk
Nama_produk
NamaProduk
NOT NULL,
Quan
Quantity
NOT NULL,
NOT NULL,
Harga_satuan
HargaSatuan
NOT NULL,
Jumlah
Jumlah
NOT NULL,
Total
Total
NOT NULL,
Primary Key (No_pengiriman), Foreign Key (No_SC) references Sales Contract (No_SC) on update cascade on delete no action, Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
154 DBDL Delivery Order Penjualan Domain
NoPengiriman
integer
Domain
Tanggal
date
Domain
NoSuratPesanan
integer
Domain
IdProduk
variable length character string, length 7
Domain
NamaProduk
variable length character string, length 20
Domain
Quantity
integer
Domain
HargaSatuan
monetary value
Domain
Jumlah
monetary value
Domain
Total
monetary value
Delivery Order Penjualan ( No_pengiriman
NoPengiriman
NOT NULL,
Tgl
Tanggal
NOT NULL,
No_SP
NoSuratPesanan
NOT NULL,
Id_produk
IdProduk
NOT NULL,
Nama_produk
NamaProduk
NOT NULL,
Quan
Quantity
NOT NULL,
Harga_satuan
HargaSatuan
NOT NULL,
Jumlah
Jumlah
NOT NULL,
Total
Total
NOT NULL,
Primary Key (No_pengiriman), Foreign Key (No_SP) references Surat Pesanan (No_SP) on update cascade on delete no action,
155 Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL SC Payment Domain
NoSalesContractPayment integer
Domain
Tanggal
date
Domain
NoPengiriman
integer
Domain
NIP
variable length character string, length 5
Domain
Jumlah
monetary value
SC Payment ( No_SCPayment
NoSalesContractPayment
NOT NULL,
Tgl
Tanggal
NOT NULL,
No_pengiriman
NoPengiriman
NOT NULL,
NIP
NIP
NOT NULL,
Jumlah
Jumlah
NOT NULL,
Primary Key (No_SCPayment), Foreign Key (No_pengiriman) references Delivery Order Pembelian (No_pengiriman) on update cascade on delete no action, Foreign Key (NIP) references Staf (NIP) on update cascade on delete no action);
DBDL SP Payment Domain
NoSuratPesananPayment integer
Domain
Tanggal
date
156 Domain
IdCustomer
variable length character string, length 5
Domain
NamaCustomer
variable length character string, length 15
Domain
Jumlah
monetary value
SP Payment ( No_SPPayment
NoSuratPesananPayment
NOT NULL,
Tgl
Tanggal
NOT NULL,
Id_customer
IdCustomer
NOT NULL,
Nama_customer
NamaCustomer
NOT NULL,
Jumlah
Jumlah
NOT NULL,
Primary Key (No_SPPayment), Foreign Key (Id_customer) references Customer (Id_customer) on update cascade on delete no action);
DBDL Delivery Order Pembelian Detil Domain
NoPengiriman
integer
Domain
IdProduk
variable length character string, length 7
Domain
Satuan
integer
Domain
Quantity
integer
Domain
HargaSatuan
monetary value
Domain
Jumlah
monetary value
Delivery Order Pembelian detil ( No_pengiriman
NoPengiriman
NOT NULL,
Id_produk
IdProduk
NOT NULL
157 Satuan
Satuan
NOT NULL,
Quan
Quantity
NOT NULL,
Harga_satuan
HargaSatuan
NOT NULL,
Jumlah
Jumlah
NOT NULL,
Primary Key (No_pengiriman), Primary Key (Id_produk), Foreign Key (No_pengiriman) references Delivery Order Pembelian (No_pengiriman) on update cascade on delete no action, Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL Delivery Order Penjualan Detil Domain
NoPengiriman
integer
Domain
IdProduk
variable length character string, length 7
Domain
Satuan
integer
Domain
Quantity
integer
Domain
HargaSatuan
monetary value
Domain
Jumlah
monetary value
Delivery Order Penjualan Detil ( No_pengiriman
NoPengiriman
NOT NULL,
Id_produk
IdProduk
NOT NULL,
Satuan
Satuan
NOT NULL,
Quan
Quantity
NOT NULL,
158 Harga_satuan
HargaSatuan
Jumlah
Jumlah
NOT NULL, NOT NULL,
Primary Key (No_pengiriman), Primary Key (Id_produk), Foreign Key (No_pengiriman) references Delivery Order Penjualan (No_pengiriman) on update cascade on delete no action, Foreign Key (Id_produk) references Produk (Id_produk) on update cascade on delete no action);
DBDL Telepon_staf Domain
Telepon
integer
Domain
NIP
variable length character string, length 5
Telepon
Telepon
NOT NULL,
NIP
NIP
NOT NULL,
Telepon_staf (
Primary Key (Telepon), Foreign Key (NIP) references Staf (NIP) on update cascade on delete no action);
159
DBDL Handphone_staf Domain
Handphone
integer
Domain
NIP
variable length character string, length 5
Handphone_staf ( Handphone
Handphone
NIP
NIP
NOT NULL,
Primary Key (Handphone), Foreign Key (NIP) references Staf (NIP) on update cascade on delete no action);
DBDL Telp_supplier Domain
Telepon
integer
Domain
Id_supplier
variable length character string, length 5
Telp
Telepon
NOT NULL,
Id_supplier
Id_supplier
NOT NULL,
Telp_supplier (
Primary Key (Telp), Foreign Key (Id_supplier) references Supplier (Id_supplier) on update cascade on delete no action);
DBDL Fax_supplier Domain
Fax
integer
160 Domain
Id_supplier
variable length character string, length 5
Fax
Fax
NOT NULL,
Id_supplier
Id_supplier
NOT NULL,
Fax_supplier (
Primary Key (Fax), Foreign Key (Id_supplier) references Supplier (Id_supplier) on update cascade on delete no action);
DBDL Fax_ customer Domain
Fax
integer
Domain
Id_customer
variable length character string, length 5
Fax
Fax
NOT NULL,
Id_customer
Id_customer
NOT NULL,
Fax_customer (
Primary Key (Fax), Foreign Key (Id_customer) references Customer (Id_customer) on update cascade on delete no action);
DBDL Telp_customer Domain
Telepon
Domain
Id_customer
integer variable length character string, length 5
Telp_customer ( Telp
Telepon
NOT NULL,
161 Id_customer
Id_customer
NOT NULL,
Primary Key (Telp), Foreign Key (Id_customer) references Customer (Id_customer) on update cascade on delete no action);
DBDL Handphone_customer Domain
Handphone
integer
Domain
Id_customer
variable length character string, length 5
Handphone_customer( Handphone
Handphone
Id_customer
Id_customer
NOT NULL,
Primary Key (Handphone), Foreign Key (Id_customer) references Customer (Id_customer) on update cascade on delete no action);
4.1.3.2 Menganalisis Transaksi Langkah ini bertujuan untuk memahami fungsionalitas dari transaksitransaksi yang akan berjalan pada basis data dan untuk menganalisis transaksitransaksi yang penting. Transaksi – transaksi yang terjadi adalah sebagai berikut: (a) Menampilkan order pembelian yang ada (b) Mengidentifikasi Sales Contract (c) Mengidentifikasi pembayaran (d) Mengidentifikasi pembayaran pembelian
162 (e) Mengidentifikasi produk yang di order (f) Mengidentifikasi commercial invoice (g) Mengidentifikasi Packing List (h) Mengidentifikasi Bill of Lading (i) Menambah produk (j) Menampilkan staf (k) Menampilkan pesanan/order penjualan yang ada (l) Menampilkan Surat Pesanan (m) Menampikan produk yang akan dikirim ke pelanggan (n) Input pembayaran (o) Mengidentifikasi pembayaran penjualan (p) Menampilkan pelanggan (q) Mengurangi produk (r) Menampilkan stok produk
Tabel 4.6 Analisis Transaksi bagian I
Transaksi/ Relasi Staf Supplier Produk Customer Packing List Commercial Invoice Surat Pesanan Bill of Lading Sales Contract Delivery Order Pembelian Delivery Order Penjualan SC Payment SP Payment Delivery Order Pembelian detil Delivery Order Penjualan detil Telepon_staf Handphone_staf Telp_supplier Fax_supplier Telp_customer Handphone_customer Fax_customer
(A) I
R
U
D
X X
X
I
R X X
X
U
(C) D
I
R X
(D) U
D
I
R
U
(E) D
I
R
U
(F) D
I
R
X
X
(G) U
D
I
R
X
X
X
X
X
I = Insert; R = Read; U = Update; D = Delete
163
(B)
X
X X
X X
X
X
X
U
D
Tabel 4.7 Analisis Transaksi bagian II
Transaksi/ Relasi Staf Supplier Produk Customer Packing List Commercial Invoice Surat Pesanan Bill of Lading Sales Contract Delivery Order Pembelian
(H) I
R
U
D
I
X
R
X
(J) U
D
(K)
I
R
U
D
X
X
X
X
X
I
R
X
U
(L) D
I
R
U
(M) D
I
X X
R
U
(N) D
I
R
U
X
X
X
X X
X X
Delivery Order Penjualan SC Payment SP Payment Delivery Order Pembelian detil Delivery Order Penjualan detil Telepon_staf Handphone_staf Telp_supplier Fax_supplier Telp_customer Handphone_customer Fax_customer I = Insert; R = Read; U = Update; D = Delete
164
(I)
X X
X X
X X
X X
X X
X X
X
D
Tabel 4.7 Analisis Transaksi bagian III
Transaksi/ Relasi Staf Supplier Produk Customer Packing List Commercial Invoice Surat Pesanan Bill of Lading Sales Contract Delivery Order Pembelian Delivery Order Penjualan SC Payment SP Payment Delivery Order Pembelian detil Delivery Order Penjualan detil Telepon_staf Handphone_staf Telp_supplier Fax_supplier Telp_customer Handphone_customer Fax_customer
(O) I
R
U
D
X
X
X
X
X X X
X X X
X
X X X
X X X
I = Insert; R = Read; U = Update; D = Delete
165
(P) I
R
X
U
(Q) D
I
(R)
R
U
D
X
X
X
I
R
X
U
D
166 4.1.3.3 Memilih index Tujuan dari langkah ini adalah untuk menentukan apakah penambahan index akan meningkatkan performa sistem. Index yang digunakan adalah sebagai berikut: a). Staf CREATE UNIQUE INDEX NIPInd ON Staf (NIP) CREATE INDEX NmStafInd ON Staf (Nama_staf) b)
Telepon_staf CREATE UNIQUE INDEX TelpInd ON Telepon_staf (Telepon)
c). Handphone_staf CREATE UNIQUE INDEX HpInd ON Handphone_staf (Handphone) d). Supplier CREATE UNIQUE INDEX IdSupInd ON Supplier (Id_supplier) CREATE INDEX NmSupInd ON Supplier (Nama_supplier) e). Telp_supplier CREATE UNIQUE INDEX TelpInd ON Telp_supplier (Telp) f). Fax_supplier CREATE UNIQUE INDEX FaxInd ON Fax_suppier (Fax) g). Customer CREATE UNIQUE INDEX IdCustInd ON Customer (Id_customer) CREATE INDEX NmCustInd ON Customer (Nama_customer) h). Telp_customer CREATE UNIQUE INDEX TelpInd ON Telp_customer (Telp) i). Handphone_customer
167 CREATE UNIQUE INDEX HpInd ON Handphone_customer (Handphone) j). Fax_customer CREATE UNIQUE INDEX FaxInd ON Fax_customer (Fax) k). Produk CREATE UNIQUE INDEX IdProdInd ON Produk (Id_produk) CREATE INDEX NmProdInd ON Produk (Nama_produk) l). Packing List CREATE UNIQUE INDEX NoPLInd ON Packing List (No_PL)
4.1.3.4 Memperkirakan Kebutuhan Kapasitas Penyimpanan Tujuan dari langkah ini adalah untuk menghitung kapasitas penyimpanan yang dibutuhkan oleh basisdata. Perkiraan kapasitas setiap tabel adalah sebagai berikut : Tabel 4.9 Staff Field
Tipe
Ukuran
NIP
Varchar
5
Nama_staff
Varchar
30
Posisi
Varchar
15
Alamat
Varchar
50
Sex
Varchar
1
Komisi
Integer
4
Bonus
Integer
4
Gaji_pokok
Integer
4
168 Tgl_mulai_kerja
Date
8
Kapasitas dari tabel staff adalah 121 byte Total staff yang sudah ada di perusahaan adalah 30 Total kapasitas penyimpanan tablel ini adalah 121*30 = 3630 byte
Tabel 4.10 Supplier Field
Tipe
Ukuran
Id_Supplier
Varchar
5
Nama_Supplier
Varchar
30
Alamat
Varchar
50
E-mail
Varchar
20
Kapasitas dari table supplier adalah 105 byte. Total supplier yang sudah ada sekarang adalah 3 Total kapasitas penyimpanan table ini adalah 105*3 = 315 byte
Tabel 4.11 Produk Field
Tipe
Ukuran
Id_Produk
Varchar
7
Nama_Produk
Varchar
20
Warna
Varchar
10
Harga_satuan
Integer
4
Stok
Integer
4
Kapasitas dari table produk adalah 45 byte
169 Total produk yang ada sekarang adalah 15 Total kapasitas penyimpanan tabel ini adalah 675 byte
Tabel 4.12 Customer Field
Tipe
Ukuran
Id_Customer
Varchar
5
Nama_Customer
Varchar
15
Alamat
Varchar
30
Kapasitas dari tabel customer adalah 50 byte Diperkirakan dalam satu hari ada 5 customer baru Dalam satu tahun pertumbuhan tabel ini adalah 50*5*26*12 = 78000 byte
Tabel 4.13 Packing_List Field
Tipe
Ukuran
No_PL
Integer
4
Tgl_PL
Date
8
No_SC
Integer
4
No_CI
Integer
4
Keterangan Produk
Varchar
50
Kapasitas dari tabel packing_list adalah 70 byte Diperkirakan dalam satu tahun ada 4 packing list pembelian barang Dalam satu tahun pertumbuhan tabel ini adlaah 70*4 = 280byte
170
Tabel 4.14 Commercial Invoice Field
Tipe
Ukuran
No_CI
Integer
4
Tgl_CI
Date
8
Id_Produk
Varchar
8
Rincian_produk
Varchar
30
Quantity
Integer
4
Harga_satuan
Integer
4
Jumlah
Integer
4
Total
Integer
4
Total kapasitas tabel commercial invoice adalah 66 byte Diperkirakan dalam satu hari terjadi 5 transaksi Dalam satu tahun perkembangan tabel ini adalah 66*5*26*12 = 102960 byte atau 102.96Kbyte
Tabel 4.15 Surat Pesanan Field
Tipe
Ukuran
No_SP
Integer
4
Tgl_SP
Date
8
Nama_customer
Varchar
15
Alamat
Varchar
30
Telepon
Integer
4
171 Id_produk
Varchar
7
Warna
Varchar
10
Quantity
Integer
4
Perlengkapan_tambahan Varchar
20
Harga_satuan
Integer
4
Total
Integer
4
Uang_muka
Integer
4
Sisa
Integer
4
Total kapasitas tabel curat pesanan adalah 118 byte Diperkirakan dalam satu hari terjadi 5 transaksi Dalam satu tahun perkembangan tabel ini adalah 118*5*26*12 = 184080 byte atau 184.08 Kbyte
Tabel 4.16 Bill of Lading Field
Tipe
Ukuran
No_BL
Integer
4
Tgl_BL
Date
8
Keterangan Produk
Varchar
50
Total kapasitas tabel bill of lading adalah 62 byte Diperkirakan dalam satu tahun ada 4 bill of lading pembelian barang Dalam satu tahun pertumbuhan tabel ini adalah 62*4 = 248 byte
172 Tabel 4.17 Sales Contract Field
Tipe
Ukuran
No_SC
Integer
4
Tgl_SC
Date
8
Id_Produk
Varchar
7
Quantity
Integer
4
Harga_satuan
Integer
4
Jumlah
Integer
4
Total
Integer
4
Total kapasitas tabel sales contract adalah 35 byte Diperkirakan dalam satu hari terjadi 5 transaksi Dalam satu tahun pertumbuhan tabel ini adalah 54600 byte atau 54.6 Kbyte
Tabel 4.18 Delivery Order Pembelian Field
Tipe
Ukuran
No_Pengiriman
Integer
4
Tanggal
Date
8
No_SC
Integer
4
Id_Produk
Varchar
7
Nama_produk
Varchar
20
Quantity
Integer
4
Harga_satuan
Integer
4
Jumlah
Integer
4
173 Total
Integer
4
Total kapasitas tabel delivery order pembelian adalah 59 byte Diperkirakan dalam satu tahun ada 4 kali pembelian barang Dalam satu tahun pertumbuhan tabel ini adalah 59*4 = 236 byte
Tabel 4.19 Delivery Order Penjualan Field
Tipe
Ukuran
No_Pengiriman
Integer
4
Tanggal
Date
8
No_SP
Integer
4
Id_Produk
Varchar
7
Nama_produk
Varchar
20
Quantity
Integer
4
Harga_satuan
Integer
4
Jumlah
Integer
4
Total
Integer
4
Total kapasitas tabel delivery order penjualan adalah 59 byte Diperkirakan dalam satu hari ada 5 kali transaksi Dalam satu tahun pertumbuhan tabel ini adalah 59*5*26*12 = 92040 byte atau 92.04 Kbyte
174 Tabel 4.20 SC Payment Field
Tipe
Ukuran
No_SCPayment
Integer
4
Tanggal
Date
8
No_Pengiriman
Integer
4
NIP
Varchar
5
Jumlah
Integer
4
Total kapasitas tabel SC Payment adalah 25 byte Diperkirakan dalam satu hari ada 5 kali transaksi Dalam satu tahun pertumbuhan tabel ini adalah 25*5*26*12 = 39000 byte atau 39 Kbyte
Tabel 4.21 SP Payment Field
Tipe
Ukuran
No_SPPayement
Integer
4
Tanggal
Date
8
Id_Customer
Varchar
5
Nama_Customer
Varchar
15
Jumlah
Integer
4
Total kapasitas tabel SP Payment adalah 36 byte Diperkirakan dalam satu tahun ada 4 kali transaksi pembelian Dalam satu tahun pertumbuhan tabel ini adalah 36*4 = 144 byte
175 Tabel 4.22 Telepon_Staff Field
Tipe
Ukuran
Telepon
Integer
4
NIP
varchar
5
Total kapasitas tabel telepon_staff adalah 9 byte Jumlah karyawan yang sudah ada di perusahaan adalah 30 orang Total kapasitas tabel ini adalah 30*9 = 270 byte
Tabel 4.23 Handphone Staff Field
Tipe
Ukuran
Handphone
Integer
4
NIP
Varchar
5
Total kapasitas tabel telepon_staff adalah 9 byte Jumlah karyawan yang sudah ada di perusahaan adalah 30 orang Total kapasitas tabel ini adalah 30*9 = 270 byte
176 Tabel 4.24 Telp_supplier Field
Tipe
Ukuran
Telepon
Integer
4
Id_Supplier
Varchar
5
Total kapasitas tabel telepon_staff adalah 9 byte Jumlah karyawan yang sudah ada di perusahaan adalah 5 orang Total kapasitas tabel ini adalah 5*9 = 45 byte
Tabel 4.25 Fax_supplier Field
Tipe
Ukuran
Fax
Integer
4
Id_Supplier
Varchar
5
Total kapasitas tabel telepon_staff adalah 9 byte Jumlah karyawan yang sudah ada di perusahaan adalah 5 orang Total kapasitas tabel ini adalah 5*9 = 45 byte
177 Tabel 4.26 Telp_Customer Field
Tipe
Ukuran
Telepon
Integer
4
Id_Customer
Varchar
5
Total kapasitas tabel telepon_staff adalah 9 byte Diperkirakan dalam satu hari ada 5 customer baru Dalam satu tahun pertumbuhan tabel ini adalah 9*5*26*12 = 14040 byte atau 14.04 Kbyte
Tabel 4.27 Handphone_customer Field
Tipe
Ukuran
Handphone
Integer
4
Id_Customer
Varchar
5
Total kapasitas tabel telepon_staff adalah 9 byte Diperkirakan dalam satu hari ada 5 customer baru Dalam satu tahun pertumbuhan tabel ini adalah 9*5*26*12 = 14040 byte atau 14.04 Kbyte
178 Tabel 4.28 Fax_customer Field
Tipe
Ukuran
Fax
Integer
4
Id_Customer
Varchar
5
Total kapasitas tabel telepon_staff adalah 9 byte Diperkirakan dalam satu hari ada 5 customer baru Dalam satu tahun pertumbuhan tabel ini adalah 9*5*26*12 = 14040 byte atau 14.04 Kbyte
Tabel 4.29 Delivery order penjualan detil Field
Tipe
Ukuran
No_Pengiriman
Integer
4
Id_Produk
Varchar
5
Satuan
Integer
4
Harga_Satuan
Integer
4
Quantity
Integer
4
Jumlah
Integer
4
Total kapasitas tabel delivery order penjualan detil adalah 25 byte Diperkirakan dalam satu hari ada 5 transaksi Dalam satu tahun perkembangan tabel ini adalah 25*5*26*12 = 39000 byte atau 39 Kbyte
179 Tabel 4.30 Delivery Order Pembelian detil Field
Tipe
Ukuran
No_Pengiriman
Integer
4
Id_Produk
Varchar
5
Satuan
Integer
4
Harga_Satuan
Integer
4
Quantity
Integer
4
Jumlah
Integer
4
Total kapasitas tabel delivery order penjualan detil adalah 25 byte Diperkirakan dalam satu tahun ada 4 kali transaksi pembelian Dalam satu tahun perkembangan tabel ini adalah 25*4 = 125 byte
180 Tabel 4.31 Estimasi disk space Nama Tabel
Kapasitas yang dibutuhkan dalam 1 tahun
Staff
3630 byte
Supplier
315 byte
Produk
675 byte
Customer
78000 byte
Packing List
280 byte
Commercial Invoice
102960 byte
Surat Pesanan
184080 byte
Bill of Lading
248 byte
Sales Contract
54600 byte
Delivery order 236 byte Pembelian Delivery order 92040 byte Penjualan SC Payment
39000 byte
SP Payment
144 byte
Telepon_staff
270 byte
Handphone_staff
270 byte
Telp_supplier
45 byte
Fax_supplier
45 byte
Telp_Customer
14040 byte
Handphone_Customer
14040 byte
181 Fax_Customer
14040 byte
Delivery order 39000 byte penjualan detil Delivery order 125 byte pembelian detil Total space yang dibutuhkan dalam 1 tahun ditambah backup data adalah 638083*2 byte = 1276166 byte atau 1.27 MByte Total space yang dibutuhkan dalam 5 tahun adalah 1276166*5 = 6380830 byte atau 6.38 Mbyte
4.1.3.5
Merancang Mekanisme Keamanan Tujuan dari langkah ini adalah untuk merancang mekanisme keamanan
dari basis data yang dispesifikasikan oleh user. Adapun mekanisme keamanan yang dirancang untuk basis data adalah sebagai berikut : User dengan authorisasi Admin: GRANT ALL PRIVILEGES ON staff TO Admin; GRANT ALL PRIVILEGES ON Supplier TO Admin; GRANT ALL PRIVILEGES ON Produk TO Admin; GRANT ALL PRIVILEGES ON Customer TO Admin; GRANT ALL PRIVILEGES ON Packing List TO Admin; GRANT ALL PRIVILEGES ON Commercial Invoice TO Admin; GRANT ALL PRIVILEGES ON Surat Pesanan TO Admin; GRANT ALL PRIVILEGES ON Bill of Lading TO Admin;
182 GRANT ALL PRIVILEGES ON Sales Contract TO Admin GRANT ALL PRIVILEGES ON Delivery Order Pembelian TO Admin; GRANT ALL PRIVILEGES ON Delivery Order Penjualan TO Admin; GRANT ALL PRIVILEGES ON SC Payment TO Admin; GRANT ALL PRIVILEGES ON SP Payment TO Admin; GRANT ALL PRIVILEGES ON Telepon_staff TO Admin; GRANT ALL PRIVILEGES ON Handphone_Staff TO Admin; GRANT ALL PRIVILEGES ON telp_supplier TO Admin; GRANT ALL PRIVILEGES ON fax_supplier TO Admin; GRANT ALL PRIVILEGES ON telp_customer TO Admin; GRANT ALL PRIVILEGES ON handphone_customer TO Admin; GRANT ALL PRIVILEGES ON fax_Customer TO Admin; GRANT ALL PRIVILEGES ON Delivery_order_penjualan_detil TO Admin; GRANT ALL PRIVILEGES ON delivery_order_pembelian_detil TO Admin;
User dengan authorisasi Preskom, Komisaris, Direktur : GRANT SELECT PRIVILEGES ON staff TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON Supplier TO Preskom, Komisaris, Direktur;
183 GRANT SELECT PRIVILEGES ON Produk TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON Customer TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON Packing List TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON Commercial Invoice TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON Surat Pesanan TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON Bill of Lading TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON Sales Contract TO Admin GRANT SELECT PRIVILEGES ON Delivery Order Pembelian TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON Delivery Order Penjualan TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON SC Payment TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON SP Payment TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON Telepon_staff TO Preskom, Komisaris, Direktur;
184 GRANT SELECT PRIVILEGES ON Handphone_Staff TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON telp_supplier TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON fax_supplier TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON telp_customer TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON handphone_customer TO Preskom, Komisaris, Direktur; GRANT SELECT PRIVILEGES ON fax_Customer TO Preskom, Komisaris, Direktur; GRANT
SELECT
PRIVILEGES
ON
Delivery_order_penjualan_detil TO Preskom, Komisaris, Direktur; GRANT
SELECT
PRIVILEGES
ON
delivery_order_pembelian_detil TO Preskom, Komisaris, Direktur;
User dengan authorisasi logistik: GRANT SELECT, INSERT, UPDATE PRIVILEGES ON Supplier TO Logistik; GRANT SELECT, INSERT, UPDATE PRIVILEGES ON Produk TO Logistik; GRANT SELECT, INSERT, UPDATE PRIVILEGES ON Packing List TO Logistik;
185 GRANT SELECT, INSERT, UPDATE PRIVILEGES ON Bill of Lading TO Logistik; GRANT SELECT, INSERT, UPDATE PRIVILEGES ON Delivery Order Pembelian TO Logistik; GRANT SELECT, INSERT, UPDATE PRIVILEGES ON SP Payment TO Logistik; GRANT
SELECT,
INSERT,
UPDATE
PRIVILEGES
ON
delivery_order_pembelian_detil TO Logistik;
User dengan authorisasi Administrasi: GRANT SELECT, INSERT, UPDATE PRIVILEGES ON Produk TO Administrasi; GRANT
SELECT,
INSERT,
UPDATE
PRIVILEGES
ON
UPDATE
PRIVILEGES
ON
Customer TO Administrasi; GRANT
SELECT,
INSERT,
Commercial Invoice TO Administrasi; GRANT SELECT, INSERT, UPDATE PRIVILEGES ON Surat Pesanan TO Administrasi; GRANT SELECT, INSERT, UPDATE PRIVILEGES ON Sales Contract TO Admin GRANT SELECT, INSERT, UPDATE PRIVILEGES ON Delivery Order Penjualan TO Administrasi; GRANT SELECT, INSERT, UPDATE PRIVILEGES ON SC Payment TO Administrasi;
186 GRANT SELECT, INSERT, UPDATE PRIVILEGES ON SP Payment TO Administrasi; GRANT
SELECT,
INSERT,
UPDATE
PRIVILEGES
ON
UPDATE
PRIVILEGES
ON
UPDATE
PRIVILEGES
ON
UPDATE
PRIVILEGES
ON
UPDATE
PRIVILEGES
ON
UPDATE
PRIVILEGES
ON
Telepon_staff TO Administrasi; GRANT
SELECT,
INSERT,
Handphone_Staff TO Administrasi; GRANT
SELECT,
INSERT,
telp_customer TO Administrasi; GRANT
SELECT,
INSERT,
handphone_customer TO Administrasi; GRANT
SELECT,
INSERT,
fax_Customer TO Administrasi; GRANT
SELECT,
INSERT,
Delivery_order_penjualan_detil TO Administrasi;
187 Berikut ini adalah matrix tabel keamanan dari sistem yang ada :
User Tabel Staff Supplier Produk Customer Packing List Commercial Invoice Surat Pesanan Bill of Lading Sales Contract DO Pembelian DO Penjualan SC Payment SP Payment Telepon_staff Handphone_staff Telepon_supplier Fax_supplier Telepon_customer Handphone_customer Fax_customer DO Penjualan Detil DO Pembelian Detil
S X X X X X X X X X X X X X X X X X X X X X X
Admin I U X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
D X X X X X X X X X X X X X X X X X X X X X X
Menejerial S I U D X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - X - - -
S X X X X X X X X X X X X
Logistik I U - X X X X - X X - - X X - X X - - X X - - X X X X - - - - X X
D -
Administrasi S I U D X - - - - - X X X X X X - - - X X X X X X - - - X X X - - - X X X X X X - - - X - - X - - X - - X - - X X X X X X X X X X X X - - - -
Matrix Tabel Keamanan Database PT.Ippachi Karya Sukses
4.1.3.6 Pemilihan DBMS Pemilihan DBMS adalah tahapan pemilihan sebuah DBMS yang sesuai untuk mendukung aplikasi basis data. Dalam tahapan ini kita harus membandingkan beberapa produk DBMS berdasarkan pada kriteria tertentu. Adapun produk DBMS yang dibandingkan adalah Microsoft SQL Server 2000,
188 Oracle 9i Database dan MySQL v4.1. Kriteria-kriteria yang digunakan untuk membandingkan ketiga produk DBMS tersebut adalah sebagai berikut : 1.
Platform Tabel 4.32
Perbandingan Dukungan Plaftorm dari masing-masing DBMS
SQL Server 2000 Hanya pada
Oracle 9.i Database
berjalan Mendukung Windows- platform,
based
jenis Mendukung
mencakup jenis
AIX-Based
Windows
semua platform,
platform, Windows-based platforms, mencakup
mencakup
Windows-
Systems, based platforms, AIX-
9x, Compaq Tru64 UNIX, HP based systems, HP-UX
Windows
NT, 9000 Series HP-UX, Linux
Windows 2000 and Intel, Windows CE
2.
semua
MySQL v4.1
Sun
Solaris
seterusnya.
dan
systems, Linux Intel, Sun
Solaris
dan
seterusnya.
Kebutuhan Hardware Untuk meng-install SQL Server 2000, setidaknya dibutuhkan platform intel atau yang kompatibel dan hardware berikut : Tabel 4.33
Kebutuhan Hardware dari SQL Server 2000
Hardware
Requirements
Processor
Pentium 166 MHz or higher
Memory
32 MB RAM (minimum for Desktop Engine),
189 64 MB RAM (minimum for all other editions), 128 MB RAM or more recommended Hard disk space
270 MB (full installation), 250 MB (typical), 95 MB (minimum), Desktop Engine: 44 MB Analysis Services: 50 MB minimum and 130 MB typical English Query: 80 MB
Untuk meng-install Oracle 9i Database dengan platform Intel atau yang kompatibel, dibutukan hardware berikut :
Tabel 4.34
Kebutuhan Hardware dari Oracle 9i Database
Hardware
Requirements
Processor
Pentium 166 MHz or higher
Memory
RAM: 128 MB (256 MB recommended) Virtual Memory: Initial Size 200 MB, Maximum Size 400 MB
Hard disk space
140 MB on the System Drive plus 4.5 GB for the Oracle Home Drive (FAT) or 2.8 GB for the Oracle Home Drive (NTFS)
190 MySQL v4.1 tidak se-powerful SQL Server 2000 dan memerlukan spesifikasi hardware yang lebih sedikit. Untuk meng-install MySQL v4.1, dibutuhkan setidaknya 32 Mb RAM dan 60 Mb hard disk space. 3.
Kebutuhan Software SQL Server 2000 hadir dalam enam edisi : Enterprise, Standard, Personal, Developer, Desktop Engine, dan SQL Server CE (versi yang kompatibel untuk Windows CE), serta membutuhkan software berikut ini :
Tabel 4.35 Kebutuhan Software dari SQL Server 2000 (www.databasejournal.com) Operating
Enterprise Standard Personal
Developer Desktop SQL Server
System
Edition
Edition
Edition
Edition
Engine
CE
Windows CE
No
No
No
No
No
Yes
Windows 9x
No
No
Yes
No
Yes
No
No
No
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
No
Windows NT 4.0 Workstation with Service Pack 5
Windows NT 4.0 Server with Service Pack 5 Windows NT
191 4.0 Server Enterprise Edition with Service Pack 5
Windows 2000 No
No
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
No
No
No
Yes
Yes
Yes
No
Professional Windows 2000 Server Windows 2000 Advanced Server Windows 2000 Data Center Windows XP Professional
Oracle 9i Database hadir dalam tiga edisi : Enterprise, Standard dan Personal, serta membutuhkan software berikut : Tabel 4.36 Kebutuhan Software Oracle 9i Database (www.databasejournal.com) Platform
Operating System Version
Required Patches
Windows-based
Windows NT 4.0
Service Pack 5
Windows-based
Windows 2000
Service Pack 1
192 Windows-based
Windows XP
Not Necessary
AIX-Based
AIX 4.3.3
Maintenance Level 09 and IY24568, IY25282, IY27614, IY30151
AIX-Based
AIX 5.1
AIX 5L release 5.1 ML01+ (IY22854), IY26778, IY28766, IY28949, IY29965, IY30150
Compaq Tru64
Tru64 5.1
5.1 patchkit 4
Tru64 5.1A
5.1A patchkit 1
HP-UX version 11.0 (64-bit)
Sept. 2001 Quality Pack,
UNIX Compaq Tru64 UNIX HP-UX
PHCO_23792, PHCO_24148, PHKL_24268, PHKL_24729, PHKL_ 25475, PHKL_25525, PHNE_24715, PHSS_23670,
193 PHSS_24301, PHSS_24303, PHSS_24627, PHSS_22868 Linux
SuSE Linux Enterprise Server 7
Not Necessary
(or SLES-7) with kernel 2.4.7, and glibc 2.2.2 Sun Solaris
Solaris 32-Bit 2.6 (5.6), 7 (5.7)
Not Necessary
or 8 (5.8) Sun Solaris
Solaris 64-Bit 8 (5.8)
Update 5
MySQL v4.1 hadir dalam dua edisi : Standard dan Max, serta membutuhkan software berikut : Tabel 4.37 Kebutuhan Software dari MySQL v4.1 (www.databasejournal.com) Platform
Operating System Version
WindowsWindows 95/98/NT/2000/XP/2003 based Sun Solaris
Solaris 8 (SPARC)
FreeBSD
FreeBSD 4.x (x86)
Mac OS X
Mac OS X v10.2 HP-UX 10.20 (RISC 1.0),
HP-UX HP-UX 11.11 (PA-RISC 1.1 and 2.0),
194 HP-UX 11.11 (PA-RISC 2.0, 64-bit only) AIX 5.1 (RS6000), AIX-Based
AIX 4.3.2 (RS6000), AIX 4.3.3 (RS6000)
4.
QNX
QNX 6.2.1 (x86)
SGI Irix
SGI Irix 6.5
Dec OSF
Dec OSF 5.1 (Alpha)
Performance Di antara ketiga produk DBMS tersebut, yang memiliki performance paling baik adalah SQL Server 2000. Hal ini dibuktikan dari hasil analisis yang dilakukan oleh Transaction Processing Performance Council (TPC.Org), sebuah organisasi yang menspesifikasikan transaksi dan beberapa aturan yang harus dipenuhi oleh transaksi. TPC menghasilkan benchmark yang mengukur proses transaksi dan performance basis data dalam hal berapa banyak transaksi yang dapat dilakukan oleh sistem dan basis data tertentu per unit waktu. Hasil analisis yang dilakukan oleh TPC menyebutkan bahwa SQL Server 2000 menduduki peringkat teratas untuk masalah performance dibandingkan kedua DBMS tersebut. 5.
Harga Perbandingan harga antara SQL Server 2000 dengan Oracle 9i Database adalah : Tabel 4.38
Perbandingan harga antara SQL Server 2000 Standard
Edition dan Oracle 9i Standard Edition (www.databasejournal.com) Number of
Oracle 9i
SQL Server
195 CPUs
Standard Edition
Standard Edition
1
$15,000
$4,999
2
$30,000
$9,998
4
$60,000
$19,996
8
$120,000
$39,992
16
$240,000
$79,984
32
$480,000
$159,968
SQL Server tersedia dengan dua pilihan license yaitu processor license yang biasanya untuk pemakaian SQL Server melalui internet dan server/per-seat client access license (CAL) yang biasanya digunakan ketika customer tidak memerlukan akses melalui firewall dan jumlah clientnya sedikit. Adapun harga dari SQL Server 2000 untuk masing-masing license yaitu : Tabel 4.39
Harga SQL Server 2000 untuk masing-masing license (www.databasejournal.com) SQL Server 2000
SQL Server 2000
Standard Edition
Enterprise Edition
Processor
$4,999 per processor
$19,999 per processor
Server/Per-Seat
with 5 CALs - $1,489
CAL
with 10 CALs - $2,249
Licensing Options
with 25 CALs - $11,099
196 MySQL v4.1 adalah dual licensed, maksudnya user dapat memilih untuk menggunakan software MySQL sebagai produk software gratis/open source atau dapat membeli sebuah license komersil standard dari MySQL AB. MySQL v4.1 Server adalah per database server. Adapun harganya adalah sebagai berikut :
Tabel 4.40
Harga MySQL v4.1 berdasarkan jumlah license per database server (www.databasejournal.com) Price per copy
Price per copy
(EUR)
(USD)
1 .. 9
440.00
495.00
10 .. 49
315.00
360.00
50 .. 99
255.00
290.00
100 .. 249
195.00
220.00
250 .. 499
155.00
175.00
Number of licenses
6.
Feature Dialek dari SQL yang didukung oleh Microsoft SQL Server disebut TransactSQL (T-SQL). Sedangkan dialek dari SQL yang didukung oleh Oracle 9i Database disebut PL/SQL. Sementara dialek dari SQL yang didukung oleh MySQL v4.1 disebut MySQL dialect. Adapun perbandingan antara ketiga dialek tersebut adalah sebagai berikut :
197 Tabel 4.41 Perbandingan T-SQL dengan PL/SQL (www.databasejournal.com) Feature Indexes
PL/SQL
T-SQL
B-Tree indexes, Bitmap indexes, Partitioned indexes, B-Tree indexes Function-based indexes, Domain indexes
Tables
Relational tables, Relational tables, Object tables, Temporary tables Temporary tables
Triggers
BEFORE triggers, AFTER triggers, AFTER triggers, INSTEAD OF INSTEAD OF triggers triggers
Procedures
PL/SQL statements, Java methods, third-generation
T-SQL statements
language (3GL) routines Arrays
Supported
Not Supported
198
Tabel 4.42 Perbandingan T-SQL dan MySQL dialect (www.databasejournal.com) Feature
T-SQL
MySQL dialect
Views
General Views,
Not Supported
Indexed Views, Distributed Partitioned Views Triggers
AFTER triggers,
Not Supported
INSTEAD OF triggers Stored Procedures
T-SQL statements
Not Supported
User-defined
Scalar functions,
C, C++ external
functions
Inline table-valued
libraries
functions, Multistatement table-valued functions Foreign Keys
Supported
Supported for only InnoDB tables
Cursors
Supported
Not Supported
Arrays
Not Supported
Supported
Berikut ini perbandingan batasan feature antara SQL Server 2000 dengan Oracle 9i Database.
199
Tabel 4.43
Perbandingan batasan feature antara SQL Server 2000 dengan Oracle 9i Database (www.databasejournal.com) Oracle 9i Feature
SQL Server 2000 Database
database name length
128
8
column name length
128
30
index name length
128
30
table name length
128
30
view name length
128
30
stored procedure name length
128
30
index length
900
749
max columns per index
16
32
max char() size
8000
2000
max varchar() size
8000
4000
max columns per table
1024
1000
max table row length
8036
255000
max query size
16777216
16777216
recursive subqueries
40
64
constant string size in SELECT
16777207
4000
constant string size in WHERE
8000
4000
200 Adapun perbandingan batasan feature antara SQL Server 2000 dengan MySQL v4.1 adalah sebagai berikut. Tabel 4.44
Perbandingan batasan feature antara SQL Server 2000 dengan MySQL v4.1 (www.databasejournal.com)
Feature
SQL Server 2000
MySQL v4.1
column name length
128
64
index name length
128
64
table name length
128
64
max indexes per table
250
32
index length
900
1024
max index column length
900
255
columns per index
16
16
max char() size
8000
1048543
max varchar() size
8000
1048543
max blob size
2147483647
1048543
max number of columns in
Limited only by 64
GROUP BY
number of bytes (8060)
max number of columns in
Limited only by 64
ORDER BY
number of bytes (8060)
tables per SELECT statement
256
31
max columns per table
1024
2599
max table row length
8036
65534
201 longest SQL statement
16777216
1048574
constant string size in SELECT
16777207
1048565
Berdasarkan perbandingan antara ketiga produk DBMS tersebut berdasarkan pada kriteria-kriteria di atas, maka kami memutuskan menggunakan Microsoft SQL Server 2000 berdasarkan pada pertimbangan berikut : a. Dalam hal performance, SQL Server 2000 mengungguli kedua DBMS yang lain. Hal ini tentu saja akan mempercepat jalannya transaksi dan sistem menjadi lebih efisien. b. SQL Server 2000 diakui dalam hal kemudahan melakukan instalasi, penggunaan dan pengaturannya. Selain itu dalam hal maintenance, lebih mudah dilakukan dibandingkan kedua DBMS yang lain. c. Dalam hal harga, SQL Server 2000 berada di antara kedua DBMS yang lain, dalam artian ia lebih murah bila dibandingkan dengan Oracle 9.i Database tapi sedikit lebih mahal jika dibandingkan dengan MySQL v4.1. d. Feature-feature yang dimiliki oleh SQL Server 2000 jauh lebih unggul bila dibandingkan dengan MySQL v4.1, walaupun sedikit lebih kalah bila dibandingkan dengan Oracle 9i Database. e. Secara otomatis dapat berjalan sesuai dengan sistem operasi yang digunakan.
202
4.2 Perancangan Aplikasi 4.2.1 Perancangan Input dan Output 4.2.1.1 Perancangan Input Gambar 4.21 Rancangan Layar Login
Gambar 4.22 Rancangan MDIForm
203
Gambar 4.23 Rancangan MDIForm User
Gambar 4.24 Rancangan MDIForm Database
204 Gambar 4.25 Rancangan MDIForm Cetak
Gambar 4.26 Rancangan Layar Master Customer
205 Gambar 4.27 Rancangan dbase Customer
Gambar 4.28 Rancangan Master Produk
206 Gambar 4.29 Rancangan dbase Produk Produk Database Produk
Edit
Gambar 4.30 Rancangan Master Staf
207
Rancangan 4.31 Rancangan dbase Staf
Database Staf
Edit
Gambar 4.32 Rancangan Layar Master Supplier
208 Gambar 4.34 Rancangan dbase Supplier
Database Supplier
Edit
Gambar 4.34 Rancangan Layar Transaksi Pembelian
209 Gambar 4.35 Rancangan Layar Transaksi Persediaan
Gambar 4.36 Rancangan Layar Penerimaan
210 Gambar 4.37 Rancangan Layar Delivery Order
Gambar 4.38 Rancangan Layar Change Password
211 Gambar 4.39 Rancangan Layar Transaksi Penjualan
212 4.2.1.2 Perancangan Output
Gambar 4.40 Output persediaan Laporan Persediaan 01/01/2006
Print Date :
PT. IPPACHI KARYA SUKSES
Kode Produk
Nama Produk
Satuan
Stock
TDQ04Z-06
Folding E-Bike
Sparepart
100
TDM06Z-08
Folding E-Bike
Sepeda
100
Gambar 4.41 Output Laporan Pembelian Laporan Pembelian 11/01/2006
Print Date :
PT. IPPACHI KARYA SUKSES Jl. Abdul Muis No.36M Telp. 3442252 Periode : 10/01/2006 s/d 11/01/2006 Tanggal
No.SC
10/01/2006
SC003
11/01/2006
SC004
Kode Supplier
Perusahaan
Up Supplier
Total
SP001
ZHEJIANG CHANGTONG
Lee Hom
10.000.000,00
SP002
ZHEJIANG CHANGTONG
Jay Chow
25.000.000,00
213 Gambar 4.42 Output Laporan Penjualan Laporan Penjualan 10/01/2006
Print Date :
PT. IPPACHI KARYA SUKSES Jl. Abdul Muis No.36M Telp. 3442252 Periode : 10/01/2006 s/d 10/01/2006
Tanggal
10/01/2006
No.SP
Kode Customer Perusahaan Customer
Nama Customer
Total
SP001
CU001
Hendra
5.000.000,00
SP002
CU001
Thomas
4.000.000,00
Gambar 4.43 Output Laporan Pembayaran Pembelian Laporan Pembayaran Pembelian 07/01/2006
Print Date :
PT. IPPACHI KARYA SUKSES Jl. Abdul Muis No.36M Telp. 3442252 Periode: 05/01/2006 s/d 07/01/2006 Tgl. Bayar Bayar
No. Bayar
05/01/2006
SCP001
07/01/2006
SCP002
No SC
Cara Bayar
No.Rekening
SC001
Cash
-
SC003
Debit
-
Tgl.Pemb
-
Total
25.000.000
07/01/2006
10.000.000
Grand Total:
35.000.000
214
Gambar 4.44 Ouput Laporan Pembayaran Penjualan Laporan Pembayaran Penjualan
Print Date : 05/01/2006
PT. IPPACHI KARYA SUKSES Jl. Abdul Muis No.36M Telp. 3442252 Periode: 05/01/2006 s/d 07/01/2006 Tgl. Bayar Bayar
No. Bayar
No SP
Cara Bayar
05/01/2006
SPP001
SP001
Cash
07/01/2006
SPP005
SP003
Cash
No.Giro
Tgl.Giro
-
-
4.2.2 Spesifikasi Proses Spesifikasi Proses 4.2.2.1 Form Login IF Command Save click THEN Begin Open Koneksi Open PT.IPPACHI KARYA SUKSES file Get no_staf, password If rs(0) > 0 Then Message Box display "Login Sukses", , "PT IPPACHI KARYA SUKSES" mnuDatabase(MDIForm1) Enabled = True mnuCetak(MDIForm1) Enabled = True Show MDIForm1 userLogin = NoText mnuLogout(MDIForm1) Enabled = True mnuChPass(MDIForm1) Enabled = True mnuLogin(MDIForm1) Enabled = False Close Form Login Else Message Box display "Login Gagal" mnuLogin(MDIForm1) Enabled = True End If End If closeKoneksi IF Command Cancel Click THEN
Total
5.000.000,00 5.000.000,00
215 Close Form Login mnuDatabase(MDIForm1) Enabled = False mnuChPass(MDIForm1) Enabled = False mnuLogout( MDIForm1) Enabled = False mnuLogin(MDIForm1) Enabled = True mnuExit(MDIForm1) Enabled = True End If 4.2.2.2 Form Menu MDIForm1 Begin Call Form Login Form Login Show mnuLogout(MDIForm1) Enabled = False mnuChPass(MDIForm1) Enabled = False mnuCetak(MDIForm1) Enabled = False IF mnuProduk Click THEN Call frmProduk frmProduk Show END IF IF mnuExit Click THEN Close MDIForm1 END IF IF mnuCustomer Click THEN Call frmCustomer frmCustomer Show END IF mnuLapPembelian Click THEN Call DataReport1 DataReport1 Show END IF IF MnuLapPenjualan Click THEN Call rptPenjualan rptPenjualan Show END IF IF mnuLapPersediaan Click THEN Call rptPersediaan rptPersediaan Show END IF IF mnuLogin Click THEN Call frmLogin frmLogin Show mnuLogin(MDIForm1) Enabled = False END IF IF mnuStaf Click THEN Call frmStaf frmStaf Show END IF IF mnuPembelian Click THEN Call frmPembelian frmPembelian Show END IF IF mnuPenerimaan Click THEN Call frmPenerimaan frmPenerimaan Show End Sub IF mnuPenjualan Click THEN
216 Call frmPenjualan frmPenjualan Show END IF IF mnuPersediaanproduk Click THEN Call frmPersediaanBahan frmPersediaanBahan Show END IF IF mnuSupplier Click THEN Call frmSupplier frmSupplier Show END IF IF mnuSuratJalan Click THEN Call frmSuratJalan frmSuratJalan Show END IF IF mnuChPass Click THEN Call frmChPass frmChPass Show END IF IF mnuLogout Click THEN IF Message Box display "Logout ?" vbYesNo + vbQuestion = vbYes THEN mnuDatabase(MDIForm1) Enabled = False mnuChPass(MDIForm1) Enabled = False mnuCetak(MDIForm1) Enabled = False Call frmLogin frmLogin Show mnuLogout(MDIForm1) Enabled = False mnuLogin(MDIForm1) Enabled = True END IF END IF
4.2.2.3 Form Change Password Begin IF Text PassBaruKonf < 6 or > 10 THEN MsgBox "Password 6-10 Karakter" END IF IF cmdSave Click THEN OpenKoneksi Get no_staf, password ELSE IF rs(0) = 1 THEN IF (Text PassBaru = Text PassBaruKonf) THEN Set password Close Form ChPass Else Message Box display "Konfirmasi Password Baru Salah" END IF Else MsgBox "Password Salah" End If closeKoneksi IF Command Batal Click THEN
217 Close Form ChPass END IF 4.2.2.4 Form Master Customer Begin Read Customer record, Telepon record IF Kode Customer ((huruf 1 & 2 = numerik) dan (huruf 3-5 = not numerik) = True THEN Message Box display "Isi Kode Customer dengan 2 Digit Awal Huruf dan 3 Digit Akhir Angka" Set focus Kode customer END IF IF Nama Customer = "" THEN Message Box display "Nama Customer Harus Diisi" END IF IF Nama Jalan = "" THEN Mesasge Box "Nama Jalan Harus Diisi" END IF IF Kota = "" THEN Message Box display "Kota Harus Diisi" END IF IF Kdpos = "" THEN Message Box display "Kode Pos Harus Diisi" END IF IF Prov = "" Then Message Box "Provinsi Harus Diisi" END IF IF cmdFirst Click THEN First Record ELSE IF Not (rsTelp.EOF) Or Not (rsTelp.BOF) Then rsTelp.MoveFirst Telepon 1 = rsTelp(1) IF Telepon 2 = NULL THEN Telepon 2= "Tidak Ada Telepon Alternatif" Else Telepon 2 = rsTelp(2) END IF END IF END IF IF cmdLast Click THEN IF Not (rs.BOF) Or Not (rs.EOF) THEN rs.MoveLast If Not (rsTelp.EOF) Or Not (rsTelp.BOF) Then rsTelp.MoveFirst Telepon 1 = rsTelp(1) IF Telepon 2 = NULL THEN Telepon 2 = "Tidak Ada Telepon Alternatif" Else Telepon 2 = rsTelp(2) END IF END IF END IF END IF IF cmdNext Click THEN IF Not (rs.BOF) Or Not (rs.EOF) THEN rs.MoveNext
218 IF rs.EOF Then rs.MoveLast END IF IF Not (rsTelp.EOF) Or Not (rsTelp.BOF) THEN rsTelp.MoveFirst Telepon 1 = rsTelp(1) If Telepon 2 = NULL Then Telepon 2 = "Tidak Ada Telepon Alternatif" Else Telepon 2 = rsTelp(2) END IF END IF END IF END IF IF cmdPrev Click THEN IF Not (rs.BOF) Or Not (rs.EOF) THEN rs.MovePrevious IF rs.BOF Then rs.MoveFirst END IF IF Not (rsTelp.EOF) Or Not (rsTelp.BOF) THEN rsTelp.MoveFirst Telepon 1 = rsTelp(1) IF Telepon 2 = NULL Then Telepon 2 = "Tidak Ada Telepon Alternatif" Else Telepon 2 = rsTelp(2) END IF END IF END IF END IF IF cmdUpdate Click THEN cmdSave.Enabled = True cmdCancel.Enabled = True cmdAdd.Enabled = False cmdDelete.Enabled = False END IF IF cmdAdd Click THEN Kode Customer = "" Nama Customer = "" Telepon 1 = "" Telepon 2 = "" Faksimile = "" Nama Jalan = "" Kota = "" Kode Pos = "" Provinsi = "" cmdSave.Enabled = True cmdCancel.Enabled = True cmdUpdate.Enabled = False cmdDelete.Enabled = False END IF IF cmdkembali ke menu database Click THEN Close form Customer Call form dbaseCustomer Open form dbaseCustomer
219 END IF IF cmdCancel Click THEN cmdAdd.Enabled = True cmdUpdate.Enabled = True cmdDelete.Enabled = True cmdSave.Enabled = False cmdCancel.Enabled = False END IF IF cmdDelete Click THEN IF Message Box("Hapus Data ?") THEN IF Not (rs.BOF) Or Not (rs.EOF) THEN rs.MoveFirst END IF rs.MoveFirst END IF END IF IF cmdSave Click THEN Case 1 : Insert Customer IF Kode Customer = ada THEN Message Box display "Kode Customer Sudah Ada" Else Add Telepon If Not (rs.BOF) Or Not (rs.EOF) Then rs.MoveFirst END IF END IF Case 2 : Update Customer If Kode Customer = ada Then Message Box display "Kode Customer Sudah Ada" Else Update telepon Set kode customer End If End Select cmdAdd.Enabled = True cmdUpdate.Enabled = True cmdCancel.Enabled = False cmdSave.Enabled = False cmdDelete.Enabled = True End If End If 4.2.2.5 Form dbase Customer Begin Open koneksi Read Customer record Show Customer record on MSHFlexGrid1 If cmdEdit Click Then Message box display (“Masukkan password:”, “PT. IPPACHI KARYA SUKSES”) If ceklogin = True Then Call Form Master Customer Open Form Master Customer Close Form dbase Customer End If End If Close koneksi
220
4.2.2.6 Form Master Produk Begin Open koneksi Read produk record If Not (rs.EOF) or Not (rs.BOF) Then Show produk record Else Message Box display “Data kosong” cmdUpdate.Enabled = False cmdDelete.Enabled = False End If If cmd First Click Then If Not (rs.BOF) or not (rs.EOF) Then rs.MoveFirst tampil data awal(first) End if End if If cmd Last Click Then If Not (rs.BOF) or not (rs.EOF) Then rs.MoveLast tampil data akhir(last) End if End if If cmd Prev Click Then If Not (rs.BOF) Or Not (rs.EOF) Then rs.MovePrevious If rs.BOF Then rs.MoveFirst End If tampil data sebelum(prev) End if End if If cmd Next click Then If Not (rs.BOF) Or Not (rs.EOF) Then rs.MoveNext If rs.EOF Then rs.MoveLast End If Tampil data berikut(next) End If End If If cmd Tambah Click Then Kode Produk = “” Nama Produk = “” Harga =”” Warna =”” cmdSimpan.Enabled = True cmd.Batal Enabled = True cmdUpdate Enabled = False cmdHapus Enabled = False End If If cmd Save Click Then Case 1 : Insert Produk values If Kode Produk = ada Then
221 Message Box diplay “Kode Produk sudah ada” End If rs.Requery rs.MoveFirst tampil Case 2 : Update Produk values Set Kode Produk If Kode Produk = ada Then Message Box diplay “Kode Produk sudah ada” End If rs.Requery tampil End Select cmdTambah.Enabled = True cmdUpdate.Enabled = True cmdBatal.Enabled = False cmdSimpan.Enabled = False cmdHapus.Enabled = True End If If cmd Update click Then cmdSimpanEnabled = True cmdBatal.Enabled = True cmdTambah.Enabled = False cmdHapus.Enabled = False End If If cmd Hapus click Then If Message box display “Hapus data?” Then Delete produk record rs.Requery rs.MoveFirst tampil End If End If If cmd Batal Click Then cmdTambah.Enabled = True cmdUpdate.Enabled = True cmdHapus.Enabled = True cmdSimpan.Enabled = False cmdBatal.Enabled = False IF cmdkembali ke menu database Click THEN Close form Master Produk Call form dbaseProduk Open form dbaseProduk END IF 4.2.2.7 Form dbaseProduk Begin Open koneksi Read produk record Show produk record on MSHFlexGrid1 If cmdEdit Click Then Message box display (“Masukkan password:”, “PT. IPPACHI KARYA SUKSES”) If ceklogin = True Then Call Form Master Produk Open Form Master Produk Close Form dbase Produk
222 End If End If Close koneksi 4.2.2.8 Form Master Staf Begin Open koneksi Read Staf record If rs.EOF or rs.BOF Then Message Box display “Data Kosong” cmdUpdate Enabled = False cmdDelete Enabled = False Nomor Staf = nil Nama Depan = nil Nama Belakang = nil Jenis Kelamin(Pria) = nil Jenis Kelamin(Wanita) = nil Posisi = nil Telepon = nil Nama Jalan= nil Kode Pos= nil Kota = nil Provinsi = nil Tanggal Lahir(tanggal) = nil Tanggal Lahir(bulan) = nil Tanggal Lahir(tahun) = nil Else Show Staf record End If Read Posisi Show Posisi If cmdFirst click Then Tampil data awal staf End If If cmdLast click Then Tampil data akhir staf End If If cmdNext click Then Tampil data staf berikutnya End If If cmdPrev click Then Tampil data staf sebelumnya End If If cmdTambah click Then Nomor Staf = "" Nama Belakang = "" Posisi = "" Nama Depan = "" Telepon = "" Nama Jalan = "" Kota = "" Kode Pos = "" Provinsi = "" cmdSimpan Enabled = True cmdBatal Enabled = True cmdUpdate Enabled = False
223 cmdHapus Enabled = False Tanggal Lahir(tanggal) = "" Tanggal Lahir(bulan) = "" Tanggal Lahir(tahun) = "" End If If cmdBatal click Then Cancel Update or Simpan End If If cmdDelete click Then Message Box display “Hapus data?” Delete Staf record Kembali ke data awal Staf Set All Text End If If cmdSave click Then If Nomor Staf = “” or Nomor Staf not (2 digit awal huruf & 3 digit akhir angka) Then Message Box display “2 Digit Awal Huruf dan 3 Digit Akhir Angka" Else Valid = True End if If Nama Depan = “” Then Message box display “Nama depan harus diisi” Else Valid = True End If If Posisi = “” Then Message Box display “Posisi harus diisi” Else Valid = True If Nama Jalan = “” Then Message Box display “Nama Jalan harus diisi” Else Valid = True End If If Kota = “” Then Message Box display “Kota harus diisi” Else Valid = True End If If Kode Pos = “” Then Message Box display “Kode Pos harus diisi” Else Valid = True End If If Provinsi = “” Then Message Box display “Provinsi harus diisi” Else Valid = True End If If tanggal = Valid Then Message Box display “Siap action” Select case Case 1 : Insert Staf record If Nomor Staf = ada Then Message Box display “Nomor Staf sudah ada”
224 Else Save staf record End If Kembali ke data awal Staf Case 2 : Update Staf record Set Staf record If Nomor Staf = ada Then Message Box display “Nomor Staf sudah ada” Else Save Staf record End If End Select CmdTambah Enabled = True CmdUpdate Enabled = True CmdBatal Enabled = False CmdHapus Enabled = True CmdSimpan Enabled = False End If End If If cmdUpdate click Then All Text = True cmdSimpan Enabled = True cmdBatal Enabled = True cmdTambah Enabled = False cmdHapus.Enabled = False If cmdSimpan click Then Simpan staf record End if If cmdBatal click Then All Text = False End If End If If cmdkembali ke menu database click Then Close Form Master Staf Call Form dbase Staf Show Form dbase Staf End If 4.2.2.9 Form dbase Staf Begin Open Koneksi Read staf record Show staf record on MSHFlexGrid Close Koneksi If cmdEdit Click Then Message Box display “Masukkan Password:", "PT. IPPACHI KARYA SUKSES" Else Call Form Master Staf Show Form Master Staf Close Form dbase Staf End If 4.2.2.10 Form Master Supplier Begin Open Koneksi
225 Read Supplier record Begin Open koneksi Read Staf record If rs.EOF or rs.BOF Then Message Box display “Data Kosong” cmdUpdate Enabled = False cmdDelete Enabled = False Kode Supplier = nil Nama Supplier = nil Nama Jalan = nil Kota = nil Kode Pos = nil Provinsi = nil Faksimile = nil Telepon1 = nil Else Show Staf record If Telepon2 = nil Then Message Box display “Tidak ada telepon alternative” Else Telepon 2 = ada End If If cmdFirst click Then Tampil data awal supplier Read Tlp_supplier record If Not (rsTelp.EOF) Or Not (rsTelp.BOF) Then Kembali ke data telp supplier awal If Telepon 2 = nil Then Message Box display “Tidak Ada Telepon Alternatif” Then End If If cmdLast click Then Tampil data akhir supplier Read Tlp_supplier record If Not (rsTelp.EOF) Or Not (rsTelp.BOF) Then Kembali ke data telp supplier akhir If Telepon 2 = nil Then Message Box display “Tidak Ada Telepon Alternatif” Then End If If cmdPrev click Then Tampil data supplier sebelumnya If rs.BOF Then Ke data awal Supplier End If Read Tlp_supplier record If Not (rsTelp.EOF) Or Not (rsTelp.BOF) Then Kembali ke data telp supplier awal If Telepon 2 = nil Then Message Box display “Tidak Ada Telepon Alternatif” Then End If If cmdNext click Then Tampil data supplier berikutnya If rs.EOF Then
226 Ke data akhir Supplier End If Read Tlp_supplier record If Not (rsTelp.EOF) Or Not (rsTelp.BOF) Then Kembali ke data telp supplier akhir If Telepon 2 = nil Then Message Box display “Tidak Ada Telepon Alternatif” Then End If If cmdAdd Click Then Kode Supplier = "" Nama Supplier = "" Telepon 1 = "" Telepon 2 = "" Faksimile = "" Nama Jalan = "" Kota = "" Kode Pos = "" Provinsi = "" cmdSimpan Enabled = True cmdBatal Enabled = True cmdUpdate Enabled = False cmdHapus Enabled = False End If If cmdCancel Click Then Batal Save or Update Supplier record cmdTambah Enabled = True cmdUpdate Enabled = True cmdHapus Enabled = True cmdSimpan Enabled = False cmdBatal Enabled = False End If If cmdDelete Click Then Message Box display("Hapus Data ?") Hapus Supplier record dari table Staf Hapus Telepon Supplier dari table Tlp_Supplier Read Supplier record If Not (rs.BOF) Or Not (rs.EOF) Then Kembali ke data awal supplier End If Kembali ke data awal supplier End If If cmd Simpan Click Then Select case Case 1 : Insert Supplier record If Kode supplier = ada Then Message Box “Kode Supplier sudah ada” Else Insert Tlp_supplier End if Read Supplier record If Not (rs.BOF) Or Not (rs.EOF) Then Ke data awal Staf End if Case 2 :
227 Update Supplier record If Kode supplier = ada Then Message Box display “Kode Supplier sudah ada” Else Update Tlp_supplier Set Supplier Message Box display Supplier record End if Read Supplier record End Select cmdTambah Enabled = True cmdUpdate Enabled = True cmdBatal Enabled = False cmdSimpan Enabled = False cmdHapus Enabled = True End If If cmdupdate click Then cmdSimpan Enabled = True cmdBatalEnabled = True cmdTambah Enabled = False cmdHapus Enabled = False If cmdSimpan click Then Save Supplier record End If If cmdBatal click Then Batal Update Supplier End if End if If cmdkembali ke menu database click Then Close Form Master Supplier Call Form dbase Supplier Show Form dbase Supplier End If 4.2.2.11 Form dbase Supplier Begin Open Koneksi Read supplier record Show supplier record on MSHFlexGrid Close Koneksi If cmdEdit Click Then Message Box display “Masukkan Password:", "PT. IPPACHI KARYA SUKSES" Else Call Form Master Supplier Show Form Master Supplier Close Form dbase Supplier End If 4.2.2.12 Form Master Pembelian Begin Option Explicit Dim rsHeader As ADODB.Recordset Dim rsDetil As ADODB.Recordset Dim validtgl As Boolean
228 Public Function isitanggal() As Boolean If CboTglP.Text = "" Or CboBlnP.Text = "" Or CboThnP.Text = "" Then MsgBox "harap isi tanggal, bulan, tahun" isitanggal = False Exit Function End If If CboTglK.Text = "" Or CboBlnK.Text = "" Or CboThnK.Text = "" Then MsgBox "harap isi tanggal, bulan, tahun" isitanggal = False Exit Function End If isitanggal = True End Function
Public Sub setTextHeader() txtNo.Text = Trim(rsHeader(0)) 'txtTransaksi.Text = rsHeader(1) CboCustomer.Text = Trim(rsHeader(2)) CboStaf.Text = Trim(rsHeader(3)) 'txtKirim.Text = rsHeader(4) CboTglP.Text = Day(rsHeader(1)) CboTglK.Text = Day(rsHeader(4)) CboBlnP.Text = Month(rsHeader(1)) CboBlnK.Text = Month(rsHeader(4)) CboThnP.Text = Year(rsHeader(1)) CboThnK.Text = Year(rsHeader(4)) End Sub Public Sub setEnabledTextHeader(nil As Boolean) txtNo.Enabled = nil 'txtTransaksi.Enabled = nil CboCustomer.Enabled = nil CboStaf.Enabled = nil 'txtKirim.Enabled = nil End Sub Public Sub setEnabledTextDetil(nil As Boolean) cboProduk.Enabled = nil txtJumlah.Enabled = nil cmdTotal.Enabled = nil 'txtTempo.Enabled = nil End Sub Public Sub setTextDetil() cboProduk.Text = Trim(rsDetil(1)) txtJumlah.Text = rsDetil(2) 'txtTempo.Text = rsDetil(4) End Sub
Private Sub cboBarang_Click() Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandText = "select harga from produk where kd_produk='" & cboProduk.Text & "'" com.CommandType = adCmdText
229 Dim rs As ADODB.Recordset Set rs = com.Execute lblhrg.Caption = rs(0) End Sub Private Sub cmdAdd_Click() setEnabledTextHeader (True) cmdAdd.Enabled = False cmdSave.Enabled = True cmdCancel.Enabled = True cmdPrev.Enabled = False cmdNext.Enabled = False cmdLast.Enabled = False cmdFirst.Enabled = False CboTglP.Enabled = True CboBlnP.Enabled = True CboThnP.Enabled = True CboTglK.Enabled = True CboBlnK.Enabled = True CboThnK.Enabled = True txtNo.Text = "" CboCustomer.Text = "" CboStaf.Text = "" End Sub Private Sub cmdBack_Click() Unload Me Load frmPembelian frmPembelian.Show End Sub Private Sub cmdCancel_Click() setEnabledTextHeader (False) setTextHeader cmdAdd.Enabled = True cmdSave.Enabled = False cmdPrev.Enabled = True cmdNext.Enabled = True cmdLast.Enabled = True cmdFirst.Enabled = True cmdCancel.Enabled = False CboTglP.Enabled = False CboBlnP.Enabled = False CboThnP.Enabled = False CboTglK.Enabled = False CboBlnK.Enabled = False CboThnK.Enabled = False End Sub Private Sub cmdCancelDetil_Click() setEnabledTextDetil (False) If Not (rsDetil.BOF) Or Not (rsDetil.EOF) Then setTextDetil End If cmdTambahDetil.Enabled = True
230 cmdSaveDetil.Enabled = False cmdCancelDetil.Enabled = False cmdPrevDetil.Enabled = True cmdNextDetil.Enabled = True lblhrg.Enabled = False cmdLastDetil.Enabled = True cmdSelesai.Enabled = True cmdFirstDetil.Enabled = True End Sub Private Sub cmdDetil_Click() cmdTambahDetil.Enabled = True cmdDetil.Enabled = False cmdAdd.Enabled = False cmdFirst.Enabled = False cmdPrev.Enabled = False cmdNext.Enabled = False cmdLast.Enabled = False cmdSelesai.Enabled = True End Sub Private Sub cmdFirst_Click() rsHeader.MoveFirst setTextHeader Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandText = "select * from pembelian_detil where no_sales_contract='" & rsHeader(0) & "'" com.CommandType = adCmdText Set rsDetil = com.Execute If Not (rsDetil.EOF) Or Not (rsDetil.BOF) Then setTextDetil cmdNextDetil.Enabled = True cmdPrevDetil.Enabled = True cmdFirstDetil.Enabled = True cmdLastDetil.Enabled = True Else MsgBox "data detil kosong" cmdNextDetil.Enabled = False cmdPrevDetil.Enabled = False cmdFirstDetil.Enabled = False cmdLastDetil.Enabled = False cboProduk.Text = "" txtJumlah.Text = "" End If End Sub Private Sub cmdFirstDetil_Click() rsDetil.MoveFirst setTextDetil End Sub Private Sub cmdLast_Click() rsHeader.MoveLast setTextHeader
231 Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandText = "select * from pembelian_detil where no_sales_contract='" & rsHeader(0) & "'" com.CommandType = adCmdText Set rsDetil = com.Execute If Not (rsDetil.EOF) Or Not (rsDetil.BOF) Then setTextDetil cmdNextDetil.Enabled = True cmdPrevDetil.Enabled = True cmdFirstDetil.Enabled = True cmdLastDetil.Enabled = True Else MsgBox "data detil kosong" cmdNextDetil.Enabled = False cmdPrevDetil.Enabled = False cmdFirstDetil.Enabled = False cmdLastDetil.Enabled = False cboProduk.Text = "" txtJumlah.Text = "" End If End Sub Private Sub cmdLastDetil_Click() rsDetil.MoveLast setTextDetil End Sub Private Sub cmdNext_Click() rsHeader.MoveNext If rsHeader.EOF Then rsHeader.MoveLast End If setTextHeader Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandText = "select * from pembelian_detil where no_sales_contract='" & rsHeader(0) & "'" com.CommandType = adCmdText Set rsDetil = com.Execute If Not (rsDetil.EOF) Or Not (rsDetil.BOF) Then setTextDetil cmdNextDetil.Enabled = True cmdPrevDetil.Enabled = True cmdFirstDetil.Enabled = True cmdLastDetil.Enabled = True Else MsgBox "data detil kosong" cmdNextDetil.Enabled = False cmdPrevDetil.Enabled = False cmdFirstDetil.Enabled = False cmdLastDetil.Enabled = False cboProduk.Text = ""
232 txtJumlah.Text = "" End If End Sub Private Sub cmdNextDetil_Click() rsDetil.MoveNext If rsDetil.EOF Then rsDetil.MoveLast End If setTextDetil End Sub Private Sub cmdPrev_Click() rsHeader.MovePrevious If rsHeader.BOF Then rsHeader.MoveFirst End If setTextHeader Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandText = "select * from pembelian_detil where no_sales_contract='" & rsHeader(0) & "'" com.CommandType = adCmdText Set rsDetil = com.Execute If Not (rsDetil.EOF) Or Not (rsDetil.BOF) Then setTextDetil cmdNextDetil.Enabled = True cmdPrevDetil.Enabled = True cmdFirstDetil.Enabled = True cmdLastDetil.Enabled = True Else MsgBox "data detil kosong" cmdNextDetil.Enabled = False cmdPrevDetil.Enabled = False cmdFirstDetil.Enabled = False cmdLastDetil.Enabled = False cboProduk.Text = "" txtJumlah.Text = "" End If End Sub Private Sub cmdPrevDetil_Click() rsDetil.MovePrevious If rsDetil.BOF Then rsDetil.MoveFirst End If setTextDetil End Sub Private Sub cmdPrint_Click() rptPembelian.Show End Sub
233
Private Sub cmdSave_Click() Dim com As New ADODB.Command Dim sql As String If isitanggal Then validtgl = validasiTanggal(CInt(CboTglP.Text), CInt(CboBlnP.Text), CInt(CboThnP.Text)) If validtgl Then validtgl = validasiTanggal(CInt(CboTglK.Text), CInt(CboBlnK.Text), CInt(CboThnK.Text)) If validtgl Then Dim tglp, tglK As String tglp = CboTglP.Text & "-" & CboBlnP.Text & "-" & CboThnP.Text tglK = CboTglK.Text & "-" & CboBlnK.Text & "-" & CboThnK.Text sql = "insert into pembelian_header values(" & _ "'" & Trim(txtNo.Text) & "','" & tglp & "', '" & Trim(CboCustomer.Text) & "','" & Trim(CboStaf.Text) & "','" & tglK & "')" com.ActiveConnection = con_ com.CommandText = sql com.CommandType = adCmdText com.Execute com.CommandText = "select * from pembelian_header" Set rsHeader = com.Execute 'rsHeader.Requery rsHeader.MoveFirst setTextHeader cmdAdd.Enabled = True cmdCancel.Enabled = False cmdSave.Enabled = False cmdPrev.Enabled = True cmdNext.Enabled = True cmdLast.Enabled = True cmdFirst.Enabled = True CboTglP.Enabled = False CboBlnP.Enabled = False CboThnP.Enabled = False CboTglK.Enabled = False CboBlnK.Enabled = False CboThnK.Enabled = False setEnabledTextHeader (False) End If End If End If End Sub Private Sub cmdSaveDetil_Click() Dim com As New ADODB.Command Dim sql As String com.ActiveConnection = con_ com.CommandType = adCmdText sql = "select count(*) from pembelian_detil where No_sales_contract='" & Trim(txtNo.Text) & "' and kd_produk='" & Trim(cboProduk.Text) & "'" com.CommandText = sql Dim rstemp As New ADODB.Recordset Set rstemp = com.Execute If rstemp(0) = 1 Then
234 MsgBox "Produk sudah ada" Else sql = "insert into pembelian_detil values(" & _ "'" & Trim(txtNo.Text) & "','" & Trim(cboProduk.Text) & "', '" & Trim(txtJumlah.Text) & "')" com.CommandText = sql com.Execute com.CommandText = "select * from pembelian_detil where no_sales_contract='" & Trim(txtNo.Text) & "'" Set rsDetil = com.Execute 'rsDetil.Requery rsDetil.MoveFirst setTextDetil cmdTambahDetil.Enabled = True lblhrg.Enabled = False cmdCancelDetil.Enabled = False cmdSaveDetil.Enabled = False cmdPrevDetil.Enabled = True cmdNextDetil.Enabled = True cmdLastDetil.Enabled = True cmdFirstDetil.Enabled = True cmdSelesai.Enabled = True setEnabledTextDetil (False) End If End Sub Private Sub cmdSelesai_Click() cmdTambahDetil.Enabled = False cmdDetil.Enabled = True cmdSelesai.Enabled = False cmdAdd.Enabled = True cmdFirst.Enabled = True cmdPrev.Enabled = True cmdNext.Enabled = True lblhrg.Enabled = False cmdLast.Enabled = True End Sub Private Sub cmdTambahDetil_Click() setEnabledTextDetil (True) cmdTambahDetil.Enabled = False cmdSaveDetil.Enabled = True cmdCancelDetil.Enabled = True cmdPrevDetil.Enabled = False cmdSelesai.Enabled = False cmdNextDetil.Enabled = False cmdLastDetil.Enabled = False cmdFirstDetil.Enabled = False lblhrg.Enabled = True txtJumlah.Text = "" cboProduk.Text = "" End Sub Private Sub Form_Load()
235 OpenKoneksi Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = "select * from pembelian_header" Set rsHeader = com.Execute cmdFirst_Click If Not (rsHeader.EOF) Or Not (rsHeader.BOF) Then setTextHeader com.CommandText = "select * from pembelian_detil where no_sales_contract='" & rsHeader(0) & "'" Set rsDetil = com.Execute If Not (rsDetil.EOF) Or Not (rsDetil.BOF) Then setTextDetil Else MsgBox "Data detil Kosong" End If Else MsgBox "Data header Kosong"
End If com.CommandText = "select kd_produk from produk" Dim rs As ADODB.Recordset Set rs = com.Execute Do While Not rs.EOF cboProduk.AddItem rs(0) rs.MoveNext Loop com.CommandText = "select kd_supplier from supplier" Set rs = com.Execute Do While Not rs.EOF CboCustomer.AddItem rs(0) rs.MoveNext Loop com.CommandText = "select no_staf from staf" Set rs = com.Execute Do While Not rs.EOF If Not UCase(Trim(rs(0))) = UCase("admin") Then CboStaf.AddItem rs(0) End If rs.MoveNext Loop Dim i As Integer For i = 1 To 31 CboTglP.AddItem i CboTglK.AddItem i Next i For i = 1 To 12 CboBlnP.AddItem i CboBlnK.AddItem i
236 Next i For i = 1990 To 2010 CboThnP.AddItem i CboThnK.AddItem i Next i frmEditPembelian.Left = 0 frmEditPembelian.Top = 0 End Sub Private Sub Form_Unload(Cancel As Integer) closeKoneksi End Sub Private Sub cmdtotal_Click() If Not IsNumeric(txtJumlah.Text) Then MsgBox "jumlah diisi angka" Else If Not (txtJumlah.Text = "") Then lbljumlah.Caption = (Int(Trim(txtJumlah.Text)) * Int(Trim(lblhrg.Caption))) Else MsgBox "Jumlah Barang Harus Diisi" End If End If End Sub 4.2.2.13 Form dbase Pembelian Begin Private Sub Command1_Click() Dim pass As String pass = InputBox("Masukkan Password:", "PT. IPPACHI KARYA SUKSES") If ceklogin(pass) Then Load frmEditPembelian frmEditPembelian.Show Unload Me End If End Sub Private Sub Command2_Click() rptPembelian.Show End Sub Private Sub Form_Load() OpenKoneksi Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = "select * from Pembelian_header h, Pembelian_detil t where (h.no_sales_contract = t.no_sales_contract) order by h.No_sales_contract" Set MSHFlexGrid1.DataSource = com.Execute closeKoneksi frmPembelian.Left = 0 frmPembelian.Top = 0 End Sub
237 4.2.2.14 Form Master Penjualan Begin Option Explicit Dim rsHeader As ADODB.Recordset Dim rsDetil As ADODB.Recordset Dim validtgl As Boolean Public Function isitanggal() As Boolean If CboTglP.Text = "" Or CboBlnP.Text = "" Or CboThnP.Text = "" Then MsgBox "harap isi tanggal, bulan, tahun" isitanggal = False Exit Function End If If CboTglK.Text = "" Or CboBlnK.Text = "" Or CboThnK.Text = "" Then MsgBox "harap isi tanggal, bulan, tahun" isitanggal = False Exit Function End If isitanggal = True End Function
Public Sub setTextHeader() txtNo.Text = Trim(rsHeader(0)) 'txtTransaksi.Text = rsHeader(1) CboCustomer.Text = Trim(rsHeader(2)) CboStaf.Text = Trim(rsHeader(3)) 'txtKirim.Text = rsHeader(4) CboTglP.Text = Day(rsHeader(1)) CboTglK.Text = Day(rsHeader(4)) CboBlnP.Text = Month(rsHeader(1)) CboBlnK.Text = Month(rsHeader(4)) CboThnP.Text = Year(rsHeader(1)) CboThnK.Text = Year(rsHeader(4)) End Sub Public Sub setEnabledTextHeader(nil As Boolean) txtNo.Enabled = nil 'txtTransaksi.Enabled = nil CboCustomer.Enabled = nil CboStaf.Enabled = nil 'txtKirim.Enabled = nil End Sub Public Sub setEnabledTextDetil(nil As Boolean) cboProduk.Enabled = nil txtJumlah.Enabled = nil cmdTotal.Enabled = nil 'txtTempo.Enabled = nil End Sub Public Sub setTextDetil() cboProduk.Text = Trim(rsDetil(1)) txtJumlah.Text = rsDetil(2) 'txtTempo.Text = rsDetil(4) End Sub
238
Private Sub cboProduk_Click() Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandText = "select harga from produk where kd_produk='" & cboProduk.Text & "'" com.CommandType = adCmdText Dim rs As ADODB.Recordset Set rs = com.Execute lblhrg.Caption = rs(0) End Sub Private Sub cmdAdd_Click() setEnabledTextHeader (True) cmdAdd.Enabled = False cmdSave.Enabled = True cmdCancel.Enabled = True cmdPrev.Enabled = False cmdNext.Enabled = False cmdLast.Enabled = False cmdFirst.Enabled = False CboTglP.Enabled = True CboBlnP.Enabled = True CboThnP.Enabled = True CboTglK.Enabled = True CboBlnK.Enabled = True CboThnK.Enabled = True txtNo.Text = "" CboCustomer.Text = "" CboStaf.Text = "" End Sub Private Sub cmdBack_Click() Unload Me Load frmPenjualan frmPenjualan.Show End Sub Private Sub cmdCancel_Click() setEnabledTextHeader (False) setTextHeader cmdAdd.Enabled = True cmdSave.Enabled = False cmdPrev.Enabled = True cmdNext.Enabled = True cmdLast.Enabled = True cmdFirst.Enabled = True cmdCancel.Enabled = False CboTglP.Enabled = False CboBlnP.Enabled = False CboThnP.Enabled = False CboTglK.Enabled = False CboBlnK.Enabled = False CboThnK.Enabled = False End Sub Private Sub cmdCancelDetil_Click()
239 setEnabledTextDetil (False) If Not (rsDetil.BOF) Or Not (rsDetil.EOF) Then setTextDetil End If cmdTambahDetil.Enabled = True cmdSaveDetil.Enabled = False cmdCancelDetil.Enabled = False cmdPrevDetil.Enabled = True cmdNextDetil.Enabled = True lblhrg.Enabled = False cmdLastDetil.Enabled = True cmdSelesai.Enabled = True cmdFirstDetil.Enabled = True
End Sub Private Sub cmdDetil_Click() cmdTambahDetil.Enabled = True cmdDetil.Enabled = False cmdAdd.Enabled = False cmdFirst.Enabled = False cmdPrev.Enabled = False cmdNext.Enabled = False cmdLast.Enabled = False cmdSelesai.Enabled = True End Sub Private Sub cmdFirst_Click() rsHeader.MoveFirst setTextHeader Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandText = "select * from penjualan_detil where no_surat_pesanan='" & rsHeader(0) & "'" com.CommandType = adCmdText Set rsDetil = com.Execute If Not (rsDetil.EOF) Or Not (rsDetil.BOF) Then setTextDetil cmdNextDetil.Enabled = True cmdPrevDetil.Enabled = True cmdFirstDetil.Enabled = True cmdLastDetil.Enabled = True Else MsgBox "data detil kosong" cmdNextDetil.Enabled = False cmdPrevDetil.Enabled = False cmdFirstDetil.Enabled = False cmdLastDetil.Enabled = False cboProduk.Text = "" txtJumlah.Text = "" End If End Sub Private Sub cmdFirstDetil_Click() rsDetil.MoveFirst
240 setTextDetil End Sub Private Sub cmdLast_Click() rsHeader.MoveLast setTextHeader Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandText = "select * from penjualan_detil where no_surat_pesanan='" & rsHeader(0) & "'" com.CommandType = adCmdText Set rsDetil = com.Execute If Not (rsDetil.EOF) Or Not (rsDetil.BOF) Then setTextDetil cmdNextDetil.Enabled = True cmdPrevDetil.Enabled = True cmdFirstDetil.Enabled = True cmdLastDetil.Enabled = True Else MsgBox "data detil kosong" cmdNextDetil.Enabled = False cmdPrevDetil.Enabled = False cmdFirstDetil.Enabled = False cmdLastDetil.Enabled = False cboProduk.Text = "" txtJumlah.Text = "" End If End Sub Private Sub cmdLastDetil_Click() rsDetil.MoveLast setTextDetil End Sub Private Sub cmdNext_Click() rsHeader.MoveNext If rsHeader.EOF Then rsHeader.MoveLast End If setTextHeader Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandText = "select * from penjualan_detil where no_surat_pesanan='" & rsHeader(0) & "'" com.CommandType = adCmdText Set rsDetil = com.Execute If Not (rsDetil.EOF) Or Not (rsDetil.BOF) Then setTextDetil cmdNextDetil.Enabled = True cmdPrevDetil.Enabled = True cmdFirstDetil.Enabled = True cmdLastDetil.Enabled = True Else MsgBox "data detil kosong"
241 cmdNextDetil.Enabled = False cmdPrevDetil.Enabled = False cmdFirstDetil.Enabled = False cmdLastDetil.Enabled = False cboProduk.Text = "" txtJumlah.Text = "" End If End Sub Private Sub cmdNextDetil_Click() rsDetil.MoveNext If rsDetil.EOF Then rsDetil.MoveLast End If setTextDetil End Sub Private Sub cmdPrev_Click() rsHeader.MovePrevious If rsHeader.BOF Then rsHeader.MoveFirst End If setTextHeader Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandText = "select * from penjualan_detil where no_surat_pesanan='" & rsHeader(0) & "'" com.CommandType = adCmdText Set rsDetil = com.Execute If Not (rsDetil.EOF) Or Not (rsDetil.BOF) Then setTextDetil cmdNextDetil.Enabled = True cmdPrevDetil.Enabled = True cmdFirstDetil.Enabled = True cmdLastDetil.Enabled = True Else MsgBox "data detil kosong" cmdNextDetil.Enabled = False cmdPrevDetil.Enabled = False cmdFirstDetil.Enabled = False cmdLastDetil.Enabled = False cboProduk.Text = "" txtJumlah.Text = "" End If End Sub Private Sub cmdPrevDetil_Click() rsDetil.MovePrevious If rsDetil.BOF Then rsDetil.MoveFirst End If setTextDetil
242 End Sub Private Sub cmdPrint_Click() rptPenjualan.Show End Sub Private Sub cmdSave_Click() Dim com As New ADODB.Command Dim sql As String If isitanggal Then validtgl = validasiTanggal(CInt(CboTglP.Text), CInt(CboBlnP.Text), CInt(CboThnP.Text)) If validtgl Then validtgl = validasiTanggal(CInt(CboTglK.Text), CInt(CboBlnK.Text), CInt(CboThnK.Text)) If validtgl Then Dim tglp, tglK As String tglp = CboTglP.Text & "-" & CboBlnP.Text & "-" & CboThnP.Text tglK = CboTglK.Text & "-" & CboBlnK.Text & "-" & CboThnK.Text sql = "insert into penjualan_header values(" & _ "'" & Trim(txtNo.Text) & "','" & tglp & "', '" & Trim(CboCustomer.Text) & "','" & Trim(CboStaf.Text) & "','" & tglK & "')" com.ActiveConnection = con_ com.CommandText = sql com.CommandType = adCmdText com.Execute com.CommandText = "select * from penjualan_header" Set rsHeader = com.Execute 'rsHeader.Requery rsHeader.MoveFirst setTextHeader cmdAdd.Enabled = True cmdCancel.Enabled = False cmdSave.Enabled = False cmdPrev.Enabled = True cmdNext.Enabled = True cmdLast.Enabled = True cmdFirst.Enabled = True CboTglP.Enabled = False CboBlnP.Enabled = False CboThnP.Enabled = False CboTglK.Enabled = False CboBlnK.Enabled = False CboThnK.Enabled = False setEnabledTextHeader (False) End If End If End If End Sub Private Sub cmdSaveDetil_Click() Dim com As New ADODB.Command Dim sql As String com.ActiveConnection = con_ com.CommandType = adCmdText
243 sql = "select count(*) from penjualan_detil where No_surat_pesanan='" & Trim(txtNo.Text) & "' and kd_produk='" & Trim(cboProduk.Text) & "'" com.CommandText = sql Dim rstemp As New ADODB.Recordset Set rstemp = com.Execute If rstemp(0) = 1 Then MsgBox "Produk sudah ada" Else sql = "insert into penjualan_detil values(" & _ "'" & Trim(txtNo.Text) & "','" & Trim(cboProduk.Text) & "','" & Trim(txtJumlah.Text) & "')" com.CommandText = sql com.Execute com.CommandText = "select * from penjualan_detil where no_surat_pesanan='" & Trim(txtNo.Text) & "'" Set rsDetil = com.Execute rsDetil.MoveFirst setTextDetil cmdTambahDetil.Enabled = True lblhrg.Enabled = False cmdCancelDetil.Enabled = False cmdSaveDetil.Enabled = False cmdPrevDetil.Enabled = True cmdNextDetil.Enabled = True cmdLastDetil.Enabled = True cmdFirstDetil.Enabled = True cmdSelesai.Enabled = True setEnabledTextDetil (False) End If End Sub Private Sub cmdSelesai_Click() cmdTambahDetil.Enabled = False cmdDetil.Enabled = True cmdSelesai.Enabled = False cmdAdd.Enabled = True cmdFirst.Enabled = True cmdPrev.Enabled = True cmdNext.Enabled = True lblhrg.Enabled = False cmdLast.Enabled = True End Sub Private Sub cmdTambahDetil_Click() setEnabledTextDetil (True) cmdTambahDetil.Enabled = False cmdSaveDetil.Enabled = True cmdCancelDetil.Enabled = True cmdPrevDetil.Enabled = False cmdSelesai.Enabled = False cmdNextDetil.Enabled = False cmdLastDetil.Enabled = False cmdFirstDetil.Enabled = False lblhrg.Enabled = True
244 txtJumlah.Text = "" cboProduk.Text = "" End Sub Private Sub Form_Load() OpenKoneksi Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = "select * from penjualan_header" Set rsHeader = com.Execute cmdFirst_Click If Not (rsHeader.EOF) Or Not (rsHeader.BOF) Then setTextHeader com.CommandText = "select * from penjualan_detil where no_surat_pesanan='" & rsHeader(0) & "'" Set rsDetil = com.Execute If Not (rsDetil.EOF) Or Not (rsDetil.BOF) Then setTextDetil Else MsgBox "Data detil Kosong" End If Else MsgBox "Data header Kosong"
End If com.CommandText = "select kd_produk from produk" Dim rs As ADODB.Recordset Set rs = com.Execute Do While Not rs.EOF cboProduk.AddItem rs(0) rs.MoveNext Loop com.CommandText = "select kd_customer from customer" Set rs = com.Execute Do While Not rs.EOF CboCustomer.AddItem rs(0) rs.MoveNext Loop com.CommandText = "select no_staf from staf" Set rs = com.Execute Do While Not rs.EOF If Not UCase(Trim(rs(0))) = UCase("admin") Then CboStaf.AddItem rs(0) End If rs.MoveNext Loop Dim i As Integer For i = 1 To 31 CboTglP.AddItem i CboTglK.AddItem i
245 Next i For i = 1 To 12 CboBlnP.AddItem i CboBlnK.AddItem i Next i For i = 1990 To 2010 CboThnP.AddItem i CboThnK.AddItem i Next i frmEditPenjualan.Left = 0 frmEditPenjualan.Top = 0 End Sub Private Sub Form_Unload(Cancel As Integer) closeKoneksi End Sub Private Sub cmdtotal_Click() If Not (txtJumlah.Text = "") Then lbltotal.Caption = (Int(Trim(txtJumlah.Text)) * Int(Trim(lblhrg.Caption))) Else MsgBox "Jumlah Barang Harus Diisi" End If 4.2.2.15 Form dbase Penjualan Begin Private Sub Command1_Click() Dim pass As String pass = InputBox("Masukkan Password:", "PT. IPPACHI KARYA SUKSES") If ceklogin(pass) Then Load frmEditPenjualan frmEditPenjualan.Show Unload Me End If End Sub Private Sub Command2_Click() rptPenjualan.Show End Sub Private Sub Form_Load() OpenKoneksi Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = "select * from Penjualan_header h left outer join Penjualan_detil t on h.no_surat_pesanan = t.no_surat_pesanan order by h.no_surat_pesanan" Set MSHFlexGrid1.DataSource = com.Execute closeKoneksi frmPenjualan.Left = 0 frmPenjualan.Top = 0 End Sub
246 4.2.2.16 Form Master Persediaan Option Explicit Dim rs As New ADODB.Recordset Dim action As Integer Dim kodeBrg As String Public Function validasiText() Dim valid As Boolean valid = False If Trim(cboBarang.Text) = "" Then MsgBox "Kode Barang Harus Dipilih" txtJumlah.SetFocus Exit Function Else valid = True End If If Trim(txtJumlah.Text) = "" Then MsgBox "Jumlah Barang Harus Diisi" cboBarang.SetFocus Exit Function Else valid = True End If validasiText = valid End Function Private Function adaBarang(kodeBarang As String) Dim ada As Boolean ada = False Dim com As New ADODB.Command Dim rs As ADODB.Recordset Dim sql As String sql = "select count(*) from persediaan_barang_produk where kd_Barang='" & kodeBarang & "'" com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = sql Set rs = com.Execute If rs(0) = 1 Then ada = True End If adaBarang = ada End Function
Private Sub cmdAdd_Click() cboBarang.Text = "" txtJumlah.Text = "" setEnabledText (True) cboBarang.SetFocus action = 1 cmdPrev.Enabled = False cmdNext.Enabled = False
247 cmdLast.Enabled = False cmdFirst.Enabled = False cmdSave.Enabled = True cmdCancel.Enabled = True cmdUpdate.Enabled = False End Sub Private Sub cmdBack_Click() Unload Me Load frmPersediaanbrg frmPersediaanbrg.Show End Sub Private Sub cmdCancel_Click() setEnabledText (False) setText cmdUpdate.Enabled = True cmdSave.Enabled = False cmdCancel.Enabled = False cmdPrev.Enabled = True cmdNext.Enabled = True cmdLast.Enabled = True cmdFirst.Enabled = True End Sub Private Sub cmdSave_Click() Dim com As New ADODB.Command Dim sql As String If validasiText Then 'buat update sql = "update persediaan_barang_produk " & _ "set kd_barang='" & Trim(cboBarang.Text) & "', jumlah='" & Trim(txtJumlah.Text) & "'" & _ " where kd_barang='" & kodeBrg & "'" com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = sql com.Execute 'If Not (Trim(cboBarang.Text) = Trim(kodeBrg)) Then 'If adaBarang(kodeBrg) Then 'MsgBox "Kode Bahan Baku Sudah Ada" 'Exit Sub 'Else 'com.Execute 'End If 'Else 'com.Execute 'End If com.CommandText = "select * from persediaan_barang_produk" Set rs = com.Execute 'rs.Requery setText cmdPrev.Enabled = True cmdNext.Enabled = True cmdLast.Enabled = True
248 cmdFirst.Enabled = True cmdUpdate.Enabled = True cmdCancel.Enabled = False cmdSave.Enabled = False setEnabledText (False) End If End Sub Public Sub setText() cboBarang.Text = Trim(rs(0)) txtJumlah.Text = Trim(rs(1)) End Sub Public Sub setEnabledText(nil As Boolean) txtJumlah.Enabled = nil cboBarang.Enabled = nil End Sub Private Sub cmdFirst_Click() If Not (rs.EOF) Or Not (rs.BOF) Then rs.MoveFirst setText End If End Sub Private Sub cmdLast_Click() If Not (rs.BOF) Or Not (rs.EOF) Then rs.MoveLast setText End If End Sub Private Sub cmdNext_Click() If Not (rs.BOF) Or Not (rs.EOF) Then rs.MoveNext If rs.EOF Then rs.MoveLast End If setText End If End Sub Private Sub cmdPrev_Click() If Not (rs.BOF) Or Not (rs.EOF) Then rs.MovePrevious If rs.BOF Then rs.MoveFirst End If setText End If End Sub Private Sub cmdUpdate_Click() setEnabledText (True) cboBarang.SetFocus action = 2 kodeBrg = cboBarang.Text
249 cmdPrev.Enabled = False cmdNext.Enabled = False cmdLast.Enabled = False cmdFirst.Enabled = False cmdSave.Enabled = True cmdCancel.Enabled = True End Sub Private Sub Form_Load() OpenKoneksi Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = "select * from persediaan_barang_produk" Set rs = com.Execute If Not (rs.EOF) Or Not (rs.BOF) Then setText setEnabledText (False) Else MsgBox "Data Kosong" cmdUpdate.Enabled = True End If
com.CommandText = "select kd_Barang from Barang" Dim rsbhn As ADODB.Recordset Set rsbhn = com.Execute Do While Not rsbhn.EOF cboBarang.AddItem rsbhn(0) rsbhn.MoveNext Loop frmEditPersediaanBrg.Left = 0 frmEditPersediaanBrg.Top = 0 End Sub Private Sub Form_Unload(Cancel As Integer) closeKoneksi End Sub 4.2.2.17 Form dbase Persediaan Private Sub Command1_Click() Dim pass As String pass = InputBox("Masukkan Password:", "PT. IPPACHI KARYA SUKSES") If ceklogin(pass) Then Load frmEditPersediaanBrg frmEditPersediaanBrg.Show Unload Me End If End Sub
Private Sub Form_Load() OpenKoneksi Dim com As New ADODB.Command
250 com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = "select * from persediaan_barang_produk order by kd_barang" Set MSHFlexGrid1.DataSource = com.Execute closeKoneksi frmPersediaanbrg.Left = 0 frmPersediaanbrg.Top = 0 End Sub 4.2.2.18 Form Surat Jalan Option Explicit Dim rs As New ADODB.Recordset Dim action As Integer Dim kodeBrg As String Dim validtgl As Boolean Public Function isitanggal() As Boolean If CboTgl.Text = "" Or CboBln.Text = "" Or CboThn.Text = "" Then MsgBox "harap isi tanggal, bulan, tahun" isitanggal = False Exit Function End If isitanggal = True End Function
Public Function validasiText() Dim valid As Boolean valid = False If Trim(txtNo.Text) = "" Then MsgBox "Nomor Surat Harus Diisi" txtNo.SetFocus Exit Function Else valid = True End If validasiText = valid End Function Private Function adaBarang(kodeBarang As String) Dim ada As Boolean ada = False Dim com As New ADODB.Command Dim rs As ADODB.Recordset Dim sql As String sql = "select count(*) from surat_jalan where no_surat='" & kodeBarang & "'" com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = sql Set rs = com.Execute If rs(0) = 1 Then ada = True
251 End If adaBarang = ada End Function Private Sub cmdAdd_Click() txtNo.Text = "" CboTgl.Text = "" CboBln.Text = "" CboThn.Text = "" CboFaktur = "" setEnabledText (True) txtNo.SetFocus action = 1 cmdPrev.Enabled = False cmdNext.Enabled = False cmdLast.Enabled = False cmdFirst.Enabled = False cmdSave.Enabled = True cmdCancel.Enabled = True cmdUpdate.Enabled = False cmdDelete.Enabled = False End Sub Private Sub cmdBack_Click() Unload Me Load frmSuratJalan frmSuratJalan.Show End Sub Private Sub cmdCancel_Click() setEnabledText (False) setText cmdAdd.Enabled = True cmdUpdate.Enabled = True cmdDelete.Enabled = True cmdSave.Enabled = False cmdCancel.Enabled = False cmdPrev.Enabled = True cmdNext.Enabled = True cmdLast.Enabled = True cmdFirst.Enabled = True End Sub Private Sub cmdDelete_Click() Dim com As New ADODB.Command Dim sql As String If MsgBox("Hapus Data ?", vbYesNo + vbQuestion) = vbYes Then sql = "delete from surat_jalan where no_surat='" & Trim(txtKode.Text) & "'" com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = sql com.Execute rs.Requery rs.MoveFirst setText
252 End If End Sub
Private Sub cmdSave_Click() Dim com As New ADODB.Command Dim sql As String If isitanggal Then If validasiText Then validtgl = validasiTanggal(CInt(CboTgl.Text), CInt(CboBln.Text), CInt(CboThn.Text)) If validtgl Then Dim tgl As String tgl = CboTgl.Text & "-" & CboBln.Text & "-" & CboThn.Text Select Case action Case 1: 'buat add sql = "insert into surat_jalan values(" & _ "'" & Trim(txtNo.Text) & "','" & Trim(CboFaktur.Text) & "','" & tgl & "'" com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = sql If adaBarang(txtNo.Text) Then MsgBox "Nomor Surat Jalan Sudah Ada" Exit Sub Else com.Execute End If sql = "select * from surat_jalan" com.CommandText = sql Set rs = com.Execute rs.MoveFirst setText Case 2: 'buat update sql = "update surat_jalan " & _ "set no_surat='" & Trim(txtNo.Text) & "',no_faktur_penj='" & Trim(CboFaktur.Text) & "', tgl_keluar = '" & tgl & "'" & _ " where no_surat='" & kodeBrg & "'" com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = sql If Not (Trim(txtNo.Text) = Trim(kodeBrg)) Then If adaBarang(txtNo.Text) Then MsgBox "Nomor Surat Jalan Sudah Ada" Exit Sub Else com.Execute End If Else com.Execute End If sql = "select * from surat_jalan" com.CommandText = sql Set rs = com.Execute setText End Select
253 cmdPrev.Enabled = True cmdNext.Enabled = True cmdLast.Enabled = True cmdFirst.Enabled = True cmdAdd.Enabled = True cmdUpdate.Enabled = True cmdCancel.Enabled = False cmdSave.Enabled = False cmdDelete.Enabled = True setEnabledText (False) End If End If End If End Sub Public Sub setText() txtNo.Text = Trim(rs(0)) CboFaktur.Text = Trim(rs(1)) CboTgl.Text = Day(rs(2)) CboBln.Text = Month(rs(2)) CboThn.Text = Year(rs(2)) End Sub Public Sub setEnabledText(nil As Boolean) txtNo.Enabled = nil CboFaktur.Enabled = nil CboTgl.Enabled = nil CboBln.Enabled = nil CboThn.Enabled = nil End Sub Private Sub cmdFirst_Click() If Not (rs.EOF Or rs.BOF) Then rs.MoveFirst setText End If End Sub Private Sub cmdLast_Click() If Not (rs.BOF) Or Not (rs.EOF) Then rs.MoveLast setText End If End Sub Private Sub cmdNext_Click() If Not (rs.EOF Or rs.BOF) Then rs.MoveNext If rs.EOF Then rs.MoveLast End If setText End If End Sub Private Sub cmdPrev_Click()
254 If Not (rs.EOF Or rs.BOF) Then rs.MovePrevious If rs.BOF Then rs.MoveFirst End If setText End If End Sub Private Sub cmdUpdate_Click() setEnabledText (True) txtNo.SetFocus action = 2 kodeBrg = txtKode.Text cmdPrev.Enabled = False cmdNext.Enabled = False cmdLast.Enabled = False cmdFirst.Enabled = False cmdSave.Enabled = True cmdCancel.Enabled = True cmdAdd.Enabled = False cmdDelete.Enabled = False End Sub Private Sub Form_Load() OpenKoneksi Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = "select * from surat_jalan" Set rs = com.Execute cmdFirst_Click If Not (rs.EOF) Or Not (rs.BOF) Then setText setEnabledText (False) Else MsgBox "Data Kosong" cmdUpdate.Enabled = False cmdDelete.Enabled = False End If Dim rsfaktur As ADODB.Recordset com.CommandText = "select no_faktur_penj from penjualan_header" Set rsfaktur = com.Execute Do While Not rsfaktur.EOF CboFaktur.AddItem rsfaktur(0) rsfaktur.MoveNext Loop Dim i As Integer For i = 1 To 31 CboTgl.AddItem i Next i For i = 1 To 12 CboBln.AddItem i Next i For i = 1990 To 2010 CboThn.AddItem i
255 Next i frmEditSuratJalan.Left = 0 frmEditSuratJalan.Top = 0 End Sub Private Sub Form_Unload(Cancel As Integer) closeKoneksi End Sub 4.2.2.19 Form dbase Surat Jalan Private Sub Command1_Click() Dim pass As String pass = InputBox("Masukkan Password:", "PT. IPPACHI KARYA SUKSES") If ceklogin(pass) Then Load frmEditSuratJalan frmEditSuratJalan.Show Unload Me End If End Sub Private Sub Form_Load() OpenKoneksi Dim com As New ADODB.Command com.ActiveConnection = con_ com.CommandType = adCmdText com.CommandText = "select * from surat_jalan order by no_surat" Set MSHFlexGrid1.DataSource = com.Execute closeKoneksi frmSuratJalan.Left = 0 frmSuratJalan.Top = 0 End Sub 4.2.2.20 Form Output Surat Jalan Begin Read suratJalan record, penjualan record, trPesananProduksiHeader record, trPesananProduksiDetail record, barangJadi record, pembeli record, daftarTeleponPembeli record DoWhile more records exist Display noSuratJalan, tglSuratJalan, noKendaraan, noFakturPenjualan, noPro, kodePembeli, perusahaanPembeli,upPembeli, alamatPembeli, teleponPembeli, kodeBarang, namaBarang, satuanBarang,ketBarang, jumlahBarang, ketFinishing Read suratJalan record, penjualan record, trPesananProduksiHeader record, trPesananProduksiDetail record, barangJadi record, pembeli record, daftarTeleponPembeli record EndDo End 4.2.2.21 Form Pembayaran Penjualan Begin If SSTabInputPembayaranPenjualan Then Call SSTab Input Pembayaran Penjualan Else If SSTabViewAllPembayaranPenjualan Then Call SSTabView All Pembayaran Penjualan Else
256 If BackToMenuUtama Then Close Form Pembayaran Penjualan Call Form Menu Utama EndIf EndIf EndIf End
4.2.2.22 Form Laporan Pembelian Begin If BackToMenuUtama Then Close Form Laporan Pembelian Call Form Menu Utama Else If Cmd_View Then Get DTPicker1, DTPicker2 If DTPicker2
4.2.2.24 Form Laporan Pembayaran Penjualan Begin If BackToMenuUtama Then Close Form Laporan Pembayaran Penjualan Call Form Menu Utama Else If Cmd_View Then Get DTPicker1, DTPicker2 If DTPicker2
257 Display message=’Date incorrect’ Else Read pembayaranPenjualan record, penjualan record, giro record, bank record Close Form Laporan Pembayaran Penjualan Call Form Laporan CRPembayaranPenjualan EndIf EndIf End 4.2.2.25 Form Laporan Pembayaran Pembelian Begin If BackToMenuUtama Then Close Form Laporan Pembayaran Pembelian Call Form Menu Utama Else If Cmd_View Then Get DTPicker1, DTPicker2 If DTPicker2
258
4.2.3 Rancangan Struktur Menu Dalam tahap ini, akan ditampilkan bagan struktur menu dari program atau aplikasi yang telah dibuat. Adapun rancangan struktur menunya adalah sebagai berikut: Gambar 4.45 Struktur Menu
259
4.2.4 STD
Gambar 4.46 STD Login
260
Gambar 4.47 STD MDIForm
Gambar 4.48 STD User
261
Gambar 4.49 STD Database
Master Staf
Pilih Staf Menampilkan Halaman Master Staf
Pilih Supplier Menampilkan Halaman Master Supplier
Master Supplier
Database
Master Customer
Pilih Customer Menampilkan Halaman Master Customer
Pilih Produk Menampilkan Halaman Master Produk
Gambar 4.50 STD Master Staf
Master Produk
262 Gambar 4.51 STD Master Telepon Staf
Gambar 4.52 STD Master Handphone Staf
263
Gambar 4.53 STD Master Supplier
264 Gambar 4.54 STD Master Telepon Supplier
Gambar 4.55 STD Master Fax Supplier
265 Gambar 4.56 STD Master Customer
Gambar 4.57 STD Master Telepon Customer
266 Gambar 4.58 STD Master Handphone Customer
Gambar 4.59 STD Master Fax Customer
267 Gambar 4.60 STD Master Produk
268 Gambar 4.61 STD Transaksi Pembelian
269 Gambar 4.62 STD Produk Pembelian
Gambar 4.63 STD Delivery Order
270
Gambar 4.64 STD Transaksi Persediaan
271 Gambar 4.65 STD Transaksi Penjualan
Gambar 4.66 STD Penjualan Produk
272 4.2.5
Rencana Implementasi 4.2.5.1 Spesifikasi Perangkat Keras Minimum requirement perangkat keras yang diperlukan dalam implementasi aplikasi basisdata pada PT. Ippachi Karya Sukses adalah sebagai berikut : 1.
2.
Server Processor
:
Intel Pentium IV
Memory
:
512 MB
Hardisk
:
space kosong sebanyak 800 MB
Monitor
:
SVGA 15”
Printer
:
Standar
Back up
:
USB Flash Disk 1 GB
Kabel LAN
:
UTP
Processor
:
Intel Pentium Celeron
Memory
:
256 MB
Hardisk
:
space kosong sebanyak 800 MB
Monitor
:
SVGA 15”
Printer
:
Standar
Kabel LAN
:
UTP
Client
273 4.2.5.2 Spesifikasi Perangkat Lunak Spesifikasi perangkat lunak yang diperlukan dalam implementasi aplikasi basis data pada PT. Ippachi Karya Sukses adalah sebagai berikut : 1.
Server Sistem Operasi Microsoft Windows 2000 Server Database Microsoft SQL Server 2000 v8.0 Microsoft Visual Studio 6.0 Crystal Report v8.5
2.
Client Sistem Operasi Microsoft Windows XP Service Pack 2 Database Microsoft SQL Server 2000 v8.0 Microsoft Visual Studio 6.0 Crystal Report v8.5
4.2.5.3 Kebutuhan People (Brainware) Adapun kebutuhan people yang dibutuhkan dalam implementasi aplikasi basis data pada PT. Ippachi Karya Sukses adalah sebagai berikut : 1.
Database Administrator, yaitu orang yang bertanggung jawab atas realisasi fisikal pada basis data, termasuk perancangan
basis
data
fisikal
dan
implementasi,
keamanan, dan kontrol integritas, maintenance, sistem
274 operasi, dan memastikan kinerja yang baik pada aplikasi agar user dapat menggunakannya dengan baik. 2.
Personal Data Entry, yaitu orang yang terlatih untuk memanipulasi data, seperti penambahan, pengubahan dan penghapusan data, dalam hal ini dibagi dalam dua bagian, yaitu inventory dan administrasi.
3.
Technical Support, yaitu orang yang tugasnya berorientasi pada masalah-masalah teknis, seperti masalah jaringan dan perangkat keras.
4.2.5.4
Jadwal Implementasi Aplikasi basis data yang telah dirancang dijadwalkan
untuk
diimplementasikan
ke
dalam
perusahaan
sebagai
pengganti sistem manual. Jadwal implementasi terhadap aplikasi basis data yang diusulkan adalah seperti terlihat pada tabel berikut :
275 Tabel 4.45
Jadwal Implementasi Minggu
Kegiatan
1 2 3 4 5 6 7 8 9 x
Pembentukan Tim Instalasi Hardware dan Jaringan
x x
Instalasi Software
x x
Testing
x x
Training
x x
Evaluasi sistem
4.2.6 Cara Pengoperasian Aplikasi Basisdata Aplikasi dimulai dengan mengoperasikan ippachi.exe, kemudian akan ditampilkan layar login.
Layar login
Gambar 4.67 Menu Login
276
Pada layar ini, user diminta untuk memasukkan NIP serta password, dimana NIP menentukan hak akses dari user ke basisdata. Tombol login berfungsi untuk memvalidasi NIP dan password apakah benar atau tidak. Bila benar, halaman menu utama akan muncul. Bila salah, user akan diminta untuk mengisi NIP dan password lagi. Tombol batal digunakan untuk membatalkan login dan keluar dari program.
Layar Menu Utama
Gambar 4.68 Layar Menu Utama
Dalam menu utama, ada tiga menu pokok yang bisa dipilih oleh user sesuai dengan kebutuhan user.
277
Gambar 4.69 Layar Menu Utama SubMenu User
Pada SubMenu ”user”, user dapat merubah password, logout dari program, atau keluar dari program.
Gambar 4.70 Layar Utama SubMenu Database
Pada SubMenu ”database”, user dapat memilih database mana yang mau diakses sesuai dengan kebutuhan dan hak akses masing-masing user.
278
Gambar 4.71 Layar Utama SubMenu Cetak
Pada SubMenu ”cetak”, user dapat mencetak laporan pembelian, laporan penjualan dan laporan persediaan.
Layar Ubah Password
Gambar 4.72 Layar Ubah Password
Pada layar ubah password, user akan diminta untuk memasukkan password lama sebanyak satu kali, kemudian password baru yang dikehendaki sebanyak dua kali. Tombol simpan berfungsi untuk
279 menyimpan password baru yang telah dimasukkan. Tombol batal digunakan untuk membatalkan pengubahan password.
Layar Menu Database Produk
Gambar 4.73 Layar Menu Database Produk
Pada layar produk, user dapat melihat data produk yang ada. Tombol edit digunakan untuk masuk ke dalam submenu edit database produk
280 Layar Edit Database Produk
Gambar 4.74 Layar Edit Database Produk Pada menu edit database produk, user dapat mengubah, menambahkan, atau menghapus data produk yang ada di database. Tombol ”<<”, ”<”, ”>”, ”>>”, berfungsi untuk melihat produk sebelum atau selanjutnya. Tombol ”tambah”, digunakan untuk menambah produk baru ke dalam database. Tombol ”update” berfungsi untuk mengupdate data dari produk yang sedang dipilih. Tombol ”hapus” digunakan untuk menghapus data produk yang sedang dipilih. Tombol ”simpan” berfungsi untuk menyimpan data yang diedit oleh user. Tombol ”batal” befungsi untuk membatalkan data yang di edit oleh user. Dan tombol ”Kembali ke menu database” digunakan untuk kembali ke menu database produk.
281 Layar Menu Database Staf
Gambar 4.75 Menu Database Staff
Pada menu database staf ini, user dapat melihat data staff yang bekerja di PT. Ippachi Karya Sukses. Tombol ”edit” berfungsi untuk mengedit database staff ini.
282
Layar Edit Database Staff
Gambar 4.76 Edit Staff Pada menu edit database staf, user dapat menambah atau mengupdate atau menghapus data staf dari database. Tombol ”<<”, ”<”, ”>”, ”>>”, berfungsi untuk melihat data staf sebelum atau selanjutnya. Tombol ”tambah”, digunakan untuk menambahkan staf baru ke dalam database. Tombol ”update” berfungsi untuk mengupdate data dari staf yang sedang dipilih. Tombol ”hapus” digunakan untuk menghapus data staf yang sedang dipilih. Tombol ”simpan” berfungsi untuk menyimpan data yang diedit oleh user. Tombol ”batal” befungsi untuk membatalkan data yang di edit oleh user. Dan tombol ”Kembali ke menu database” digunakan untuk kembali ke menu database staf.
283 Layar Menu Database Customer
Gambar 4.77 Menu Database Customer
Pada menu database customer, user dapat melihat data customer yang ada di database. Tombol ”edit” berfungsi untuk mengedit database customer.
284 Layar Edit Database Customer
Gambar 4.78 Layar Edit Database Customer
Pada menu edit database customer, user dapat menambahkan atau menghapus atau mengupdate data customer yang ada di database. Tombol ”<<”, ”<”, ”>”, ”>>”, berfungsi untuk melihat data customer sebelum atau selanjutnya. Tombol ”tambah”, digunakan untuk menambah customer baru ke dalam database. Tombol ”update” berfungsi untuk mengupdate data dari customer yang sedang dipilih. Tombol ”hapus” digunakan untuk menghapus data customer yang sedang dipilih. Tombol ”simpan” berfungsi untuk menyimpan data yang diedit oleh user. Tombol ”batal” befungsi untuk membatalkan data yang di edit oleh user. Dan tombol ”Kembali ke menu database” digunakan untuk kembali ke menu database customer.
285 Layar Database Pembelian
Gambar 4.79 Layar Menu Database Pembelian
Pada menu database pembelian, user dapat melihat transaksi pembelian barang yang dilakukan PT. Ippachi Karya Sukses. Tombol ”edit” berfungsi utuk mengedit database pembelian.
286 Layar Edit Database Pembelian
Gambar 4.80 Layar Edit Database Pembelian
Pada menu edit database pembelian, user dapat menambahkan data order pembelian yang akan dilakukan ke dalam database. Terdapat dua bagian utama pada menu ini yaitu ’pembelian header’ serta ’pembelian detil’. Tombol ”<<”, ”<”, ”>”, ”>>”, berfungsi untuk melihat data pembelian header maupun detail sebelum atau selanjutnya. Tombol ”tambah”, digunakan untuk menambah data pembelian header atau pembelian detil baru ke dalam database. Tombol ”simpan” berfungsi untuk menyimpan data yang diedit oleh user. Tombol ”batal” befungsi untuk membatalkan data yang di edit oleh user. Tombol ”tambah detil”
287 berfungsi untuk mengaktifkan ’pembelian detil’ sehingga bisa ditambah datanya. Tombol ”selesai tambah detil” digunakan untuk menyudahi penambahan detil. Tombol ”#” digunakan untuk mengkalkulasi total harga pembelian. Dan tombol ”Kembali ke menu database” digunakan untuk kembali ke menu database pembelian. Layar Menu Database Penerimaan
Gambar 4.81 Layar Menu Database Penerimaan
Pada menu database penerimaan, user dapat melihat data penerimaan barang yang ada di database. Tombol edit digunakan untuk mengedit database penerimaan.
288 Layar Edit Database Penerimaan
Gambar 4.82 Layar Edit Database Penerimaan Barang
Pada menu ini, user dapat menambah atau mengupdate atau menghapus data penerimaan barang yang ada di database. Tombol ”<<”, ”<”, ”>”, ”>>”, berfungsi untuk melihat data penerimaan barang sebelum atau selanjutnya. Tombol ”tambah”, digunakan untuk menambah data penerimaan barang baru ke dalam database. Tombol ”update” berfungsi untuk mengupdate data penerimaan barang yang sedang dipilih. Tombol ”hapus” digunakan untuk menghapus data penerimaan barang yang sedang dipilih. Tombol ”simpan” berfungsi untuk menyimpan data yang diedit oleh user. Tombol ”batal” befungsi untuk membatalkan data yang di edit oleh user. Dan tombol ”Kembali ke menu database” digunakan untuk kembali ke menu database penerimaan barang.
289 Layar Menu Database Penjualan
Gambar 4.83 Layar Menu Database Penjualan Barang
Pada menu database penjualan barang, user dapat melihat data transaksi penjualan yang ada di database. Tombol ”edit” digunakan utnuk mengedit database penjualan barang.
290 Layar Edit Database Penjualan
Gambar 4.84 Layar Edit Database Penjualan
Pada menu edit database penjualan, user dapat menambahkan data transaksi penjualan yang akan dilakukan ke dalam database. Terdapat dua bagian utama pada menu ini yaitu ’penjualan header’ serta ’penjualan detil’. Tombol ”<<”, ”<”, ”>”, ”>>”, berfungsi untuk melihat data penjualan header maupun detail sebelum atau selanjutnya. Tombol ”tambah”, digunakan untuk menambah data penjualan header atau pembelian detil baru ke dalam database. Tombol ”simpan” berfungsi untuk menyimpan data yang diedit oleh user. Tombol ”batal” befungsi untuk membatalkan data yang di edit oleh user. Tombol ”tambah detil” berfungsi untuk mengaktifkan ’penjualan detil’ sehingga bisa ditambah
291 datanya. Tombol ”selesai tambah detil” digunakan untuk menyudahi penambahan detil. Tombol ”#” digunakan untuk mengkalkulasi total harga penjualan. Dan tombol ”Kembali ke menu database” digunakan untuk kembali ke menu database penjualan. Layar Menu Database Persediaan Barang
Gambar 4.85 Layar Menu Database Persediaan Barang
Pada menu database persediaan barang, user dapat melihat data persediaan barang yang ada di database. Tombol ”edit” berfungsi untuk mengedit database persediaan barang.
292 Layar Edit Database Persediaan Barang
Gambar 4.86 Layar Edit Persediaan Barang
Pada menu ini, user dapat mengupdate data jumlah barang produk yang dipilih. Tombol ”<<”, ”<”, ”>”, ”>>”, berfungsi untuk melihat data produk sebelum atau selanjutnya. Tombol ”update” berfungsi untuk mengupdate data produk yang sedang dipilih. Tombol ”simpan” berfungsi untuk menyimpan data yang diedit oleh user. Tombol ”batal” befungsi untuk membatalkan data yang di edit oleh user. Dan tombol ”Kembali” digunakan untuk kembali ke menu database persediaan barang..
293
Layar Menu Database Supplier
Gambar 4.87 Layar Menu Database Supplier
Pada menu database supplier, user dapat melihat data supplier yang ada di database. Tombol ”edit” berfungsi untuk mengedit database supplier.
294
Layar Edit Database Supplier
Gambar 4.88 Layar Edit Database Supplier
Pada menu ini, user dapat menambah atau mengupdate atau menghapus data supplier yang ada di database. Tombol ”<<”, ”<”, ”>”, ”>>”, berfungsi untuk melihat data supplier sebelum atau selanjutnya. Tombol ”tambah”, digunakan untuk menambah supplier baru ke dalam database. Tombol ”update” berfungsi untuk mengupdate data dari supplier yang sedang dipilih. Tombol ”hapus” digunakan untuk menghapus data supplier yang sedang dipilih. Tombol ”simpan” berfungsi untuk menyimpan data yang diedit oleh user. Tombol ”batal” befungsi untuk membatalkan data yang di edit oleh user. Dan tombol ”Kembali ke menu database” digunakan untuk kembali ke menu database supplier.
295 Layar Menu Database Surat Jalan
Gambar 4.89 Layar Menu Database Surat Jalan
Pada menu ini, user dapat melihat data surat jalan yang ada di database. Tombol ”edit” berfungsi unutk mengedit data surat jalan.
296 Layar Edit Database Surat Jalan
Gambar 4.90 Layar Edit Database Surat Jalan
Pada menu ini, user dapat menambah atau mengupdate atau menghapus data surat jalan yang ada di database. Tombol ”<<”, ”<”, ”>”, ”>>”, berfungsi untuk melihat data surat jalan sebelum atau selanjutnya. Tombol ”tambah”, digunakan untuk menambah surat jalan baru ke dalam database. Tombol ”update” berfungsi untuk mengupdate data dari surat jalan yang sedang dipilih. Tombol ”hapus” digunakan untuk menghapus data surat jalan yang sedang dipilih. Tombol ”simpan” berfungsi untuk menyimpan data yang diedit oleh user. Tombol ”batal” befungsi untuk membatalkan data yang di edit oleh user. Dan tombol ”Kembali ke menu database” digunakan untuk kembali ke menu database surat jalan.
297
Layar Menu Cetak Laporan Pembelian
Gambar 4.91 Layar Menu Cetak Laporan Pembelian
Pada menu ini, user dapat mengedit dan mencetak laporan pembelian yang diperlukan.
298 Layar Menu Cetak Laporan Penjualan
Gambar 4.92 Layar Menu Cetak Laporan Penjualan
Pada menu ini, user dapat mengedit dan mencetak laporan penjualan yang diperlukan.
299 Layar Menu Cetak Laporan Persediaan
Gambar 4.93 Layar Menu Cetak Laporan Persediaan
Pada menu ini, user dapat mengedit dan mencetak laporan persediaan yang diperlukan.
300 4.2.7Evaluasi Sistem 4.2.7.1 Pertanyaan kuesioner Pertanyaan Kuesioner 1.Apakah anda puas terhadap aplikasi sistem yang baru dalam hal manipulasi data baik mengelola data maupun menyimpan data? a. b.
Sangat puas Puas
c.Tidak puas d.Sangat tidak puas
2. Apakah aplikasi yang dibuat mampu mengatasi pengurangan kesalahan dalam menginput data ? a. Sangat puas b.Puas
c.Tidak puas d.Sangat tidak puas
3. Menurut anda, apakah anda puas terhadap waktu penyiapan laporan dengan adanya sistem yang baru ini? c. d.
Sangat puas Puas
c.Tidak puas d.Sangat tidak puas
4. Bagaimanakah tanggapan anda terhadap sistem basis data yang baru ini ? a. b.
Sangat membantu Membantu
c.Kurang mmbantu d.Tidak membantu
5.Menurut anda, bagaimanakah keamanan sistem basis data yang dibuat ini dalam menyimpan data perusahaan ? a. b. c. d.
Sangat aman Aman Tidak aman Sangat tidak aman
301 4.2.7.2 Hasil Evaluasi Sistem dengan kuisoner 1
1 3
Sangat puas
30
Puas Tidak puas 66
Sangat tidak puas
Gambar 4.94 Hasil Kuisoner Sistem 1 Dari hasil kuisoner terhadap kemudahan sistem yang baru dalam hal manipulasi data baik mengelola data maupun menyimpan data, responden menjawab ”Sangat puas” sebanyak 66%. Oleh karena itu dengan adanya penerapan sistem yang baru mempermudah dalam hal manipulasi data.
2.
Sangat puas
2 4
Puas 49
45
Tidak puas Sangat tidak puas
Gambar 4.95 Hasil Kuisoner Sistem 2
302 Dari hasil kuisoner sistem terhadap pengurangan kesalahan dalam menginput data dengan adanya sistem yang baru, respon menjawab ”sangat puas” sebanyak 49%. Oleh karena itu, dengan adanya penerapan sistem yang baru dapat mengurangi kesalahan user dalam menginput data.
3.
Sangat puas
0 25
0
Puas Tidak puas 75
Sangat tidak puas
Gambar 4.96 Hasil Kuisoner Sistem 3
Dari hasil kuisoner sistem terhadap lebih cepatnya pembuatan laporan dengan adanya sistem yang baru, respon menjawab ”Sangat puas” sebanyak 75%. Oleh karena itu, dengan adanya penerapan sistem yang baru bisa membuat laporan lebih cepat.
303 4.
1
Sangat membantu
2
Membantu
31
Kurang membantu
66
Tidak membantu
Gambar 4.97 Hasil Kuisoner Sistem 4
Berdasarkan gambar , responden menanggapi sistem basis data yang baru
”Sangat
membantu”
sebanyak
66%
dan
31%
lainnya
menjawab ”membantu”, oleh karena itu penerapan sistem basis data yang terkomputerisasi sangat membantu kegiatan operasional perusahaan.
5.
Sangat aman 3 1 Aman 45
51
Tidak aman Sangat tidak aman
Gambar 4.98 Hasil Kuisoner Sistem 5
304 Berdasarkan gambar , responden menjawab bahwa sistem basis data dapat menyimpan data perusahaan dengan ”Sangat aman” sebanyak 51% dan 45% menjawab ”Aman”. Oleh karena itu untuk menjaga kemanan data/informasi perusahaan perlu suatu sistem basis data yang baik.