Sistem Informasi Toko Baju_Isi Proposal

  • Upload
    lukman

  • View
    715

  • Download
    2

Embed Size (px)

Citation preview

BAB I PENDAHULUAN

1.1 Latar BelakangPerkembangan komputer saat ini sangatlah berperan penting diberbagai bidang usaha terutama kemampuanya yang baik dalam mengolah data dan informasi. Apalagi pada saaat ini, komputer amat penting untuk memudahkan pekerjaan kita. Di era sekarang ini teknologi sudah sangat maju, komputer pun mempunyai peranan yang sangat penting. Semua bidang profesi sangat membutuhkan komputer, seperti dalam dunia perdagangan telah mengalami perubahan yang sangat besar, karena adanya kemajuan Ilmu Pengetahuan dan Teknologi. Akibatnya, cara hidup dan pola fikir manusia mengalami perubahan menjadi lebih moderen sesuai dengan keadaan sekarang ini. Toko Baju ini melakukan pengolahan data secara manual dan itu menjadi permasalahan pokok yang dialami oleh Toko ini, karena pengolahan data penjualan secara manual memerlukan waktu yang cukup lama sehingga waktu yang ada menjadi tidak efektif dan efisien. Sesuai dengan permasalahan diatas, maka untuk itu penulis sangat tertarik untuk merancang Program Sistem Informasi Toko Baju Agar dapat mempermudah dalam proses pengolahan data pada Toko ini.

1. 2 PermasalahanMetode Penelitian Guna memperoleh data-data sebagai bahan penyusunan tugas akhir ini, penulis telah mengumpulkan data yang akurat dan sesuai dengan outline yang ada, maka penulis menggunakan beberapa metode penelitian, diantaranya yaitu: a. ObservasiPage | 1

Yaitu melakukan kegiatan pengumpulan data dengan melihat sejumlah objek penelitian dari sejumlah orang dalam jangka waktu yang bersamaan. b. Studi Kepustakaan Yaitu kegiatan yang dilakukan guna melengkapi data-data yang diperlukan dengan mencari berbagai literatur yang ada di perpustakaan. Ruang Lingkup Didalam penulisan tugas ini, penulis membatasi masalah hanya pada penjualan saja. Dari mulai pemasukkan data, transaksi sampai dengan pembuatan laporan.

1.3

Maksud dan TujuanMaksud dari penulisan tugas akhir ini adalah untuk memberikan pengetahuan

mengenai bagaimana cara-cara penulisan suatu bentuk tugas akhir yang baik, disamping untuk menambah wawasan yang lebih luas tentang bagaimana teknik merancang sebuah program yang baik. Adapun tujuan penulisan tugas akhir ini, yaitu: Sebagai salah satu syarat mengikuti Praktikum BD pada Fakultas Teknik Informatika ITATS.

Page | 2

BAB II LANDASAN TEORIDalam merancang suatu program tentu saja diperlukan peralatan pendukung (tools system). Peralatan pendukung ini sangat berguna untuk menjelaskan proses jalannya program sehingga mudah dimengerti oleh siapa saja yang akan menggunakan program yang dibuat.

2.1 Program Yang Di gunakan(VB 6.0 dan Oracle) OracleOracle Corporation adalah salah satu perusahaan pembuat software yang terkenal khususnya pada Database software. Perusahaan ini telah mengeluarkan banyak versi dari software mulai dari oracle 6.0, 8i, 9i hingga 10g. Produk produk tersebut biasa digunakan paa skala Enterprise (perusahaan), yang tentu saja harganya tidak murah bagi kita pengguna individua, Oracle memberikan solusi untuk hal tersebut, Oracle XE merupakan versi freeware yang ditujukan bagi pemula atau pengguna individual yang ingin mempelajari oracle tanpa harus mengeluarkan biaya besar atau membajak software tersebut. Versi ini memiliki banyak kesamaan dengan versi 10g sehingga anda tidak perlu khawatir bahwa fitur yang nanti anda pelajari dan gunakan di versi XE tidak akan anda temukan di versi 10g Enterprise. Kebutuhan sistem komputer untuk pengguna widows : RAM minimum 256 namun lebih baik lebih prosesor pentium 4 sistem operasi windows XP , server 2003 dan vista. Struktur Berkas OraclePage | 3

Menggunakan Oracle sebagai aplikasi akan sangat mudah jika kita sudah memahami struktur dari oracle tersebut, banyak sekali kesulitan dalam penggunaan oracle hanya dikarenakan pola fikir yang instant , yaitu langsung ingin menggunakan sebagai aplikasi, tanpa mengerti seperti apa oracle itu sendiri. Untuk itu anda perlu melihat gambar berikut ini.

Gambar diatas memberikan ilustrasi tentang struktur database oracle 10g XE, pada satu database OracleXE yang sudah terinstall akan memiliki lebih dari satu tablespace. Tablespace digunakan untuk mengelompokkan data lojik. Sehingga secara adminstrasi akan lebih mudah mengelola setiap file yang berkaitan dengan aplikasi. Pada saat instalasi awal dalam direktori $ORACLE_BASE/oradata/XE kita akan mendapatkan 6 buah file data yang memiliki ekstensi.DBF file tersebut berkaitan dengan Tablespace sebagai berikut.

Page | 4

Oracle adalah DBMS hasil produksi dari Oracle Corporation yang berpusat di USA, yang sekaligus berperan sebagai vendor yang mengkhususkan diri pada produk-produk DBMS untuk berbagai jenis komputer dan mendukung system operasi dari berbagai vendor. Mulai dari PC yang berbasis Windows atau Linux sampai dengan komputer mainframe baik yang IBM compatible maupun yang berasal dari vendor lain seperti SUN Microsystems, Hewlett Packard, dan lainlain. Sifat kompatibilitas dengan berbagai platform itulah yang membuat Oracle menjadi salah satu DBMS yang banyak digunakan dewasa ini. Oracle pertama kali diproduksi sekitar tahun 1984 dan terus mengalami perkembangan sampai sekarang ini. Oracle yang kita pelajari saat ini adalah versi9i dan kita hanya belajar Oracle yang berbasis Microsoft Windows. Oracle merupakan sistem database yang dirancang dengan teknologi grid computing yang diambil untuk memberi nama produk Oracle yaitu oracle 10g.

Page | 5

Arsitektur Proses Oracle Database.

Pada diagram ditunjukkan proses yang terjadi pada oracle, yaitu user melakukan koneksi yang akan diterima oleh listener kemudian listener akan melanjutkan ke process server yang terdapat instance yang meneruskan proses kepada database. Sedangkan aliran data ditunjukan oleh diagram berikut :

Page | 6

Proses OracleProses yang terjadi adalah ketika user melakukan koneksi awal conn maka perintah akan ditangani oleh listener untuk proses autentikasi dan maping terhadap instance selanjutnya setelah terjadi koneksi maka perintah atau query akan ditangani langsung oleh process server. Oracle Database dibangun menggunakan tiga struktur komponen, yaitu :

Struktur Memori Struktur Porses Struktur File(storage/penyimpanan)

nah dari ketiga bagian tersebut memiliki fungsi dan kegunaan masing seperti berikut ini Struktur Memori struktur memori Oracle terdiri dari dua area memori yang dikenal dengan SGA (System Global Area) dan PGA (Program Global Area). SGA adalah memori yang dialokasikan ketika database startup. SGA merupakan komponen dasar dari Oracle Instance. SGA terdiri dari beberapa elemen dengan masing-masing elemen didesain untuk tujuan tertentu. PGA adalah memori yang dialokasikan ketika user proses yang melakukan koneksi database. Struktur Proses Ada tiga jenis proses dalam database Oracle, yaitu User process, Server process dan Background process Struktur File

Page | 7

struktur penyimpanan Database Oracle dilihat dari dua sisi yaitu struktur logik dan fisik. struktur logik merepresentasikan komponen di dalam database oracle seperti tabel, index dan cluster. Sedangkan struktur fisik merepresentasikan metode penyimpanan yang digunakan oleh database secara internal. struktur fisik berupa berbagai jenis file yang digunakan untuk menyimpan data. struktur fisik datbase oracle terdiri dari tiga file utama yaitu control file, datafile, redolog file dan ditambah file pendukung lainnya yaitu parameter file, password file dan archive log file.

Basis data OracleMerupakan basis data relasional yang terdiri dari kumpulan data dalam suatu sistem manajemen basis data RDBMS. Perusahaan perangkat lunak Oracle memasarkan jenis basis data ini untuk bermacam-macam aplikasi yang bisa berjalan pada banyak jenis dan merk perangkat keras komputer (platform). Basis data Oracle ini pertama kali dikembangkan oleh Larry Ellison, Bob Miner dan Ed Oates lewat perusahaan konsultasinya bernama Software Development Laboratories (SDL) pada tahun 1977. Pada tahun 1983, perusahaan ini berubah nama menjadi Oracle Corporation sampai sekarang.

Kehandalan OracleBeberapa keunggulan database oracle sebagai produk database yang paling banyak dipakai di kalangan programer antara lain sebagai berikut : a. Scalability

kemampuan menangani banyak user yang melakukan hubungan / koneksi secara simultan tanpa kekurangannya performa secara signifikan. Dalam

Page | 8

dokumentasi oracle disebutkan bahwa oracle database sanggup melayani puluhan ribu user secara simultan. b. Reliability

kemampuan untuk melindungi data dari kerusakan jika terjadi kegagalan fungsi pada system c. Serviceability

kemampuan untuk mendeteksi masalah, kecepatan dalam mengoreksi kesalahan dan mampu melakukan konfigurasiulang struktur data. d. Stability

kemampuan untuk tidak crash karena beban kerja yang tinggi e. Availability3

kemampuan dalam menangani crash atau failure agar service dapat tetap berjalan f. Multiplatform

dapat digunakan pada banyak system operasi g. Mendukung data yang cukup besar. Menurut dokumentasi oracle

dapat menampung sampai lebih dari 512 petabytes (1 petabytes = 1.000.000 gigabytes) h. i. j. System scurity yang cukup handal. Mendukung database berorientasi object Dapat menampung hampir semua tipe data seperti text, image,

sound, video dan time series. Keunggulan keunggulan diatas membuat oracle banyak di gunakan pada aplikasi internet maupun client server pada LAN.

Siklus Pengembangan Sistem

Page | 9

Siklus pengembangan sistem meliputi : a. Strategi dan analisis Menganalisa kebutuhan bisnis, meng-interview manajer dan user untuk mengidentifikasi kebutuhan sistem, dan menentukan strategi yang dipakai. b. Desain Mendesain database berdasarkan model yang dikembangkan dalam fase strategi dan analisis. c. Membangun Sistem dan Dokumentasi Membangun prototipe sistem, membuat tabel dan object2 yang mendukung database, mendevelop dokumentasi user atau manual operasi. d. Transisi Memperbaiki prototipe, melakukan transformasi dari aplikasi menjadi produksi dengan melakukan pengujian, konversi data yang ada, dan melakukan modifikasi bila diperlukan.

e. Produksi Siap untuk men-deliver sistem pada user. Mengawasi performansi dan melakukan perbaikan dan peningkatan fasilitas jika diperlukan.

Penyimpanan Data pada Media yang berbedaSuatu Organisasi dapat menyimpan data dalam bermacam media dengan format yang berbeda-beda semisal dokumen hard-copy dalam filling cabinet, atau data yang disimpan dalam spreadsheet atau database. Database adalah kumpulan informasi yang terorganisasi. Untuk mengelola

Page | 10

database, dibutuhkan DBMS (Database Management System). DBMS ini dapat menyimpan, memanggil dan memodifikasi data. Ada empat tipe database : hirarki, network, relasional dan object relasional.

Dasar Penulisan Statement OracleMembuat table Misalkan kita akan membuat table sederhana dosen, sintagnya sebagai berikut : Untuk membuat Table dosen CREATE TABLE DOSEN( NIP Char(3) Not Null, Nama_d char(10) not null, Alamat_d char (20), PRIMARY KEY(NIP) ); Untuk membuat Table mahasiswa CREATE TABLE MHS( NIM Char(3) Not Null, Nama_mhs char(10) not null, Alamat_mhs char (20), NIP_wali char (3),

Page | 11

PRIMARY KEY(NIM), FOREIGN KEY (NIP_wali) );

Tipe Data Terdapat banyak tipe data yang disediakan oleh sistem basis data Oracle. Tipe-tipe data utama adalah character, number, date, dan RAW. VARCHAR2(n) Karakter dengan panjang bervariasi dengan panjang maksimum n. Panjang minimum 1 dan maksimum 2000. CHAR(n) Karakter dengan panjang tetap dengan panjang maksimum n. Nilai default 1, panjang maksimum 255. NUMBER Angka dengan tingkat panjang sampai 38 digit. NUMBER(p,s)

Angka dengan panjang maksimum p dengan jangkauan 1 sampai 38 digit dan s desimal. DATE Tanggal dan waktu antara 1 Januari 4712 S.M sampai 31 Desember 4712 M. LONG Karakter dengan panjang bervariasi hingga 2 gigabytes. Hanya satu kolom LONG yang diperbolehkan pada setiap table.Page | 12

RAW dan LONG RAW Sama dengan VARCHAR2 dan LONG, namun digunakan untuk menyimpan data byte-oriented atau binary misalnya image.

Mengubah Table Setelah kita menciptakan table kita dapat memodifikasi strukturnya dengan menggunakan perintah ALTER TABLE. Kita dapat menambah kolom, menghapus kolom, memodifikasi panjang kolom, menambah atau menghapus constraints dan mengenblekan atau men disable kan constrain tersebut menggunakan perintah. Misalnya dari table mahasiswa yang sudah ada kita rubah atau kita tambahkan tanggal lahir,sintagnya sebagai berikut : Menambahkan ke table mahasiswa

ALTER TABLE MHS ADD tanggal_lahir date; Menambahkan ketable dosen

ALTER TABLE DOSEN ADD tanggal_lahir date;

Menghapus Table Jika kita ingin menghapus table, baik data maupun strukturnya, dapat dilakukan dengan perintah DROP TABLE. Perintah-perintah lain yang berpengaruh terhadap table adalah : RENAME, untuk mengubah nama table TRUNCATE, untuk menghapus data dari table

Page | 13

COMMENT, untuk menambahkan komentar tentang suatu objek

database ke dalam data dictionary Sintag untuk menghapus table : DROP TABLE Dimana : Table_name adalah nama table yang akan dihapus

Catatan: Perintah DROP TABLE, sekali dieksekusi, tidak dapat diputar balik. Oracle tidak memberikan pertanyaan ketika kita menjalankan perintah DROP TABLE. Jika kita memiliki table tersebut atau memiliki privilege dengan level tinggi, maka table segera terhapus. Seluruh perintah-perintah DDL mengeksekusi commit, sehingga menyebabkan transaksi menjadi permanen. Seluruh perintah-perintah tersebut termasuk ke dalam perintahperintah Data Definition Languate (DDL). Ketika kita mengeksekusi statement-statement ini, akan terjadi proses commit otomatis. Kita tidak dapat me-rollback perintah-perintah DDL. Oleh sebab itu, berhati-hatilah ketika menggunakannya.

Memodifikasi Column Kita dapat memodifikasi kolom dengan menggunakan perintah ALTER TABLE dengan klausa MODIFY. Modifikasi kolom dapat mengandung perubahan tipe data, panjang, nilai default, dan constraint NOT NULL. Sintaks : ALTER TABLE table MODIFY (column datatype [DEFAULT expr][NOT NULL] [, column datatype] . . .); dimana:

Page | 14

table: nama table column: nama kolom datatype: tipe data dan panjangnya DEFAULT expr: menentukan nilai default dari kolom NOT NULL : menambahkan contraint NOT NULL untuk kolom

Aturan Penggunaan

Memperbesar lebar kolom atau presisi untuk kolom bertipe numerik Memperkecil lebar kolom jika kolom hanya mengandung nilai null atau jika table tidak memiliki data Mengubah tipe data jika kolom mengandung nilai null Mengkonversi tipe data CHAR menjadi VARCHAR2 atau sebaliknya, jika kolom mengandung nilai null atau jika kita tidak mengubah panjang tipe datanya

Perubahan ke nilai default akan berefek kepada proses insert berikutnya, tidak terhadap data yang sudah ada Menambahkan constraint NOT NULL hanya jika tidak terdapat nilai null pada kolom

Versi Oracle terbaru menyediakan kemampuan untuk mengubah nama kolom, dengan perintah: ALTER TABLE table RENAME COLUMN old_name TO new_name; Menambahkan dan Menghapus Contraint Constraint dapat didefinisikan pada salah dua level berbeda. Column Constraint Didefinisikan bersama-sama dengan definisi

kolom yang memilikinya. Pada level ini kita dapat mendefinisikan seluruh tipe constraint.

Page | 15

Table Constraint

Didefinisikan terpisah dari definisi kolom yang memilikinya. Pada level ini kita dapat mendefinisikan seluruh tipe constraint kecuali NOT NULL. Sintaks Constraint Level Kolom column [CONSTRAINT constraint_name] constraint_type Sintaks Constraint Level Kolom column, [CONSTRAINT constraint_name] constraint_type (column, ),

Contoh: Mendefinisikan constraint PRIMARY KEY (level kolom) untuk kolom ID dari table REGION. CREATE TABLE region (id NUMBER(7) CONSTRAINT region_id_pk PRIMARY KEY, name VARCHAR2(50) CONSTRAINT_region_name_nn NOT NULL CONSTRAINT region_name_uk UNIQUE); Mendefinisikan constraint PRIMARY KEY (level tabel) untuk kolom ID dari table REGION. CREATE TABLE region (id NUMBER(7), name VARCHAR2(50) CONSTRAINT_region_name_nn NOT NULL

Page | 16

CONSTRAINT region_name_uk UNIQUE, CONSTRAINT region_id_pk PRIMARY KEY(id));

Kita dapat menambah dan menghapus contraint pada table yang telah ada dengan menggunakan perintah ALTER TABLE dengan klausa ADD atau DROP. Sintaks : ALTER TABLE table ADD [CONSTRAINT constraint] type (column); dimana:

table: nama table contraint: nama contraint type: tipe contraint column: nama kolom yang terpengaruh oleh constraint

Catatan: Sintaks constraint name adalah opsional, meskipun direkomendasikan. Jika kita tidak memberi nama terhadap contraint, system akan menciptakan nama contraint tersebut secara otomatis. Aturan penggunaan

Kita dapat menambah, menghapus, mengaktifkan, dan menonaktifkan constraint, tetapi kita tidak dapat memodifikasi strukturnya Kita dapat menambahkan contraint NOT NULL terhadap kolom dengan menggunakan klausa MODIFY dari perintah ALTER TABLE

Untuk menghapus constraint, kita dapat mengidentifikasi nama constraint dari data dictionary views USER_CONSTRAINTS dan USER_CONS_COLUMNS. Kemudian, kita dapat menggunakan perintah ALTER TABLE dengan klausa DROP. Opsi CASCADE pada klausa DROPPage | 17

menyebabkan seluruh constraint yang bergantung terhadap constraint yang kita hapus akan ikut terhapus. Sintaks ALTER TABLE table DROP PRIMARY KEY | UNIQUE (column) | CONSTRAINT constraint [CASCADE]; dimana:

table: nama table column: nama kolom dari constraint yang akan dihapus constraint: nama constraint Ketika kita menghapus integrity constraint, constraint tersebut tidak lagi

Catatan: dijalankan oleh Oracle dan tidak lagi tersedia di dalam data dictionary. Ketentuan Penamaan Constraint Seluruh constraint tersimpan pada data dictionary. Penamaan constraint yang baik memudahkan kita jika suatu saat kita akan memodifikasi atau menghapus constraint yang telah kita ciptakan. Jika kita tidak memberi nama pada constraint yang kita ciptakan, maka otomatis Oracle akan memberikan nama dengan format SYS_Cn, dimana n adalah nomor constraint. Nama constraint sebaiknya memiliki format table_constraint_type. Sebagai contoh apabila kita ingin menciptakan constraint PRIMARY KEY untuk kolom ID dari tabel EMPLOYEE, maka nama constraint sebaiknya EMPLOYEE_ID_PK. Keterangan mengenai simbol yang disarankan untuk setiap jenis constraint dapat dilihat pada tabel berikut.

Primary Key -> PK Unique -> UK Not Null -> NN Check -> CK

Page | 18

Primary Key Kombinasi -> PKn Unique Kombinasi -> UKn

Tipe tipe Constraint Oracle menyediakan lima constraint yang dapat digunakan untuk memberikan batasan batasan operasi DML baik pada level kolom maupun level table. Constraint level kolom adalah constraint yang hanya melibatkan satu kolom saja dan didefinisikan langsung pada definisi kolom tersebut. Sedangkan constraint level table melibatkan lebih dari satu kolom (composite constraint) atau didefinisikan secara terpisah dari definisi kolom. Kelima constraint tersebut adalah : NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK

Dari kelima constraint tersebut di atas hanya constraint NOT NULL yang dikhususkan untuk level kolom. Dan selebihnya bisa digunakan pada level kolom maupun level table. NOT NULL

Tipe ini hanya berlaku untuk level kolom. Bentuk umum klausa constrain untuk tipe ini adalah sebagai berikut. [CONSTRAINT constraint_name] NOT NULL Constraint NOT NULL bertujuan untuk membuat suatu kolom tidak boleh berisi nilai null. Berikut sebuah contoh pemberian constraint terhadap kolom no_peg dari table PEGAWAI.

Page | 19

ALTER TABLE PEGAWAI MODIFY (no_peg VARCHAR(8) NOTNULL); table altered Contoh: Menentukan constraint NOT NULL pada kolom PHONE. CREATE TABLE friend phone VARCHAR2(15) NOT NULL Menentukan constraint NOT NULL pada kolom LAST_NAME. Constraint diberi nama FRIEND_LAST_NAME_NN. CREATE TABLE friend last_name VARCHAR2(15) CONSTRAINT friend_last_name_nn NOT NULL, UNIQUE

Constraint ini berlaku pada level kolom maupun level table. Bentuk constraint pada level kolom. [CONSTRAINT constraint_name] UNIQUE sedangkan bentuk umum pada level tabel adalah sebagai berikut. [CONSTRAINT constraint_name] UNIQUE {col_1 [, col_2 [, [, col_n]]] } Contoh: Mendefinisikan constraint UNIQUE untuk kolom NAME dari tabel REGION. CREATE TABLE region name VARCHAR2(50) CONSTRAINT region_name_uk UNIQUE, Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut. CREATE TABLE employee name VARCHAR2(50), CONSTRAINT region_name_uk UNIQUE(name), Page | 20

Constraint UNIQUE ini bertujuan untuk membuat sebuah kolom atau kombinasi dari beberapa kolom pada sebuah table menjadi bersifat unik. Dengan demikian, didalam table tersebut tidak diperbolehkan ada dua baris data yang nilai unique key-nya sama. PRIMARY KEY

Constraint tipe ini juga berlaku pada level kolom maupun level table.bentuk umumnya pada level kolom adalah sebagai berikut. [CONSTRAIN constrain_name] PRIMARY KEY Sedangkan bentuk umum pada level table adalah sebagai berikut [CONSTRAIN constrain_name] PRIMARY KEY ( col_1 [, col_2 [,.[, col_n]]] ) Contoh: Mendefinisikan constraint PRIMARY KEY untuk kolom ID dari table EMPLOYEE. CREATE TABLE employee id NUMBER(7) CONSTRAINT employee_id_pk PRIMARY KEY, Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut. CREATE TABLE employee id NUMBER(7), CONSTRAINT employee_id_pk PRIMARY KEY (id), Constrain ini bertujuan untuk menentukan suatu kolom atau kombinasi dari beberapa kolom sebagai primary key dari sebuah table. Primary key merupakan identitas dari baris baris data pada suatu table. Sebagai identitas ,primary key hanya boleh ada satu pada sebuah table, tentu saja dapat berupa kombinasi kolom kolom . selain itu kolom atau kombinasi kolom yang menjadi primary key tersebut tidak boleh diberi nilai NULL. Dengan kata lain, primary key adalah unique key yang diberi constrain NOT NULL. Sebagai catatan , sebuah primary key pada table tidak bolehPage | 21

diberi constrain UNIQUE tetapi diperbolehkan diberi constrain NOT NULL FOREIGN KEY Constrain ini bertujuan untuk menetapkan suatu kolom atau kombinasi dari beberapa kolom menjadi foreign key dari sebuah table. Foreign key serin disebut sebagai referential integrity constraint . kegunaaan foreign key adalah untuk membentuk sebuah relasi antara suatu table dengan table lainnya. Kolom atau kombinasi kolom yang menjadi foreign key pada table anak (dependen atau chil tabel) mengacu ke kolom atau kombinasi kolom yang menjadi primery key atau unique key pada rabel induk (referent atau parent tabel) table induk dapat berupa table itu sendiri atau table lainnya. Bentuk umum klausa constraint untuk membuat sebuah FK pada level kolom adalah sebagai berikut. [CONSTRAIN constrain_name] REFERENCES [schema] table [(coluum)] [ON DELETED < CASCADE SET NULL>] Bentuk umum klausa constraint untuk membuat sebuah Foreign key pada level tabel adalah sebagai berikut. [CONSTRAIN constrain_name] FOREIGN KEY (col_list) REFERENCES [schema.] table [ (col_list) ] [ON DELETED < CASCADE SET NULL>] Contoh:Mendefinisikan constraint FOREIGN KEY untuk kolom DEPT_ID dari table EMPLOYEE yang mengacu kepada kolom ID dari table DEPARTMENT. CREATE TABLE employee dept_id NUMBER(7) CONSTRAINT employee_dept_id_fk REFERENCES department(id), Page | 22

Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut. CREATE TABLE employee dept_id NUMBER(7), CONSTRAINT employee_dept_id_fk FOREIGN KEY (dept_id) REFERENCES department(id), Pada kedua bentuk umum diatas terlihat bahwa kolom atau col_list setelah table adalah bersifat opsional. Namun sebaiknya, columm atau col_list tersebut dituliskan secara eksplisit agar oracle dapat memastikan kolom atau kombinasi kolom yang mana yang dijadikan sebagai referensi. Hal ini juga memudahkan pemahaman bagi orang yang membaca SQL statement tersebut. CHECK Constrain CHECK dapat berlaku untuk level kolom maupun level table. Bentuk umum klausa CHECK untuk kedua level tersebut sama saja, yakni seperti yang ditunjukkan berikut. [ CONSTRAINT constrain_name CHECK (condition) ] Contoh: Mendefinisikan constraint CHECK untuk kolom COMMISSION_PCT dari table EMPLOYEE. CREATE TABLE employee commission_pct NUMBER(4,2) CONSTRAINT employee_commission_pct_ck CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)), Jika constraint tersebut didefinisikan pada level table maka perintahnya menjadi sebagai berikut. CREATE TABLE employee commission_pct NUMBER(4,2),

Page | 23

CONSTRAINT employee_commission_pct_ck CHECK (commission_pct IN (10, 12.5, 15, 17.5, 20)), Constrain CHECK berguna untuk membuat suatu kondisi yang harus dipenuhi oleh setiap baris data didalam suatu table. Kondisi tersebut dapat berupa salah satu dari kondisi kondisi berikut ini. a. b. c. d. Kondisi perbandingan Kondisi range Kondisi LIKE Kondisi EXISTS

Kondisi yang memenuhi adalah yang menghasilkan nilai TRUE atau uknown untuk nilai NULL. Kondisi pada constraint CHECK disuatu table dapat mengacu kesembarang kolom pada table tersebut tetapi tidak boleh mengacu ke kolom kolom pada table lainnya. Ketika oracle mengevaluasi suatu kondisi pada constraint CHECK untuk sebuah baris nama nama kolom yang diberikan pada kondisi tersebut mengacu ke nilai nilai kolom pada baris tersebut. Menghidupkan dan Mematikan Constraint Kita dapat menghidupkan dan mematikan constraint tanpa menghapus atau menciptakannya ulang dengan menggunakan perintah ALTER TABLE dengan klausa ENABLE atau DISABLE. Sintaks ALTER TABLE table DISABLE | ENABLE CONSTRAINT constraint [CASCADE]; Aturan penggunaan

Jika kita menghidupkan constraint, constraint tersebut terpakai

pada seluruh data dalam table. Seluruh data dalam table harus memenuhi ketetapan dari contraint tersebut.

Page | 24

Jika kita menghidupkan contraint UNIQUE atau PRIMARY KEY, Kita dapat menggunakan klausa ENABLE dan DISABLE baik Klausa CASCADE mematikan constraint yang bergantung

maka UNIQUE dan PRIMARY KEY index otomatis diciptakan.

pada perintah CREATE TABLE maupun perintah ALTER TABLE.

dibawahnya Mengubah Nama dan Menghapus Isi Table Perintah-perintah DDL tambahan termasuk perintah RENAME, yang mana digunakan untuk mengubah nama table, view, sequence, atau synonym, dan perintah TRUNCATE TABLE, yang mana digunakan untuk me nghapus seluruh data dari table dan untuk membebaskan tempat penyimpanan yang digunakan oleh table tersebut. Sintaks Perintah RENAME RENAME old_name TO new_name; Kita harus merupakan pemilik objek yang akan diubah namanya Sintaks Perintah TRUNCATE TRUNCATE TABLE table; Kita harus merupakan pemilik table atau memiliki system privilege DELETE TABLE untuk dapat melakukan TRUNCATE terhadap table. Catatan: Perintah DELETE dapat juga menghapus seluruh data dari table, tetapi ia tidak membebeaskan tempat penyimpanan yang digunakan oleh table tersebut. Menambahkan Komentar Terhadap Table Kita dapat menambahkan komentar hingga 2000 bytes, terhadap column, table, view, atau snapshot dengan menggunakan perintah COMMENT.

Page | 25

Komentar tersimpan didalam data dictionary dan dapat dilihat didalam salah satu data dictionary views berikut didalam kolom COMMENTS: ALL_COL_COMMENTS USER_COL_COMMENTS ALL_TAB_COMMENTS USER_TAB_COMMENTS

Sintaks COMMENT ON TABLE table | COLUMN table.column IS text; dimana:

table: nama table column: nama column text: isi komentar

Contoh: Menambahkan komentar pada table EMPLOYEE. COMMENT ON TABLE employee IS Employee Information; Menghapus komentar pada column. COMMENT ON COLUMN employee.last_name IS ;

OBJEK OBJEK DATABASE ORACLE Sequence Secara otomatis mengenerate bilangan secara unik Object yang bisa dipakai bersama Biasanya digunakan untuk keperluan penyediaan PRIMARY KEY

Sequence dibuat dengan perintah CREATE SEQUENCE.

Sintak Statement CREATE SEQUENCE

Page | 26

Berikut ini sintak umum Sequence : CREATE SEQUENCE sequence [INCREMENT BY n] [START WITH n] [{MAXVALUE n | NONMAXVALUE}] [{MINVALUE n | NONMINVALUE}] [{CYCLE | NONCYCLE}] [{CACHE n | NOCACHE }];

Pembuatan Sequence Buat sequence yang diberi nama DEPT_DEPTID_SEQ yang digunakan untuk mengisi primary key dari tabel DEPARTEMENTS, jangan menggunakan option CYCLE.

Penggunaan Sequence Misal akan dimasukkan department baru yang bernama Support yang memiliki location ID 2500. Menampilkan nilai saat ini yang dimiliki oleh sequence DEPT_DEPTID_SEQ.

Konfirmasi Sequence Nilai dari suatu sequence dapat dilihat dengan menggunakan data dictionary USER_SEQUENCES.

Page | 27

Kolom LAST_NUMBER pada data dictionary tersebut menampilkan nilai sequence berikutnya jika NOCACHE tidak dispesifikasi.

NEXTVAL dan CURRVAL NEXTVAL mengembalikan nilai sequence berikutnya, sedangkan CURRVAL mengembalikan nilai sequence saat ini. NEXTVAL harus dipanggil terlebih dahulu sebelum suatu nilai diisikan pada CURRVAL. CREATE SEQUENCE dept_deptid_seq INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE; Sequence created. CREATE SEQUENCE dept_deptid_seq INCREMENT BY 10 START WITH 120 MAXVALUE 9999 NOCACHE NOCYCLE; Sequence created.

Page | 28

SELECT sequence_name, min_value, max_value, increment_by, last_number FROM user_sequences; SELECT sequence_name, min_value, max_value, increment_by, last_number FROM user_sequences;

Memodifikasi Sequence & Petunjuk untuk Modifikasi Sequence Perintah ALTER SEQUENCE nama_sequence bisa digunakan untuk memodifikasi sequence, misal merubah increment value, maximum value, pilihan cycle, atau cache. Berikut ini petunjuk untuk melakukan modifikasi pada Sequence : Harus menjadi owner dan telah memiliki privilege ALTER untuk Hanya nilai sequence berikutnya yang berpengaruh Sequence harus dihapus dan dibuat ulang untuk memulai sequence Beberapa validasi perlu dibuat pada sequence.

suatu sequence.

dengan nilai yang berbeda.

Menghapus Sequence Untuk menghapus sequence digunakan perintah : DROP SEQUENCE nama_sequence

Page | 29

Sekali dihapus, sequence tidak bisa direferensi lagi.

Apa itu Index Apa itu index ? pointer Dapat mereduksi disk I./O dengan menggunakan metode Independent dari table yang diindeks pengaksesan untuk melokasikan data secara cepat. INSERT INTO departments(department_id, department_name, location_id) VALUES (dept_deptid_seq.NEXTVAL, 'Support', 2500); 1 row created. SELECT dept_deptid_seq.CURRVAL FROM dual; ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 999999 NOCACHE NOCYCLE; Sequence altered. Index adalah skema object Digunakan oleh Oracle server untuk meningkatkan kecepatan

untuk mendapatkan baris data yang diinginkan dengan menggunakan

Page | 30

ALTER SEQUENCE dept_deptid_seq INCREMENT BY 20 MAXVALUE 999999 NOCACHE NOCYCLE; Sequence altered. DROP SEQUENCE dept_deptid_seq; Sequence dropped. DROP SEQUENCE dept_deptid_seq; Sequence dropped.

Pembuatan Index Kapan Index perlu Dibuat ? Index perlu dibuat pada saat : Kolom sering digunakan dalam klausa WHERE atau kondisi join Kolom berisi jangkauan nilai yang sangat luas Kolom berisi banyak sekali nilai NULL Dua atau lebih kolom sering digunakan bersama-sama dalam Table berukuran besar dan baris yang didapatkan pada saat query

klausa WHERE atau kondisi join paling banyak diperkirakan kurang dari 2-4% dari baris yang ada.

Kapan Index tidak perlu Dibuat ?

Page | 31

Index tidak perlu dibuat jika : Tabel berukuran kecil Kolom tidak terlalu sering digunakan sebagai kondisi dalam query Baris yang didapatkan pada saat query lebih dari 2-4% dari baris Tabel sering di-update

yang ada.

Melakukan pemeriksaan terhadap keberadaan Index Untuk mengetahui keberadaan index, dapat dengan menggunakan data dictionary USER_INDEXES dan USER_IND_COLUMNS.

Index Berbasis Fungsi Index yang berbasis pada fungsi adalah ekspresi yang berbasis pada index. Ekspresi index dibangun dari kolom table, konstanta, fungsi SQL dan fungsi yang didefinisikan user. CREATE INDEX emp_last_name_idx ON employees(last_name); Index created. CREATE INDEX emp_last_name_idx ON employees(last_name); Index created. SELECT ic.index_name, ic.column_name, ic.column_position col_pos,ix.uniqueness

Page | 32

FROM user_indexes ix, user_ind_columns ic WHERE ic.index_name = ix.index_name AND ic.table_name = 'EMPLOYEES';

Menghapus Index Untuk menghapus index dari data dictionary digunakan perintah DROP INDEX. Perintah berikut menghapus index UPPER_LAST_NAME_IDX dari data dictionary. Untuk menghapus sebuah index, anda harus menjadi owner atau pemilik dari index atau memiliki privilege DROP ANY INDEX.

Definisi Synonym Synonym dibuat dengan tujuan menyederhanakan akses ke object, dengan cara : Merujuk ke table yang dimiliki oleh user lain Memperpendek nama object yang panjang.

Sintak Statement UPDATE Untuk memodifikasi baris data yang ada pada table digunakan perintah UPDATE. Sintak dari perintah UPDATE : UPDATE table SET column = value [, column = value, ]

Page | 33

[WHERE condition];

Mengupdate Baris dalam Tabel Berikut contoh perintah UPDATE untuk mengubah satu baris saja :

Jika klausa WHERE dihilangkan, maka perintah UPDATE akan mengubah nilai kolom dari semua data atau record yang ada pada tabel :

Mengupdate dua kolom dengan subquery Query berikut ini akan mengupdate job dan salary yang dimiliki oleh employee 114 supaya sama dengan job dan salary yang dimiliki oleh employee 205.

Mengupdate Berdasarkan Baris pada Tabel yang lain

Page | 34

UPDATE berdasarkan table yang lain artinya perubahan pada sebuah table dimana kondisi perubahannya ditentukan berdasarkan nilai yang terdapat pada table yang lain.

Mengupdate Baris : terdapat kesalahan Integrity Constraint Salah satu kesalahan pada perintah UPDATE, misal jika kita berusaha untuk merubah data sedangkan data tersebut terikat pada integrity constraint (merupakan suatu key).

Menghapus Baris dari Tabel Ilustrasi untuk menghapus baris dari suatu tabel :

Page | 35

Statement DELETE Baris data yang ada pada table dapat dihapus dengan menggunakan perintah DELETE. Sintak penulisannya :

Menghapus Baris dari Tabel Jika klausa WHERE disertakan pada perintah DELETE maka baris data tertentu yang akan dihapus hanya yang memenuhi kriteria pada WHERE :

Tapi jika klausa WHERE dihilangkan, maka semua baris data dalam tabel akan dihapus :

Page | 36

Sekilas Visual Basic 6.0Menurut Sugiyono (2005:21) mengemukakan bahwa Program adalah Suatu rangkaian instruksi-instruksi dalam bahasa komputer yang disusun secara logis dan sistematis. Menurut Arief (2004:1) mengemukakan bahwa Microsoft visual basic 6.0 merupakan salah satu aplikasi pemrograman visual yang dibuat oleh Microsoft. Visual basic 6.0 menyediakan berbagai perangkat yang digunakan untuk membuat program aplikasi baik aplikasi kecil dan sederhana untuk keperluan sendiri, hingga aplikasi untuk enterprise yang besar dan rumit, atau bahkan aplikasi yang dijalankan melalui internet. Bahasa pemrograman komputer dikelompokkan menjadi dua kelompok besar, yaitu : 1. Bahasa Pemrograman Tingkat Tinggi (High Level Language) Merupakan bahasa pemrograman yang memiliki aturan-aturan gramatikal dalam penulisan ekspresi atau pernyataan dengan standar bahasa yang dipahami langsung oleh manusia. 2. Bahasa Pemrograman Tingkat Rendah (Low Level Language) Merupakan bahasa pemrograman yang berorientasi pada mesin. Pemrograman yang digunakan bahasa ini harus dapat berpikir berdasarkan logika mesin komputer, sehingga bahasa ini dinilai kurang fleksibel dan sulit dipahami oleh komputer. Kata pemrograman dapat diartikan kegiatan menulis kode atau perintahperintah program yang akan dieksekusi oleh komputer. Perintah-perintah ini membutuhkan suatu bahasa tersendiri yang dapat dimengerti oleh komputer. Bahasa yang dapat dimengerti oleh komputer adalah bahasa pemrograman. Bahasa pemrograman adalah prosedur penulisan program. Ada tiga faktor dalam bahasa pemrograman, yaitu :Page | 37

a. Sintaks adalah aturan penulisan bahasa pemrograman. b. Semantik adalah arti atau maksud yang terkandung didalam statement tersebut. c. Kebenaran logika adalah berhubungan dengan benar tidaknya urutan statement. Proses pemrograman komputer tidak hanya sekedar menuliskan suatu urutan dan instruksi yang harus dikerjakan oleh komputer tetapi bertujuan untuk memecahkan masalah serta membuat mudah sebuah pekerjaan yang diinginkan oleh pemakai (user). Ada lima langkah yang harus dilakukan oleh seorang pemrogram (programmer) dalam proses pemecahan suatu masalah dengan menggunakan program komputer, yaitu sebagai berikut : 1. Menganalisa dan memahami persoalan yang ada, kemudian mengembangkan suatu proses logika untuk menyelesaikan suatu masalah tersebut dalam bentuk algoritma. 2. Menentukan bentuk data apa yang diperlukan, sebagai input didalam program yang akan dibuat, serta apa saja yang ingin dihasilkan, sebagai output dari program yang akan dibuat. 3. Pengkodean dari algoritma yang sudah dibuat, diterjemahkan kedalam bentuk statement-statement yang sesuai dan terdapat di dalam bahasa pemrograman yang digunakan. 4. Melakukan test program dari proses logika yang akan dibuat, apakah program tersebut sudah benar dan bebas dari unsur kesalahan atau masih terus direvisi atau diperbaiki kembali. 5. Melakukan pendokumentasian program sebagai cadangan (back-up) yang mana proses ini penting untuk dilakukan, untuk usaha pengembangan program selanjutnya. Menurut Jogianto (2005:582) Pemrograman terstruktur adalah suatu tindakan untuk mengorganisasikan dan membuat kode-kode program supaya program mudah untuk dimengerti dan dimodifikasi.

Konsep Database Relasional

Page | 38

Prinsip dari model relasional pertama kali dikenalkan oleh Dr. E.F. Codd pada bulan Juni 1970 pada papernya yang berjudul A Relational Model of Data for Large Shared Data Banks. Pada paper tersebut Dr. E.F. Codd mengusulkan model relasional untuk sistem database. Model relasional lebih popular daripada tipe model database lain seperti hirarki dan network, dikarenakan keserhanaannya. Relational Database Management System (RDBMS) menjadi sangat populer karena mudah digunakan dan strukturnya bersifat fleksibel. Komponen dari model relasional adalah : a. Kumpulan obyek atau relasi yang menyimpan data b. Kumpulan operator yang dapat digunakan pada relasi untuk menghasilkan relasi yang lain. c. Integritas data untuk akurasi dan konsistensi.

Definisi Database RelasionalDatabase relasional menggunakan relasi atau tabel dua dimensi untuk menyimpan informasi. Sebagai contoh, misal akan disimpan informasi tentang pegawai dalam suatu perusahaan, maka pada database relasional dibuat beberapa tabel untuk menyimpan kumpulan informasi tentang pegawai semisal tabel pegawai, tabel departemen dan tabel gaji. Model Data Model adalah hasil dari proses desain. Perekayasa teknik membangun model sebelum melakukan produksi, dan untuk mengekplorasi ide dan meningkatkan pemahaman terhadap desain database.

Page | 39

Model membantu komunikasi dalam konsep berpikir manusia. Model dapat digunakan untuk: komunikasi, kategorisasi, penggambaran, spesifikasi, investigasi, dan analisa. ER Model Model dibuat dengan Entity-Relationship diagram. ER Model terdiri dari dua simbol utama yaitu Entity dan atribut. Entity adalah object dari dunia nyata, sedangkan atribut adalah komponen yang dimiliki oleh suatu entity. Dalam ER Model, entity- entity saling terhubung dalam suatu relasi. Merelasikan Banyak Tabel Sebuah database terdiri dari tabel-tabel. Misal database perusahaan terdiri dari tabel karyawan, departemen, gaji, dll. Tabel terdiri dari atribut atau kolom-kolom. Misal tabel karyawan memiliki kolom nomer_induk, nama_pegawai, nomer_department, dll. Masing-masing tabel memiliki kolom yang mengidentifikasi data yang ada di tabel secara unik, kolom tersebut dinamakan primary key (PK). Suatu tabel bisa memiliki foreign key (FK) atau kunci tamu, yaitu kolom yang menjadi primary key di tabel yang lain.

Page | 40

2.2 DIAGRAM KONTEKSDiagram konteks merupakan diagram alir yang tingkat tinggi yang menggambarkan seluruh jaringan, masukan dan keluaran. sistem yang dimaksud adalah untuk menggambarkan sistem yang sedang berjalan. Mengidentifikasikan awal dan akhir data awal dan akhir yang masuk dan keluaran sistem. Diagram ini merupakan gambaran umum sistem yang nantinya akan kita buat. secara uraian dapat dikatakan bahwa diagram konteks itu berisi siapa saja yang memberikan data (inputan) kesistem serta kepada siapa data informasi yang harus dihasilkan sistem. Context Diagram (CD)/Diagram konteks adalah diagram yang terdiri dari suatu proses dan menggambarkan ruang lingkup suatu sistem. Diagram konteks merupakan level tertinggi dari DFD yang menggambarkan seluruh input ke sistem atau output dari sistem. Ia akan memberi gambaran tentang keseluruhan sistem. Sistem dibatasi oleh boundary (dapat digambarkan dengan garis putus). Dalam diagram konteks hanya ada satu proses. Tidak boleh ada store dalam diagram konteks. Diagram konteks berisi gambaran umum (secara garis besar) sistem yang akan dibuat. Secara kalimat, dapat dikatakan bahwa diagram konteks ini berisi siapa saja yang memberi data (dan data apa saja) ke sistem, serta kepada siapa saja informasi (dan informasi apa saja) yang harus dihasilkan sistem. Jadi, yang dibutuhkan adalah (1) Siapa saja pihak yang akan memberikan data ke sistem, (2) Data apa saja yang diberikannya ke sistem, (3) kepada siapa sistem harus memberi informasi atau laporan, dan (4) apa saja isi/ jenis laporan yang harus dihasilkan sistem. Kata Siapa di atas dilambangkan dengan kotak persegi (disebut dengan

Page | 41

terminator), dan kata apa di atas dilambangkan dengan aliran data (disebut dengan data flow), dan kata sistem dilambangkan dengan lingkaran (disebut dengan process).

Jenis pertama Context Diagram, adalah data flow diagram tingkat atas (DFD Top Level), yaitu diagram yang paling tidak detail, dari sebuah sistem informasi yang menggambarkan aliran-aliran data ke dalam dan ke luar sistem dan ke dalam dan ke luar entitas-entitas eksternal. (CD menggambarkan sistem dalam satu lingkaran dan hubungan dengan entitas luar. Lingkaran tersebut menggambarkan keseluruhan proses dalam sistem). Beberapa hal yang harus diperhatikan dalam menggambar CD; Terminologi sistem :

Batas Sistem adalah batas antara daerah kepentingan sistem. Lingkungan Sistem adalah segala sesuatu yang berhubungan atau

mempengaruhi sistem tersebut.Page | 42

Interface adalah aliran yang menghubungkan sebuah sistem

dengan linkungan sistem tersebut. Sebagai contoh, dalam gambar 1. Menggunakan satu simbol proses, Catatan: Yang masuk didalam lingkaran konteks (simbol proses) adalah kegiatan pemrosesan informasi (Batas Sistem). Kegiatan informasi adalah mengambil data dari file, mentransformasikan data, atau melakukan filing data, misalnya mempersiapkan dokumen, memasukkan, memeriksa, mengklasifikasi, mengatur, menyortir, menghitung, meringkas data, dan melakukan filing data (baik yang melakukan secara manual maupun yang dilakukan secara terotomasi). Nama/keterangan di simbol proses tersebut sesuai dengan fungsi sistem tersebut, Antara Entitas Eksternal/Terminator tidak diperbolehkan komunikasi langsung Jika terdapat termintor yang mempunyai banyak masukan dan keluaran, diperbolehkan untuk digambarkan lebih dari satu sehingga mencegah penggambaran yang terlalu rumit, dengan memberikan tanda asterik ( * ) atau garis silang ( # ). Jika Terminator mewakili individu (personil) sebaiknya diwakili oleh peran yang dipermainkan personil tersebut. Aliran data ke proses dan keluar sebagai output keterangan aliran data berbeda. DAFTAR SIMBOL Simbol Konfigurasi Komputer DISPLAY

Page | 43

Digunakan untuk menggambarkan kegiatan dalam menampilkan data atau informasi dengan media Visual Display Unit (VDU) atau disebut juga Monitor. MANUAL INPUT

Digunakan

untuk

menggambarkan

kegiatan

pemasukan

data

dengan

menggunakan media Keyboard. LINE PRINTER

Digunakan untuk menggambarkan suatu dokumen atau untuk kegiatan mencetak. FLOPPY DISK DRIVE

Digunakan untuk menggambarkan proses pembacaan data dengan media disket. HARDDISK DRIVE

Digunakan untuk menggambarkan kegiatan dalam membaca atau menulis data dengan Media Magnetic Disk. PROCESS

Page | 44

Digunakan untuk melakukan kegiatan proses instruksi di dalam suatu program b. Simbol Flowchart TERMINAL

Digunakan untuk mengawali dan mengakhiri suatu proses atau kegiatan. DECISION

Digunakan untuk mengambil keputusan dalam pengujian suatu kondisi yang sedang diproses.

PROCESS

Digunakan untuk melakukan kegiatan proses instruksi di dalam suatu program FLOW LINE

Page | 45

Digunakan untuk menggambarkan arus atau jalur proses dari suatu kegiatan yang menuju pada kegiatan lain. INPUT/OUTPUT

Digunakan untuk menggambarkan proses memasukkan data yang berupa pembacaan data dan sekaligus proses keluaran yang berupa pencetakan data. SUBROUTINE

Digunakan untuk menggambarkan proses pemanggilan (Call System) sub program dari main program (Recursivitas).

OFF PAGE CONECTOR

Page | 46

Digunakan untuk menggambarkan penghubung bila diagram alur terputus disebkan suatu hal misalnya pergantian halaman. ON PAGE CONNECTOR

Digunakan untuk menggambarkan penghubung bila diagram alur dalam lembar atau halaman yang sama.

2.3 DFD LEVEL(Diagram Level n / Data Flow Diagram Levelled)DFD dapat digambarkan dalam Diagram Context dan Level n. Huruf n dapat menggambarkan level dan proses di setiap lingkaran. Diagram Context Diagram Level n DFD Logis DFD Fisik

DFDLevel yaitu penurun dari proses yang ada pada DFD untuk menjelaskan kegiatan yang lebih rinci dalam proses tersebut. Dalam penurunan level, tidak semua bagian/proses dari sistem harus diturunkan dengan jumlah level yang sama. Dalam diagram n DFD dapat digunakan untuk menggambarkan diagram fisik maupun diagram diagram logis. Dimana Diagram Level n merupakan hasil pengembangan dari Context Diagram ke dalam komponen yang lebih detail tersebut disebut dengan top-down partitioning. Jika kita melakukan pengembangan dengan benar, kita akan mendapatkan DFD-DFD yang seimbang. Sebagai contoh, gambar 1.1, gambar 1.2, gambar 1.3, gambar 1.4 dan gambar 1.5. Beberapa hal yang harus diperhatikan dalam membuat DFD ialah:

Pemberian Nomor pada diagram level n dengan ketentuan sebagai berikut:

Page | 47

Setiap

penurunan

ke

level

yang

lebih

rendah

harus

mampu

merepresentasikan proses tersebut dalam sepesifikasi proses yang jelas. Sehingga seandainya belum cukup jelas maka seharusnya diturunkan ke level yang lebih rendah. Setiap penurunan harus dilakukan hanya jika perlu. Tidak semua bagian dari sistem harus diturunkan dengan jumlah level yang sama karena yang kompleks bisa saja diturunkan, dan yang sederhana mungkin tidak perlu diturunkan. Selain itu, karena tidak semua proses dalam level yang sama punya derajat kompleksitas yang sama juga. Konfirmasikan DFD yang telah dibuat pada pemakai dengan cara topdown. Aliran data yang masuk dan keluar pada suatu proses di level n harus berhubungan dengan aliran data yang masuk dan keluar pada level n+1. Dimana level n+1 tersebut mendefinisikan sub-proses pada level n tersebut. Penyimpanan yang muncul pada level n harus didefinisikan kembali pada level n+1, sedangkan penyimpanan yang muncul pada level n tidak harus muncul pada level n-1 karena penyimpanan tersebut bersifat lokal. Ketika mulai menurunkan DFD dari level tertinggi, cobalah untuk mengidentifikasi external events dimana sistem harus memberikan respon. External events dalam hal ini berarti suatu kejadian yang berkaitan dengan pengolahan data di luar sistem, dan menyebabkan sistem kita memberikan respon. Jangan menghubungkan langsung antara satu penyimpanan dengan penyimpanan lainnya (harus melalui proses). Jangan menghubungkan langsung dengan tempat penyimpanan data dengan entitas eksternal / terminator (harus melalui proses), atau sebaliknya. Jangan membuat suatu proses menerima input tetapi tidak pernah mengeluarkan output yang disebut dengan istilah black hole.

Page | 48

Jangan membuat suatu tempat penyimpanan menerima input tetapi tidak pernah digunakan untuk proses. Jangan membuat suatu hasil proses yang lengkap dengan data yang terbatas yang disebut dengan istilah magic process. Jika terdapat terminator yang mempunyai banyak masukan dan keluaran, diperbolehkan untuk digambarkan lebih dari satu sehingga mencegah penggambaran yang terlalu rumit, dengan memberikan tanda asterik ( * ) atau garis silang ( # ), begitu dengan bentuk penyimpanan. Aliran data ke proses dan keluar sebagai output keterangan aliran data berbeda.

2.4 DIAGRAM BERJENJANGDinamakan diagram berjenjang karena diagram ini dibuat dengan urutan/jenjang dari DFD Level0 Sampai DFD Level1 atau DFD Level2(bila diperlukan). Diagram berjenjang merupakan diagram yang di buat untuk mempermudah proses pembuatan DFD Levelled, dimana diagram ini merupakan garis besar dari DFD/DAD. Conto diagram berjenjang dari DFD di atas adalah sebagai berikut:

Page | 49

Diagram Berjenjang Sistem Informasi Toko Baju

1 P C e r i k s a u s t o m D e a r t a P

2

Page | 50

2.5 DOCUMENT FLOW (Flow Of Document)Flow of Document identik dengan perancangan sistem, maksudnya hampir setiap pengembang sistem memanfaatkan flow of document sebagai salah satu alat perancangan sistem untuk menggambarkan sistem lama pada tahap analisis atau menggambarkan sistem yang baru pada tahap perancangan flow of document adalah alat pembuatan model yang memungkinkan profesional sistem untuk menggambarkan sistem sebagai suatu jaringan proses fungsional yang dihubungkan satu dengan yang lainnya dengan alur data baik secara manual maupun secara komputerisasi. Bagan alir ini disebut juga bagan alir formulir yang menunjukan prosedur dari sistem secara logika yang utama dan arus laporan.

Page | 51

B

a g i a n

P

e nC

M

u

l a i O

M B

e n a w a r a n g

a r k d a n

a h

H 2

Document Flow Sistem Informasi Toko Baju

a r g

a

b

a r a nPage | 52

B

a g i a

1

Document Flow Lanjutan Sistem Informasi Toko Baju

2.6 ER DIAGRAM(ERD)

ERD merupakan suatu model untuk menjelaskan hubungan antar data dalam basis ERD untuk memodelkan struktur data dan hubungan antar data, untuk

data berdasarkan objek-objek dasar data yang mempunyai hubungan antar relasi. menggambarkannya digunakan beberapa notasi dan simbol. Pada dasarnya ada tiga simbol yang digunakan, yaitu : a. Entiti

t o k h a b i s p e r m

S

B b i

P P e e r rm mPage | 53

1

Entiti merupakan objek yang mewakili sesuatu yang nyata dan dapat dibedakan dari sesuatu yang lain (Fathansyah, 1999: 30). Simbol dari entiti ini biasanya digambarkan dengan persegi panjang. b. Atribut Setiap entitas pasti mempunyai elemen yang disebut atribut yang berfungsi untuk mendeskripsikan karakteristik dari entitas tersebut. Isi dari atribut mempunyai sesuatu yang dapat mengidentifikasikan isi elemen satu dengan yang lain. Gambar atribut diwakili oleh simbol elips.c. Hubungan / Relasi

Hubungan antara sejumlah entitas yang berasal dari himpunan entitas yang berbeda. Relasi dapat digambarkan sebagai berikut : Relasi yang terjadi diantara dua himpunan entitas (misalnya A dan B) dalam satu basis data yaitu (Abdul Kadir, 2002: 48) : 1). Satu ke satu (One to one) Hubungan relasi satu ke satu yaitu setiap entitas pada himpunan entitas A berhubungan paling banyak dengan satu entitas pada himpunan entitas B. 2). Satu ke banyak (One to many) Setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas pada himpunan entitas B, tetapi setiap entitas pada entitas B dapat berhubungan dengan satu entitas pada himpunan entitas A. 3). Banyak ke banyak (Many to many) Setiap entitas pada himpunan entitas A dapat berhubungan dengan banyak entitas pada himpunan entitas B.

Page | 54

BAB III URAIAN SISTEM3.1 DESKRIPSI SISTEMSkema Basis Data Dalam menganalisa prosedur pembelian, penjualan dan persediaan pada perusahaan, penulis menggunakan alat bantu berupa Flow Of Document (FOD). Setelah melakukan pengamatan dan wawancara dengan beberapa personil dalam perusahaan, penulis menyajikan gambaran atas prosedur tersebut sebagai berikut.Supplier Bagian Pembelian Bagian Persediaan Bagian Penjualan Customer

Mulai

2 Laporan Pembelian Laporan Penjualan

2 Data Order Penjualan Data Order Penjualan

Membuat Data Pembelian 2

Membuat Laporan Persediaan

N

Membuat Faktur Penjualan 2

Faktur Pembelian

1 Data Pembelian Data Pembelian

1

1 N Laporan Persediaan Faktur Penjualan

1 Faktur Penjualan

Faktur Pembelian N

Mencatat transaksi penjualan Membuat Laporan Penjualan Faktur Penj 2 2 1

Mencatat transaksi pembelian Membuat Laporan Pembelian 2

1 Laporan Pembelian

Laporan Penjualan

N

Manajer 1 Laporan Penjualan

1 Laporan Pembelian

Laporan Persediaan

Selesai

Gambar Sistem Pembelian, Penjualan dan Persediaan Toko Baju

Page | 55

Berikut adalah penjelasan dari prosedur tersebut: Pembelian Bagian pembelian membuat data pembelian yang diberikan ke supplier. Selanjutnya atas transaksi pembelian yang terjadi, supplier memberikan faktur pembelian ke bagian pembelian. Dari faktur tersebut, bagian pembelian mencatat nilai transaksi dan dihasilkan laporan pembelian yang akan diberikan ke bagian persediaan dan manajer. Penjualan Bagian penjualan menerima data order penjualan dari customer. Atas pesanan tersebut, dibuatlah faktur penjualan yang akan dikirimkan ke customer bersamaan dengan penyerahan barang. Kemudian bagian penjualan mencatat transaksi penjualan yang terjadi dan dihasilkan laporan penjualan yang akan diserahkan ke bagian persediaan dan manajer. Persediaan Dari laporan pembelian dan laporan penjualan yang diterima masingmasing dari bagian pembelian dan penjualan, dibuatlah laporan persediaan yang akan diserahkan kepada manajer.

Bentuk-Bentuk Laporan 1. Laporan Pembelian Laporan ini menampilkan tanggal pembelian, no faktur, nama supplier, jenis persediaan, kuantitas, harga per unit dan jumlah harga yang dibeli. Laporan disajikan kepada manajer setiap bulannya menurut urutan kronologis. Bila manajer ingin mengetahui berapa banyak persediaan yang dibeli dari masing-masing supplier, staf yang bersangkutan harus mensortir kembali laporan tersebut menurut nama supplier. Begitupun halnya, bila manajer ingin mengetahui banyaknya kuantitas dari masingmasing persediaan yang dibeli

Page | 56

selama sebulan, laporan tersebut harus disortir kembali menurut jenis persediaan. Berikut adalah tampilan dari laporan pembelian.

Gambar Laporan Pembelian 2. Laporan Penjualan Laporan ini menampilkan tanggal terjadinya transaksi penjualan, nama customer, persediaan yang terjual, nomor invoice, kuantitas yang terjual, harga per unit penjualan, dan jumlah penjualan, yang ditampilkan dalam Rupiah. Sama halnya dengan laporan pembelian, laporan penjualan juga disajikan menurut urutan kronologisnya dan harus disortir kembali menurut nama customer maupun jenis persediaan bila ada permintaan dari manajer atas laporan tersebut. Berikut adalah tampilan dari laporan penjualan.

Gambar Laporan PenjualanPage | 57

3.

Laporan Persediaan Laporan ini menampilkan stok akhir masing-masing persediaan untuk setiap bulannya. Berikut adalah tampilan dari laporan persediaan.

Gambar Laporan Persediaan Laporan persediaan tersebut direkap dari rincian stok untuk masing-masing persediaan yang ditampilkan sebagai berikut.

Page | 58

Gambar Laporan Stok Per Jenis Persediaan

3.2 DIAGRAM KONTEKS DAN DATA FLOW DIAGRAM (DFD)

Untuk mendukung perancangan sistem pembelian, penjualan dan persediaan, penulis menggambarkan data flow diagram untuk dijadikan sebagai model yang nantinya akan digunakan dalam membuat program. Adapun diagram konteks yang telah penulis rancang adalah sebagai berikut:

Supplier

Data Pembelian

Data Order Penjualan

Customer

Faktur Pembelian

0Sistem Informasi Pembelian, Penjualan dan Persediaan

Faktur Penjualan

Data Supplier

Data Customer

Laporan Pembelian

Laporan Persediaan

Laporan Penjualan

Manajer

Gambar Diagram Konteks Sistem Informasi Pembelian, Penjualan dan Persediaan

Page | 59

3.3 Rancangan DFD Level

Data Pembelian 1 Supplier Faktur pembelian

Record Supplier

D1

Supplier

Record Supplier

Pembelian

Data Supplier Record Barang Saldo Pembelian

Record Pembelian

Laporan Pembelian 3

D3

Data Barang

Record Barang

Buat Laporan

Laporan Persediaan

Manajer

Record Barang Data Order Penjualan 2 Customer Faktur penjualan

Saldo Penjualan

Record CustomerD2

Laporan Penjualan

Customer

Penjualan

Record Customer

Record Penjualan

Data Customer

Gambar Data Flow Diagram Level 0 Sistem Informasi Pembelian, Penjualan dan Persediaan

Page | 60

1.1 Data Supplier Membuat Kode Supplier Record SupplierD1

Supplier Record Supplier 1.3 Membuat Data Pembelian Record BarangD3

Record Supplier

Data Pembelian Faktur Pembelian

1.2 Data Barang Membuat Kode Barang

Record Pembelian

Saldo Pembelian

Record Barang Record Barang

Data Barang

D4

Pembelian

Record Pembelian

Gambar Data Flow Diagram Level 1 Proses Pembelian

2.1 Data Customer Membuat Kode Customer Record CustomerD2

Customer

Record Customer

2.2 Data Order Penjualan Membuat Data Penjualan

Record Customer Record BarangD3

Data Barang

Record Barang

Saldo Penjualan Record Penjualan

2.3 Faktur Penjualan Mencetak Faktur Penjualan Record PenjualanD5

Penjualan

Record Penjualan

Page | 61

Gambar Data Flow Diagram Level 1 Proses Penjualan

Record Supplier Record Pembelian

D1

Supplier Pembelian

Record Supplier Record Pembelian

3.1 Membuat Laporan Pembelian Laporan Pembelian

D4

Record Barang 3.2 Record BarangD3

Data Barang

Record Barang

Membuat Laporan Persediaan

Laporan Persediaan

Record Barang Record Customer Record PenjualanD2

Customer Penjualan

Record Customer Record Penjualan

3.3 Membuat Laporan Penjualan Laporan Penjualan

D5

Gambar Data Flow Diagram Level 1 Proses Membuat Laporan

Dari analisa sistem berjalan yang telah penulis lakukan, penulis menyimpulkan bahwa dibutuhkan suatu database untuk menyimpan data-data pada sistem pembelian, penjualan dan persediaan perusahaan. Berikut adalah kamus data yang diperlukan. 1. Data Barang = Kode Barang + Nama Barang + Satuan + Jenis + Harga Beli + Harga Jual + (Keterangan) + Saldo Stock + Saldo Harga Stock2. Data Supplier

= Kode Supplier + Nama Supplier + Alamat + Kota + Negara + Contact Person + No.Telp + Email + No.HP + (Keterangan)Page | 62

3. Data Customer

= Kode Customer + Nama Customer + Alamat + Kota + Negara + Contact Person + No.Telp + Email + No.HP + (Keterangan)

4. Data Pembelian

= No.Faktur Beli + Tgl Faktur + Kode Supplier + Nama Supplier + Alamat + Kota + Negara + (Keterangan) + {Item Data Barang Beli} + Total Harga

5. Data Penjualan

= No.Faktur Jual + Tgl Faktur + Kode Customer + Nama Customer + Alamat + Kota + Negara + (Keterangan) + {Item Data Barang Jual}+ Total Harga USD + Rate + Total Harga IDR

6.

Item Data Barang Beli = Kode Barang + Nama Barang + Kuantitas + Harga + Jumlah

7.

Item Data Barang Jual = Kode Barang + Nama Barang + Kuantitas + Harga + Jumlah + Total Harga Average

Page | 63

3.4 ENTITY RELATIONSHIP TABEL

Page | 64

3.5 PDM & CDMDiagram PDMT Supplier KodeSupp NamaSupp Alamat Kota Negara ContactP NoTelp Email NoHP Keterangan TBeli FK_TDBELI_REFERENCE_TBELI TDBeli NoFaktur KodeBarang Qty Harga SubTotal text text double double double NoFaktur text text TglFaktur date text FK_TBELI_REFERENCE_T SUPPLIE text KodeSupp text Keterangan text text TotalHarga double text text text text text text

TBarang KodeBarang NamaBarang Satuan Jenis HBeli HJual Keterangan Saldo SaldoHrg text text text text double double text double double FK_T DBELI_REFERENCE_TBARANG

TCustom er KodeCust NamaCust Alamat Kota Negara ContactP NoTelp Email NoHP Keterangan text text text text text text text text text text

FK_TDJUAL_REFERENCE_TBARANG TDJual NoFaktur KodeBarang Qty Harga SubTotal TotalHAverage text text double double double double

FK_TDJUAL_REFERENCE_TJUAL TJual NoFaktur TglFaktur KodeCust Keterangan TotalHarga Rate TotalHargaIDR text date text text double double double

FK_T JUAL_REFERENCE_TCUSTOME

Page | 65

Diagram CDMTSupplier KodeSupp NamaSupp Alamat Kota Negara ContactP NoT elp Email NoHP Keterangan

o o o o o o o o o o

Text Text Text Text Text Text Text Text Text Text

Rel ationship_1

o o o o o

TBel i NoFaktur TglFaktur KodeSupp Keterangan TotalHarga

T ext Date Relationship_3 T ext T ext Number

o o o o o

T DBeli NoFaktur KodeBarang Qty Harga SubT otal

Text Text Number Number Number

Relationship_2 o o o o o o o o o TBarang KodeBarang Text NamaBarang Text Satuan Text Jenis Text HBeli Number HJual Number Keterangan Text Saldo Number SaldoHrg Number

Relationship_4

o o o o o o o o o o

T Customer KodeCust Text NamaCust Text Relationship_5 Alamat Text Kota Text Negara Text ContactP Text NoTelp Text Email Text NoHP Text Keterangan Text

o o o o o o o

T Jual NoFaktur TglFaktur KodeCust Keterangan Total Harga Rate Total HargaIDR

Text Date Text Text Number Number Number

Relationship_6

o o o o o o

TDJual NoFaktur KodeBarang Qty Harga SubTotal T otalHAverage

Text Text Number Number Number Number

Page | 66

3.6 NORMALISASI TABELBerdasarkan kamus data yang telah penulis bahas pada subbab 3.2.2, maka dapat dirancang database yang akan digunakan dalam sistem ini. Setelah dipelajari, penulis menyimpulkan bahwa telah terjadi redudansi data pada faktur pembelian dan faktur penjualan, sehingga perlu dilakukan normalisasi untuk menghilangkan data-data redudan tersebut agar menghasilkan database yang baik. Hasil normalisasi tersebut dapat dilihat sebagai berikut: 1. Normalisasi Data PembelianNoFaktur TglFaktur KodeSupp NamaSupp Alamat Kota Negara Keterangan KodeBarang NamaBarang Qty Harga SubTotal TotalHarga

1.a. Normalisasi Pertama (1NF) Tabel Pembelian dan SupplierNoFaktur TglFaktur KodeSupp NamaSupp Alamat Kota Negara Keterangan TotalHarga

Tabel Pembelian dan BarangNoFaktur KodeBarang NamaBarang Qty Harga SubTotal

1.b. Normalisasi Ketiga (3NF) Tabel PembelianNoFaktur TglFaktur KodeSupp Keterangan TotalHarga

Tabel SupplierKodeSupp NamaSupp Alamat Kota Negara

Tabel Pembelian dan BarangNoFaktur KodeBarang Qty Harga SubTotal

Tabel BarangKodeBarang NamaBarang

Page | 67

2.

Normalisasi Data PenjualanNoFaktur TglFaktur Rate KodeCust NamaCust Alamat Kota Negara Keterangan KodeBarang NamaBarang Qty Harga SubTotal TotalHarga TotalHarga IDR TotalHAverage

1.a. Normalisasi Pertama (1NF) Tabel Penjualan dan CustomerNoFaktur TglFaktur KodeCust NamaCust Alamat Kota Negara Keterangan TotalHarga Rate TotalHarga IDR

Tabel Penjualan dan BarangNoFaktur KodeBarang NamaBarang Qty Harga SubTotal TotalHAverage

1.b. Normalisasi Ketiga (3NF) Tabel PenjualanNoFaktur TglFaktur KodeCust Keterangan TotalHarga Rate TotalHarga IDR

Tabel CustomerKodeCust NamaCust Alamat Kota Negara

Tabel Penjualan dan BarangNoFaktur KodeBarang Qty Harga SubTotal TotalHAverage

Tabel BarangKodeBarang NamaBarang

Table Database Perancangan database dilakukan dengan menggunakan Microsoft Access 2002. Desain database dimaksudkan untuk mendefinisikan isi atau struktur tabel. Adapun entitas yang digunakan dalam perancangan database adalah sebagai berikut. Tabel BarangField KodeBarang NamaBarang Satuan Jenis Hbeli Hjual Keterangan Saldo SaldoHrg Type Text Text Text Text Number Number Text Number Number Size 20 50 20 20 Double Double 50 Double Double Description Kode barang Nama barang Satuan barang Jenis barang (product atau by product) Harga beli barang Harga jual barang Keterangan mengenai barang Saldo akhir barang (kuantitas) Saldo akhir barang dalam rupiah

Page | 68

Tabel SupplierField Type KodeSupp Text NamaSupp Text Alamat Text Kota Text Negara Text ContactP Text NoTelp Text Email Text NoHP Text Keterangan Text Size 20 50 50 20 50 50 20 50 20 50 Description Kode supplier Nama supplier Alamat supplier Kota Negara Orang yang bisa dihubungi Nomor telepon yang bisa dihubungi Email address Nomor hand phone Keterangan mengenai supplier

Tabel CustomerField KodeCust NamaCust Alamat Kota Negara ContactP NoTelp Email NoHP Keterangan Type Text Text Text Text Text Text Text Text Text Text Size 20 50 50 20 50 50 20 50 20 50 Description Kode customer Nama customer Alamat customer Kota Negara Orang yang bisa dihubungi Nomor telepon yang bisa dihubungi Email address Nomor hand phone Keterangan mengenai customer

Tabel PembelianField NoFaktur TglFaktur KodeSupp Keterangan TotalHarga Type Text Date/Time Text Text Number Size 20 Short Date 20 50 Double Description Nomor faktur pembelian Tanggal faktur pembelian Kode supplier Keterangan atas pembelian Nominal faktur

Page | 69

Tabel Detail PembelianField NoFaktur KodeBarang Qty Harga SubTotal Type Text Text Number Number Number Size 20 20 Double Double Double Description Nomor faktur pembelian Kode barang yang dibeli Kuantitas pembelian Harga per unit barang Jumlah pembelian dalam rupiah

Tabel PenjualanField Type NoFaktur Text TglFaktur Date/Time KodeCust Text Keterangan Text TotalHarga Number Rate Number TotalHargaIDR Number Size 20 Short Date 20 50 Double Double Double Description Nomor faktur penjualan Tanggal faktur penjualan Kode customer Keterangan atas penjualan Nominal faktur dalam US Dollar Kurs Pajak Nominal faktur dalam rupiah

Tabel Detail PenjualanField NoFaktur KodeBarang Qty Harga SubTotal TotalHAverage Type Text Text Number Number Number Number Size 20 20 Double Double Double Double Description Nomor faktur penjualan Kode barang yang dijual Kuantitas penjualan Harga per unit barang Jumlah penjualan dalam US Dollar Total biaya rata-rata barang

Page | 70

User InterfaceMenu Utama

Master Barang Supplier Customer

Transaksi Pembelian Penjualan

Laporan Pembelian Penjualan Persediaan Per Tanggal Per Supplier Per Barang Per Tanggal Per Customer Per Barang

Window Tile Horizontally Tile Vertically Cascade Arrange Icons

About

Exit

Page | 71

BAB IV IMPLEMENTASI4.1 LISTING PROGRAMBerikut ini adalah Sintak(Code Program) yang kami pakai pada Aplikasi Sistem Informasi Toko Baju yang telah Kami rancang dan kami buat: Form Main(Untuk Tampilan Program)Option Explicit Private Sub MDIForm_Unload(Cancel As Integer) oConn.Close Set oConn = Nothing End Sub Private Sub mnAbout_Click() frmAbout.Show vbModal End Sub Private Sub mnExit_Click() End End Sub Private Sub mnLBeliBrg_Click() frmLapBeliB1.Show End Sub Private Sub mnLBeliSupp_Click() frmLapBeliS1.Show End Sub Private Sub mnLBeliTgl_Click() frmLapBeli1.Show End Sub

Page | 72

Private Sub mnLJualBrg_Click() frmLapJualB1.Show End Sub Private Sub mnLJualCust_Click() frmLapJualC1.Show End Sub Private Sub mnLJualTgl_Click() frmLapJual1.Show End Sub Private Sub mnLSaldoStock_Click() frmLapSaldoStock1.Show End Sub Private Sub mnMBarang_Click() frmBarang.Show End Sub Private Sub mnMCustomer_Click() frmCustomer.Show End Sub Private Sub mnMSupplier_Click() frmSupplier.Show End Sub Private Sub mnTPembelian_Click() frmBeli.Show End Sub Private Sub mnTPenjualan_Click() frmJual.Show End Sub Private Sub mnWAIcons_Click() Me.Arrange vbArrangeIconsPage | 73

End Sub Private Sub mnWCascade_Click() Me.Arrange vbCascade End Sub Private Sub mnWTileH_Click() Me.Arrange vbTileHorizontal End Sub Private Sub mnWTileV_Click() Me.Arrange vbTileVertical End Sub

Form BarangOption Explicit Private nLastRow As Integer Private Sub cmdCari_Click() If Trim(txtKunci.Text) = "" Then Exit Sub Dim I As Long Dim J As Integer Dim nSearchCol As Integer 'Ambil kolom yang dicari nSearchCol = cboKategori.ListIndex + 1 With MData If nLastRow > 0 Then 'Background Putih For I = 1 To .Cols - 1 .Col = I .Row = nLastRow

Page | 74

.CellBackColor = &HFFFFFF Next I End If 'Cari Text For I = nLastRow + 1 To .Rows - 1 If InStr(1, UCase(.TextMatrix(I, nSearchCol)), _ UCase(txtKunci.Text)) > 0 Then nLastRow = I 'Warnai dengan background kuning .Row = I For J = 1 To .Cols - 1 .Col = J .CellBackColor = &H87F2F0 Next J Exit For End If Next I If I = .Rows Then 'Reset kembali - pencarian dari awal nLastRow = 0 End If 'Set Focus If .TopRow + 10 < nLastRow Then .TopRow = nLastRow End With End Sub Private Sub cmdCloseHelp_Click() picHelp.Visible = False End Sub

Page | 75

Private Sub cmdHelp_Click() picHelp.Visible = True picHelp.ZOrder 0 cmdCloseHelp.SetFocus End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn Then 'Untuk Enter SendKeys "{TAB}" Else Select Case KeyCode Case vbKeyF1: Call Proses("HELP") Case vbKeyF2: Call Proses("BARU") Case vbKeyF3: Call Proses("SIMPAN") Case vbKeyF4: Call Proses("HAPUS") Case vbKeyF5: Call Proses("REFRESH") Case vbKeyF6: Call Proses("FIRST") Case vbKeyF7: Call Proses("PREVIOUS") Case vbKeyF8: Call Proses("NEXT") Case vbKeyF9: Call Proses("LAST") Case vbKeyF10: Call Proses("KELUAR") Case vbKeyF12: Call Proses("PRINT") End Select End If End Sub Private Sub Form_KeyPress(KeyAscii As Integer) 'Karakter ' If Chr(KeyAscii) = "'" Then KeyAscii = 0 End Sub Private Sub Form_Load() nLastRow = 0 cboKategori.ListIndex = 0

Page | 76

txtHBeli.Text = Format("0", cFComma) txtHJual.Text = Format("0", cFComma) lblBanyak = Format("0", cFComma) lblSaldoHrg = Format("0", cFComma) 'Format Tabel With MData .Cols = 8: .Rows = 1 .TextMatrix(0, 0) = "No." .ColAlignment(0) = 6 .ColWidth(0) = 500 .TextMatrix(0, 1) = "Kode Barang" .FixedAlignment(1) = 4 .ColAlignment(1) = 1 .ColWidth(1) = 1200 .TextMatrix(0, 2) = "Nama Barang" .FixedAlignment(2) = 4 .ColAlignment(2) = 1 .ColWidth(2) = 2500 .TextMatrix(0, 3) = "Satuan" .FixedAlignment(3) = 4 .ColAlignment(3) = 1 .ColWidth(3) = 900 .TextMatrix(0, 4) = "Jenis" .FixedAlignment(4) = 4 .ColAlignment(4) = 1 .ColWidth(4) = 1200 .TextMatrix(0, 5) = "H.Beli (Rp)" .FixedAlignment(5) = 4 .ColAlignment(5) = 6 .ColWidth(5) = 1250

Page | 77

.TextMatrix(0, 6) = "H.Jual (USD)" .FixedAlignment(6) = 4 .ColAlignment(6) = 6 .ColWidth(6) = 1250 .TextMatrix(0, 7) = "Saldo Qty" .FixedAlignment(7) = 4 .ColAlignment(7) = 6 .ColWidth(7) = 1150 End With End Sub Private Sub MData_DblClick() If MData.Row > 0 Then 'Tampilkan data SSTab1.Tab = 0 txtKodeBarang.Text = MData.TextMatrix(MData.Row, 1) txtKodeBarang.SetFocus End If End Sub Private Sub MData_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Call MData_DblClick End Sub Private Sub SSTab1_Click(PreviousTab As Integer) TBR.Buttons(1).Enabled = (SSTab1.Tab = 0) TBR.Buttons(2).Enabled = (SSTab1.Tab = 0) TBR.Buttons(3).Enabled = (SSTab1.Tab = 0) TBR.Buttons(5).Enabled = (SSTab1.Tab = 0) TBR.Buttons(6).Enabled = (SSTab1.Tab = 0) TBR.Buttons(7).Enabled = (SSTab1.Tab = 0) TBR.Buttons(8).Enabled = (SSTab1.Tab = 0) TBR.Buttons(9).Enabled = (SSTab1.Tab = 0)

Page | 78

If SSTab1.Tab = 1 Then 'BrowseData Call BrowseData End If End Sub Private Sub txtKodeBarang_Change() Dim cF As String Dim rsTampil As New ADODB.Recordset 'Bersihkan layar Call Clear(False) cF = "Select * From TBarang Where KodeBarang = '" & txtKodeBarang.Text & "'" With rsTampil 'Buka recordset .Open cF, oConn, adOpenStatic, adLockReadOnly, adCmdText 'Jika terdaftar, maka tampilkan If .RecordCount > 0 Then txtNamaBarang.Text = !NamaBarang txtSatuan.Text = !Satuan txtJenis.Text = !Jenis txtHBeli.Text = Format(!HBeli, cFComma) txtHJual.Text = Format(!HJual, cFComma) txtKeterangan.Text = !Keterangan lblBanyak.Caption = Format(!Saldo, cFComma) lblSaldoHrg.Caption = Format(!SaldoHrg, cFComma) End If End With 'Tutup RS Call CloseRS(rsTampil) End Sub

Page | 79

Private Sub TBR_ButtonClick(ByVal Button As MSComctlLib.Button) 'Jalankan proses Call Proses(Button.Key) End Sub '----------------------' TEXTBOX HARGA BELI '----------------------Private Sub txtHBeli_GotFocus() Call GotFocus(txtHBeli) End Sub Private Sub txtHBeli_KeyPress(KeyAscii As Integer) If KeyAscii vbKeyBack And (KeyAscii < Asc("0") Or KeyAscii > Asc("9")) _ And Chr(KeyAscii) "," And Chr(KeyAscii) "." Then KeyAscii = 0 End If End Sub Private Sub txtHBeli_LostFocus() Call LostFocus(txtHBeli) End Sub '----------------------' TEXTBOX HARGA JUAL '----------------------Private Sub txtHJual_GotFocus() Call GotFocus(txtHJual) End Sub Private Sub txtHJual_KeyPress(KeyAscii As Integer) If KeyAscii vbKeyBack And (KeyAscii < Asc("0") Or KeyAscii > Asc("9")) _Page | 80

And Chr(KeyAscii) "," And Chr(KeyAscii) "." Then KeyAscii = 0 End If End Sub Private Sub txtHJual_LostFocus() Call LostFocus(txtHJual) End Sub '----------------------' PROCEDURE & FUNCTION '----------------------Private Sub BrowseData() Dim I As Long Dim cF As String Dim rsB As New ADODB.Recordset MData.Rows = 1 cF = "Select * From TBarang Order By KodeBarang" rsB.Open cF, oConn, adOpenStatic, adLockReadOnly, adCmdText For I = 1 To rsB.RecordCount MData.AddItem I & "." & vbTab & rsB!Kodebarang & vbTab & _ rsB!NamaBarang & vbTab & rsB!Satuan & vbTab & rsB!Jenis & _ vbTab & Format(rsB!HBeli, cFComma) & _ vbTab & Format(rsB!HJual, cFComma) & _ vbTab & Format(rsB!Saldo, cFComma) rsB.MoveNext Next I Call CloseRS(rsB) DoEvents End Sub Private Sub Proses(pcProses As String)Page | 81

Select Case pcProses Case "BARU": If TBR.Buttons(1).Enabled Then Call Clear(True) Case "SIMPAN": If TBR.Buttons(2).Enabled Then Call ProcSimpan Case "HAPUS": If TBR.Buttons(3).Enabled Then Call ProcHapus Case "REFRESH" If SSTab1.Tab = 0 Then Call txtKodeBarang_Change Else Call BrowseData End If Case "FIRST" If TBR.Buttons(5).Enabled Then txtKodeBarang.Text = GetRecord("FIRST", "TBarang", "KodeBarang") Case "PREVIOUS" If TBR.Buttons(6).Enabled Then txtKodeBarang.Text = GetRecord("PREVIOUS", "TBarang", "KodeBarang", txtKodeBarang.Text) Case "NEXT" If TBR.Buttons(7).Enabled Then txtKodeBarang.Text = GetRecord("NEXT", "TBarang", "KodeBarang", txtKodeBarang.Text) Case "LAST" If TBR.Buttons(8).Enabled Then txtKodeBarang.Text = GetRecord("LAST", "TBarang", "KodeBarang") Case "HELP" picHelp.Visible = TruePage | 82

picHelp.ZOrder 0 cmdCloseHelp.SetFocus Case "PRINT" frmLapBarang.Show frmLapBarang.ZOrder 0 Case "KELUAR": End Select End Sub 'Bersihkan layar Private Sub Clear(pbAll As Boolean) If pbAll Then txtKodeBarang.Text = "" txtKodeBarang.SetFocus End If txtNamaBarang.Text = "" txtSatuan.Text = "" txtJenis.Text = "" txtHBeli.Text = Format("0", cFComma) txtHJual.Text = Format("0", cFComma) lblBanyak.Caption = Format("0", cFComma) lblSaldoHrg.Caption = Format("0", cFComma) txtKeterangan.Text = "" End Sub 'Pengecekan apakah kode barang sedang digunakan Private Function IsKodeBarangUse(pcKodeBarang As String) As Boolean Dim cF As String Dim rS As New ADODB.Recordset cF = "Select KodeBarang From TDBeli " & _ "Where KodeBarang = '" & pcKodeBarang & "' " & _ "UNION ALL " & _ "Select KodeBarang From TDJual " & _ "Where KodeBarang = '" & pcKodeBarang & "' "Page | 83

Unload Me

rS.Open cF, oConn, adOpenStatic, adLockReadOnly, adCmdText IsKodeBarangUse = (rS.RecordCount > 0) Call CloseRS(rS) End Function 'Pengecekan apakah kode barang sudah ada sebelumnya Private Function IsExistKodeBarang(pcKodeBarang As String) As Boolean Dim cF As String Dim rS As New ADODB.Recordset cF = "Select KodeBarang From TBarang " & _ "Where KodeBarang = '" & pcKodeBarang & "'" rS.Open cF, oConn, adOpenStatic, adLockReadOnly, adCmdText IsExistKodeBarang = (rS.RecordCount > 0) Call CloseRS(rS) End Function 'Prosedur simpan ke database Private Sub ProcSimpan() 'Cek Validitas Form If Trim(txtKodeBarang.Text) = "" Then MsgBox "Kode barang tidak boleh kosong !", vbCritical, "Error" txtKodeBarang.SetFocus Exit Sub ElseIf Trim(txtNamaBarang.Text) = "" Then MsgBox "Nama barang tidak boleh kosong !", vbCritical, "Error" txtNamaBarang.SetFocus Exit Sub ElseIf Trim(txtSatuan.Text) = "" Then MsgBox "Satuan tidak boleh kosong !", vbCritical, "Error" txtSatuan.SetFocus Exit SubPage | 84

ElseIf Trim(txtJenis.Text) = "" Then MsgBox "Jenis barang tidak boleh kosong !", vbCritical, "Error" txtJenis.SetFocus Exit Sub ElseIf FNum(txtHBeli.Text) = "0.00" Then MsgBox "Harga beli tidak boleh kosong !", vbCritical, "Error" txtHBeli.SetFocus Exit Sub ElseIf FNum(txtHJual.Text) = "0.00" Then MsgBox "Harga jual tidak boleh kosong !", vbCritical, "Error" txtHJual.SetFocus Exit Sub End If On Error GoTo errSave 'Mulai Simpan oConn.BeginTrans If IsExistKodeBarang(Trim(txtKodeBarang.Text)) Then 'Data sudah ada -> pakai syntax update 'Syntax SQL untuk update strSQL = "Update TBarang Set KodeBarang = '" & Trim(txtKodeBarang.Text) & "', " & _ "NamaBarang = '" & Trim(txtNamaBarang.Text) & "', " & _ "Satuan = '" & Trim(txtSatuan.Text) & "', " & _ "Jenis = '" & Trim(txtJenis.Text) & "', " & _ "HBeli = " & FNum(txtHBeli.Text) & ", " & _ "HJual = " & FNum(txtHJual.Text) & ", " & _ "Keterangan = '" & Trim(txtKeterangan.Text) & "' " & _ "Where KodeBarang = '" & Trim(txtKodeBarang.Text) & "'" ElsePage | 85

'Data belum ada -> pakai syntax insert 'Syntax SQL untuk simpan data baru strSQL = "Insert Into TBarang(KodeBarang, NamaBarang, Satuan, " & _ "Jenis, HBeli, HJual, Keterangan) Values ('" & _ Trim(txtKodeBarang.Text) & "','" & Trim(txtNamaBarang.Text) & "','" & _ Trim(txtSatuan.Text) & "','" & Trim(txtJenis.Text) & "'," & _ FNum(txtHBeli.Text) & "," & FNum(txtHJual.Text) & _ ",'" & Trim(txtKeterangan.Text) & "')" End If 'Eksekusi SQL - simpan ke tabel oConn.Execute strSQL 'Commit Trans oConn.CommitTrans 'Bersihkan layar Call Clear(True) Exit Sub errSave: oConn.RollbackTrans MsgBox "Proses penyimpanan gagal !" & vbCrLf & Err.Description, vbCritical, "Error" End Sub 'Prosedur hapus dari database Private Sub ProcHapus() 'Cek Validitas Form If Trim(txtKodeBarang.Text) = "" Then Exit Sub 'Konfirmasi hapusPage | 86

If MsgBox("Hapus data ini ?", vbQuestion + vbYesNo, "Hapus") = vbNo Then Exit Sub 'Jika barang sedang dipergunakan If IsKodeBarangUse(txtKodeBarang.Text) Then MsgBox "Kode barang sedang digunakan ! Proses hapus gagal !", vbCritical, "Hapus" Exit Sub End If On Error GoTo errDel 'Mulai Hapus oConn.BeginTrans 'Syntax SQL - Delete strSQL = "Delete From TBarang Where KodeBarang = '" & txtKodeBarang.Text & "'" 'Eksekusi SQL - simpan ke tabel oConn.Execute strSQL 'Commit Trans oConn.CommitTrans 'Bersihkan layar Call Clear(True) Exit Sub errDel: oConn.RollbackTrans MsgBox "Proses hapus data gagal !" & vbCrLf & Err.Description, vbCritical, "Error" End Sub

Page | 87

Form Laporan BarangOption Explicit 'REPORT - OBJECT Private rsCetak As New ADODB.Recordset Private cRep As New CRAXDDRT.Report Private cApp As New CRAXDDRT.Application Private Sub Form_Load() Dim cF As String 'Sumber rpt Set cRep = cApp.OpenReport(App.Path & "\Laporan\DaftarBarang.rpt") 'SQL Laporan cF = "Select KodeBarang, NamaBarang, Satuan, Jenis, Saldo, SaldoHrg " & _ "From TBarang Order By KodeBarang " rsCetak.Open cF, oConn, adOpenStatic, adLockReadOnly, adCmdText If rsCetak.RecordCount > 0 Then cRep.Database.SetDataSource rsCetak CR1.ReportSource = cRep With CR1 .Left = 0: .Top = 0 .Width = Me.ScaleWidth .Height = Me.ScaleHeight .ViewReport .Zoom 100 .Visible = True End With Else MsgBox "Tidak ada data untuk dicetak !", vbCritical, "No Data" Timer1.Enabled = True End If 'Report Recordset 'Report Object 'Report Application

Page | 88

End Sub Private Sub Form_Resize() On Error Resume Next If Me.WindowState vbMinimized Then CR1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight End If End Sub Private Sub Form_Unload(Cancel As Integer) Set cApp = Nothing Set cRep = Nothing Call CloseRS(rsCetak) End Sub Private Sub Timer1_Timer() Timer1.Enabled = False Unload Me End Sub

Form ListPrivate bCancel As Boolean Private Sub cmdBatal_Click() Unload Me End Sub Private Sub cmdOK_Click() strPilih = MData.TextMatrix(MData.Row, 0) bCancel = False Unload Me End Sub Private Sub Form_Load() bCancel = True

Page | 89

End Sub Private Sub Form_Unload(Cancel As Integer) If bCancel Then strPilih = "" End Sub Private Sub MData_DblClick() Call cmdOK_Click End Sub Private Sub MData_KeyPress(KeyAscii As Integer) If MData.Rows > 1 And KeyAscii = vbKeyReturn Then Call cmdOK_Click End If End Sub

Form SupplierOption Explicit Private nLastRow As Integer Private Sub cmdCari_Click() If Trim(txtKunci.Text) = "" Then Exit Sub Dim I As Long Dim J As Integer Dim nSearchCol As Integer 'Ambil kolom yang dicari nSearchCol = cboKategori.ListIndex + 1

Page | 90

With MData If nLastRow > 0 Then 'Background Putih For I = 1 To .Cols - 1 .Col = I .Row = nLastRow .CellBackColor = &HFFFFFF Next I End If 'Cari Text For I = nLastRow + 1 To .Rows - 1 If InStr(1, UCase(.TextMatrix(I, nSearchCol)), _ UCase(txtKunci.Text)) > 0 Then nLastRow = I 'Warnai dengan background kuning .Row = I For J = 1 To .Cols - 1 .Col = J .CellBackColor = &H87F2F0 Next J Exit For End If Next I If I = .Rows Then 'Reset kembali - pencarian dari awal nLastRow = 0 End If 'Set Focus If .TopRow + 10 < nLastRow Then .TopRow = nLastRow End WithPage | 91

End Sub Private Sub cmdCloseHelp_Click() picHelp.Visible = False End Sub Private Sub cmdHelp_Click() picHelp.Visible = True picHelp.ZOrder 0 cmdCloseHelp.SetFocus End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyReturn Then 'Untuk Enter SendKeys "{TAB}" Else Select Case KeyCode Case vbKeyF1: Call Proses("HELP") Case vbKeyF2: Call Proses("BARU") Case vbKeyF3: Call Proses("SIMPAN") Case vbKeyF4: Call Proses("HAPUS") Case vbKeyF5: Call Proses("REFRESH") Case vbKeyF6: Call Proses("FIRST") Case vbKeyF7: Call Proses("PREVIOUS") Case vbKeyF8: Call Proses("NEXT") Case vbKeyF9: Call Proses("LAST") Case vbKeyF10: Call Proses("KELUAR") Case vbKeyF12: Call Proses("PRINT") End Select End If End Sub Private Sub Form_KeyPress(KeyAscii As Integer) 'Karakter 'Page | 92

If Chr(KeyAscii) = "'" Then KeyAscii = 0 End Sub Private Sub Form_Load() nLastRow = 0 cboKategori.ListIndex = 0 'Format Tabel With MData .Cols = 10: .Rows = 1 .TextMatrix(0, 0) = "No." .ColAlignment(0) = 6 .ColWidth(0) = 500 .TextMatrix(0, 1) = "Kode Supplier" .FixedAlignment(1) = 4 .ColAlignment(1) = 1 .ColWidth(1) = 1400 .TextMatrix(0, 2) = "Nama Supplier" .FixedAlignment(2) = 4 .ColAlignment(2) = 1 .ColWidth(2) = 2000 .TextMatrix(0, 3) = "Alamat" .FixedAlignment(3) = 4 .ColAlignment(3) = 1 .ColWidth(3) = 3000 .TextMatrix(0, 4) = "Kota" .FixedAlignment(4) = 4 .ColAlignment(4) = 1 .ColWidth(4) = 1500 .TextMatrix(0, 5) = "Negara" .FixedAlignment(5) = 4 .ColAlignment(5) = 1Page | 93

.ColWidth(5) = 1500 .TextMatrix(0, 6) = "Contact Person" .FixedAlignment(6) = 4 .ColAlignment(6) = 1 .ColWidth(6) = 1500 .TextMatrix(0, 7) = "No. Telp" .FixedAlignment(7) = 4 .ColAlignment(7) = 1 .ColWidth(7) = 1800 .TextMatrix(0, 8) = "No. HP" .FixedAlignment(8) = 4 .ColAlignment(8) = 1 .ColWidth(8) = 1800 .TextMatrix(0, 9) = "e-mail" .FixedAlignment(9) = 4 .ColAlignment(9) = 1 .ColWidth(9) = 2000 End With End Sub Private Sub MData_DblClick() If MData.Row > 0 Then 'Tampilkan data SSTab1.Tab = 0 txtKodeSupp.Text = MData.TextMatrix(MData.Row, 1) txtKodeSupp.SetFocus End If End Sub Private Sub MData_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Call MData_DblClick End Sub

Page | 94

Private Sub SSTab1_Click(PreviousTab As Integer) TBR.Buttons(1).Enabled = (SSTab1.Tab = 0) TBR.Buttons(2).Enabled = (SSTab1.Tab = 0) TBR.Buttons(3).Enabled = (SSTab1.Tab = 0) TBR.Buttons(5).Enabled = (SSTab1.Tab = 0) TBR.Buttons(6).Enabled = (SSTab1.Tab = 0) TBR.Buttons(7).Enabled = (SSTab1.Tab = 0) TBR.Buttons(8).Enabled = (SSTab1.Tab = 0) TBR.Buttons(9).Enabled = (SSTab1.Tab = 0) If SSTab1.Tab = 1 Then 'BrowseData Call BrowseData End If End Sub Private Sub txtKodeSupp_Change() Dim cF As String Dim rsTampil As New ADODB.Recordset 'Bersihkan layar Call Clear(False) cF = "Select * From TSupplier Where KodeSupp = '" & txtKodeSupp.Text & "'" With rsTampil 'Buka recordset .Open cF, oConn, adOpenStatic, adLockReadOnly, adCmdText 'Jika terdaftar, maka tampilkan If .RecordCount > 0 Then txtNamaSupp.Text = !NamaSupp txtAlamat.Text = !Alamat txtKota.Text = !Kota txtNegara.Text = !NegaraPage | 95

txtContactP.Text = !ContactP txtNoTelp.Text = !NoTelp txtEmail.Text = !Email txtNoHP.Text = !NoHP txtKeterangan.Text = !Keterangan End If End With 'Tutup RS Call CloseRS(rsTampil) End Sub Private Sub TBR_ButtonClick(ByVal Button As MSComctlLib.Button) 'Jalankan proses Call Proses(Button.Key) End Sub '----------------------' PROCEDURE & FUNCTION '----------------------Private Sub BrowseData() Dim I As Long Dim cF As String Dim rsB As New ADODB.Recordset MData.Rows = 1 cF = "Select * From TSupplier Order By KodeSupp" rsB.Open cF, oConn, adOpenStatic, adLockReadOnly, adCmdText For I = 1 To rsB.RecordCount MData.AddItem I & "." & vbTab & rsB!KodeSupp & vbTab & _ rsB!NamaSupp & vbTab & rsB!Alamat & vbTab & rsB!Kota & _ vbTab & rsB!Negara & vbTab & rsB!ContactP & _ vbTab & rsB!NoTelp & vbTab & rsB!NoHP & _ vbTab & rsB!EmailPage | 96

rsB.MoveNext Next I Call CloseRS(rsB) DoEvents End Sub Private Sub Proses(pcProses As String) Select Case pcProses Case "BARU": If TBR.Buttons(1).Enabled Then Call Clear(True) Case "SIMPAN": If TBR.Buttons(2).Enabled Then Call ProcSimpan Case "HAPUS": If TBR.Buttons(3).Enabled Then Call ProcHapus Case "REFRESH" If SSTab1.Tab = 0 Then Call txtKodeSupp_Change Else Call BrowseData End If Case "FIRST" If TBR.Buttons(5).Enabled Then txtKodeSupp.Text = GetRecord("FIRST", "TSupplier", "KodeSupp") Case "PREVIOUS" If TBR.Buttons(6).Enabled Then txtKodeSupp.Text = GetRecord("PREVIOUS", "TSupplier", "KodeSupp", txtKodeSupp.Text) Case "NEXT"

Page | 97

If TBR.Buttons(7).Enabled Then txtKodeSupp.Text = GetRecord("NEXT", "TSupplier", "KodeSupp", txtKodeSupp.Text) Case "LAST" If TBR.Buttons(8).Enabled Then txtKodeSupp.Text = GetRecord("LAST", "TSupplier", "KodeSupp") Case "HELP" picHelp.Visible = True picHelp.ZOrder 0 cmdCloseHelp.SetFocus Case "PRINT" frmLapSupplier.Show frmLapSupplier.ZOrder 0 Case "KELUAR": End Select End Sub 'Bersihkan layar Private Sub Clear(pbAll As Boolean) If pbAll Then txtKodeSupp.Text = "" txtKodeSupp.SetFocus End If txtNamaSupp.Text = "" txtAlamat.Text = "" txtKota.Text = "" txtNegara.Text = "" txtContactP.Text = "" txtNoTelp.Text = "" txtEmail.Text = "" txtNoHP.Text = "" txtKeterangan.Text = "" End Sub Unload Me

Page | 98

'Pengecekan apakah kode supplier sedang digunakan Private Function IsKodeSuppUse(pcKodeSupp As String) As Boolean Dim cF As String Dim rS As New ADODB.Recordset cF = "Select KodeSupp From TBeli " & _ "Where KodeSupp = '" & pcKodeSupp & "'" rS.Open cF, oConn, adOpenStatic, adLockReadOnly, adCmdText IsKodeSuppUse = (rS.RecordCount > 0) Call CloseRS(rS) End Function 'Prosedur simpan ke database Private Sub ProcSimpan() 'Cek Validitas Form If Trim(txtKodeSupp.Text) = "" Then MsgBox "Kode supplier tidak boleh kosong !", vbCritical, "Error" txtKodeSupp.SetFocus Exit Sub ElseIf Trim(txtNamaSupp.Text) = "" Then MsgBox "Nama supplier tidak boleh kosong !", vbCritical, "Error" txtNamaSupp.SetFocus Exit Sub ElseIf Trim(txtAlamat.Text) = "" Then MsgBox "Alamat tidak boleh kosong !", vbCritical, "Error" txtAlamat.SetFocus Exit Sub ElseIf Trim(txtKota.Text) = "" Then MsgBox "Kota tidak boleh kosong !", vbCritical, "Error" txtKota.SetFocus Exit Sub ElseIf Trim(txtNegara.Text) = "" Then MsgBox "Negara tidak boleh kosong !", vbCritical, "Error" txtNegara.SetFocusPage | 99

Exit Sub ElseIf Trim(txtContactP.Text) = "" Then MsgBox "Contact Person tidak boleh kosong !", vbCritical, "Error" txtContactP.SetFocus Exit Sub ElseIf Trim(txtNoTelp.Text) = "" Then MsgBox "No.Telp tidak boleh kosong !", vbCritica