L 1. Lampiran 1 Coding frmmain.cs

dokumen-dokumen yang mirip
TUGAS POLA-POLA PERANCANGAN SISTEM INFORMASI PERSEWAAN VCD DAN DVD. Dengan Design pattern (Factory Method)

LAMPIRAN. 2. Berapa penghasilan yang anda terima per bulan? 3. Apakah anda sering menggunakan kendaraan pribadi anda?

LAMPIRAN 1 SISTEM PENDUKUNG KEPUTUSAN..., DIMAS ANGGIT WIJIATMOKO, F.TEKNIK UMP,2017

PEMROGRAMAN VB.NET. Koneksi Ke Database

BAB IV IMPLEMENTASI SISTEM

APLIKASI MENGELOLA DATA ACCESS LOG MENGGUNAKAN C# Melihat LOG berdasar Hari, Jam, dan URL Terbanyak diakses

Data Hasil Penelitian bobot 200 butir persilangan tanaman jagung

LAMPIRAN 1. Berikut ini adalah hasil wawancara pakar dengan Kepala Kelompok Teknisi Stasiun

PEMROGRAMAN VB.NET. Sintaks Pada Class

BAB II MICROSOFT VISUAL STUDIO

PEMROGRAMAN VISUAL BASIC

MEMBUAT FORM INPUT DATA DENGAN VB NET 2005 DAN DATABASE MS SQL SERVER 2005 EXPRESS


BAB IV IMPLEMENTASI DAN EVALUASI SISTEM. telah dibuat sebelumnya, sehinggga user dapat memahami jalannya sistem tersebut.

BAB V IMPLEMENTASI DAN PENGUJIAN SISTEM

LAMPIRAN L.1. Lampiran 1 Coding Inisialisasi Program

BAB IV HASIL DAN ANALISIS

Koneksi Sederhana Database dengan C# (Lihat, Tambah, dan Hapus Data)

Aplikasi CRUD dengan Visual Basic 2012 [APLIKASI CRUD DENGAN VISUAL BASIC 2012 & MYSQL] September 18, & MySQL. Bahtiar Imran

MODUL 2 SELECTION & LOOPING PADA FORM


BAB IV IMPLEMENTASI DAN TESTING


P11 & 12 Operasi DML pada Form Aplikasi (Project Aplikasi Rumah Sakit)

visit :

Budi Permana, S.Kom Pendahuluan. Lisensi Dokumen:

A-1. Listing Program. Universitas Sumatera Utara

Irvan Lewenusa

WAWANCARA. beserta tanggapan dari beliau sebagai berikut : paling kritis apa?

BAB IV IMPLEMENTASI DAN PENGUJIAN

BAB IV IMPLEMENTASI DAN PENGUJIAN. Dalam pembuatan program ini penulis menggunakan Visual Basic. Net

Bab 4 Hasil dan Pembahasan

PENDAHULUAN. A. Membuat Database dalam SQL SERVER. 1. Klik Kanan pada databases lalu pilih new database

Modul x login dan Periode

PRAKTEK 1 CLASS, ATTRIBUTE, METHOD, DAN OBJEK

Membuat SlideShow Gambar

Gambar 5.1 Hierarki Sistem Admin

Membuat Slide Show Gambar

Gratis Tutorial Pemograman Visual Basic MEMBUAT CRUD VISUAL BASIC.NET DATABASE MYSQL

LAMPIRAN I LISTING PROGRAM

BAB IV IMPLEMENTASI DAN PENGUJIAN

Membuat Slide Show Gambar

int i = 0; while (i < 10) { System.out.println( Informatika Unpas ); i++; }

KONEKSI DATABASE SQL DENGAN VB.NET

BAB III LANDASAN TEORI. muka yang bersifat grafis Graphical User Interface (GUI). Daripada menulis

DASHBOARD LIBRARY UNTUK VISUALISASI INFORMASI

Pengenalan APLIKASI DATABASE

DASAR PEMOGRAMAN JAVA

Tutorial Jasper Report with JDBC Prerequisites: Jasper Report, ireport installed, MySQL installed, and NetBeans IDE

BAB IV IMPLEMENTASI DAN PENGUJIAN

Disini kita akan bahas cara koneksi antara Database MySQL dengan VB.Net 2010, semoga dengan ini E-book ini bisa ingat sepanjang jaman ya ^ ^

Source Code Test Program Dengan VB Net

BAB VII MENU, TOOLBAR DAN STATUSBAR

Budi permana, S.Kom

Input, edit dan hapus data Master Barang

JOBSHEET 8 DATABASE IN VB

Koneksi Database Mysql dengan C#

Tugas II II5166 (Keamanan Informasi Lanjut)

Program Database Penjualan Barang

KA2173 Pemrograman Berorientasi Objek. 10 BAB X PENGAKSESAN DATABASE. H a l 64

STEP BY STEP MENJADI PROGRAMMER HANDAL DENGAN VB.NET

MODUL VII VISUAL BASIC

8 H Ya Ya 0 Tidak Tidak 0 Tidak G gejala

Belajar Java 2 Tambah, Simpan & Cari Data di Netbeans dengan Database MySQL

Bab 4. Visualisasi dan Penggunaan Program

Aplikasi Login Dengan Database dan Tanpa Database Pada Visual Basic 2010

Pengenalan JavaScript

Firma Firmansyah Adi B. Resume Web Service

BAB IV IMPLEMENTASI DAN PENGUJIAN

Bab 4 Hasil dan Pembahasan

BAB IV IMPLEMENTASI DAN PENGUJIAN

Perancangan Sistem Informasi Sistem Pengelolaan Data Jemaat Gereja Bethel Maranatha Pekalongan


Jeffrey Hermanto Halimsetiawan tutorialpemrograman.wordpress.com 22 Maret 2009

INSTRUKSI PENCABANGAN

CHAPTER #9 Mengenal ADO.NET dan Koneksi Database

Program Piano 1 Oktaf

BAB 4 HASIL DAN PEMBAHASAN

2 TIPE DATA DAN VARIABEL

BAB 2 LANDASAN TEORI. Istilah komputer (computer) berasal dari bahasa latin computere yang berarti

Bab IV Implementasi Sistem


Badiyanto, S.Kom., M.Kom. PBO java

Gambar 4.57 Layar Ubah Pemasok. Data pemasok dapat diubah di sini. Data-data akan disimpan ke

LAMPIRAN 1. Kuesioner Rating Kebutuhan Aplikasi Telepon Genggam

- Menuliskan business logic dari aplikasi untuk mengakses data source

STEP BY STEP IN JAVA NETBEANS PROGRAMMING BY SUYANTO

PENGKODEAN AKSES FORM SISTEM USER

BAB VIII PENGENALAN DATABASE

Algoritma Pemrograman A

Bab 4 Hasil dan Pembahasan

Membuat Webservice Pada Visual Studio 2012 (C#.NET ver.4.5)

Pemrograman Visual (Borland Delphi 7.0)

Modul 6 Mengoperasikan Perangkat Lunak Lembar Sebar (Open Source) 1 KEGIATAN BELAJAR 2

MODUL 2 PERANCANGAN INTERFACE


MODUL PRAKTIKUM TI014 STRUKTUR DATA Season 1

Form Login Menggunakan Combobox Dengan VB.Net dan MySQL Workbench

BAHASA PEMROGRAMAN JAVA

LISTING PROGRAM. namespace NTRUEOF { public class parameterenkripsi { public static readonly parameterenkripsi parameterenkripsi(401, 2048, 113, 60);

Transkripsi:

L 1 Lampiran 1 Coding frmmain.cs // using berfungsi seperti include di c using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; // namespace merupakan kumpulan dari namespace atau class namespace MSPC /// <summary> /// Summary description for Form1. /// </summary> public class frmmain : System.Windows.Forms.Form // ini merupakan komponen dari variabel-variabel yang digunakan private Infragistics.Win.UltraWinToolbars.UltraToolbarsManager toolbarmanager; private Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea _frmmain_toolbars_dock_area_left; private Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea _frmmain_toolbars_dock_area_right; private Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea _frmmain_toolbars_dock_area_top; private Infragistics.Win.UltraWinToolbars.UltraToolbarsDockArea _frmmain_toolbars_dock_area_bottom; private Infragistics.Win.UltraWinTabbedMdi.UltraTabbedMdiManager mdimanager; private Infragistics.Win.UltraWinStatusBar.UltraStatusBar statusbar; private System.ComponentModel.IContainer components; // public static merupakan variabel yang pada saat aplikasi dijalankan akan tetap ada //hingga aplikasi dihentikan. public disini merupakan metode akses/sifat akses variabel //yang mengijinkan variabel ini // diakses oleh class lain selain class yang memilikinya. static // berarti variabel ini selalu ada di stack memori public static frmfase1 ffase1; public static frmfase2 ffase2; public static frmviewf1 fviewf1; public static frmviewf2 fviewf2; // ini merupakan constructor. constructor pertama kali dijalankan

L 2 // ketika suatu objek dari suatu kelas diinisialisasi (objek dalam hal ini berarti aplikasi //ini). pada aplikasi ini constructor melakukan // inisialisasi komponen yang digunakan //dalam form ini. Additional note: setiap form memiliki constructor dan destructor //karena form adalah class. public frmmain() // // Required for Windows Form Designer support // InitializeComponent(); // merupakan build-in function yang sudah disediakan oleh.net yang // berguna untuk inisialisasi dan binding semua komponen yang digunakan // dalam form ini // // TODO: Add any constructor code after InitializeComponent call // /// <summary> /// Clean up any resources being used. /// </summary> // merupakan garbage collector, fungsinya untuk menghapus semua // resource yang telah digunakan protected override void Dispose( bool disposing ) if( disposing ) if (components!= null) components.dispose(); base.dispose( disposing ); /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() Application.Run(new frmmain()); // dibawah ini adalah sintaks atau perintah yang dijalankan pada saat

L 3 // toolbar diklik private void toolbarmanager_toolclick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) switch (e.tool.key) // ini adalah sintaks yang dijalankan saat user memilih menu 'Input // Data Acuan (fase 1)' case "mnufase1": if (ffase1 == null) // cek apakah form ini sudah ada atau // belum ffase1 = new frmfase1(); // inisialisasi objek baru dari // class frmfase1 ffase1.mdiparent = this; // untuk binding objek ffase1 // sebagai bagian dari frmmain ffase1.show(); // untuk menampilkan ffase1 else ffase1.focus(); // jika sudah ada sebelumnya, maka // aplikasi akan memfokuskan pada // form 1 yang sudah dibuka break; // ini adalah sintaks yang dijalankan saat user memilih menu // 'Input Data Baru (fase 2)' case "mnufase2": if (ffase2 == null) // cek apakah form ini sudah ada atau // belum ffase2 = new frmfase2(); // inisialisasi objek baru dari // frmfase2 ffase2.mdiparent = this; // untuk binding objek ffase2 sbg // bagian dari frmmain ffase2.show(); // untuk menampilkan ffase2

L 4 else ffase2.focus(); // untuk memfokuskan pada frmfase2 // yang sudah dibuka sebelumnya break; // ini adalah sintaks yang dijalankan saat user memilih menu // 'Keluar program' case "mnuexit": this.close(); // maksudnya menutup frmmain break; // ini adalah sintaks yang dijalankan saat user memilih menu // 'Laporan Fase 1' case "mnuviewf1": if (fviewf1 == null) fviewf1 = new frmviewf1(); fviewf1.mdiparent = this; fviewf1.show(); else fviewf1.focus(); break; case "mnuviewf2": if (fviewf2 == null) fviewf2 = new frmviewf2(); fviewf2.mdiparent = this; fviewf2.show(); else fviewf2.focus(); break;

L 5 // ini adalah fungsi yang dijalankan saat user akan keluar dari // aplikasi atau menjalankan sintaks this.close(); private void frmmain_closing(object sender, System.ComponentModel.CancelEventArgs e) DialogResult hsl = MessageBox.Show("Anda yakin untuk keluar dari program ini?", "Exit Program", MessageBoxButtons.YesNo, MessageBoxIcon.Question); // DialogResult adalah tipe data yang menampung hasil dari dialog // box if (hsl == DialogResult.No) e.cancel = true; // e.cancel = true; berarti form closing dari frmmain // dibatalkan // e.cancel = false; berarti form closing dari // frmmain tidak dibatalkan, tapi tidak diperlukan // karena secara default pasti akan keluar dari // aplikasi

L 6 Coding frmfase1.cs using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Data.OleDb; namespace MSPC /// <summary> /// Summary description for frmfase1. /// </summary> public class frmfase1 : System.Windows.Forms.Form #region User Interface Component private System.ComponentModel.IContainer components; private System.Windows.Forms.DateTimePicker datefase1; private System.Windows.Forms.OpenFileDialog openfile; private System.Windows.Forms.ComboBox cboalpha; private System.Windows.Forms.ToolTip tooltip1; internal Infragistics.Win.UltraWinGrid.UltraGrid dgdata; private Infragistics.Win.UltraWinEditors.UltraOptionSet radioinputmode; private Infragistics.Win.UltraWinChart.UltraChart chartcl; private Infragistics.Win.Misc.UltraGroupBox grbimport; private Infragistics.Win.Misc.UltraGroupBox grbdatafase1; private Infragistics.Win.Misc.UltraGroupBox grbkesimpulan; private Infragistics.Win.Misc.UltraGroupBox grbcl; private Infragistics.Win.Misc.UltraGroupBox grbinput; private Infragistics.Win.Misc.UltraGroupBox grbdate_part; private Infragistics.Win.Misc.UltraGroupBox grbinputdatafase1; private Infragistics.Win.Misc.UltraButton btnhitung; private Infragistics.Win.Misc.UltraButton btnreset; private Infragistics.Win.Misc.UltraButton btnsave; private Infragistics.Win.Misc.UltraButton btnopenfile; private Infragistics.Win.Misc.UltraButton btnplhpart; private Infragistics.Win.Misc.UltraButton btnvalidate_ok; private Infragistics.Win.Misc.UltraButton btnimport; private Infragistics.Win.Misc.UltraButton btnok; private Infragistics.Win.Misc.UltraButton btninput; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2;

L 7 private System.Windows.Forms.Label label3; private System.Windows.Forms.Label label4; private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label8; private System.Windows.Forms.Label label9; private System.Windows.Forms.Label label10; private System.Windows.Forms.Label label11; private System.Windows.Forms.Label lblvar; private System.Windows.Forms.Label lblsample; private System.Windows.Forms.Label lblucl; private System.Windows.Forms.Label lbllcl; private System.Windows.Forms.Label lblkesimpulan; private System.Windows.Forms.TextBox txtopenfile; public System.Windows.Forms.TextBox txtprocessname; private System.Windows.Forms.ContextMenu contextvarf1; private System.Windows.Forms.MenuItem mnuadd; private System.Windows.Forms.MenuItem mnudel; #endregion /// <summary> /// Variabel yang di pakai pada aplikasi private DataTable dtfase1, dtperhitungan, dtcl; private DataColumn dcf, dccl; private DataRow drf, drcl; public DataTable dtvarf1; private CMSPC MSPC; private string strdataout; private double[] arrt2; private double UCL, LCL; private int incontrol = -1; public int processnumber; private double alpha; private string kesimpulan; public frmplhprocess fplhprocess = null; public frmvarf1 fvarf1 = null; public frmfase1() // // Required for Windows Form Designer support

L 8 // InitializeComponent(); // // TODO: Add any constructor code after // InitializeComponent call // /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) if( disposing ) if(components!= null) components.dispose(); base.dispose( disposing ); private void frmfase1_closing(object sender, System.ComponentModel.CancelEventArgs e) frmmain.ffase1 = null; // fungsi untuk mengambil hasil perhitungan dari MSPC apakah incontrol atau tidak, lcl, //ucl dan T2 nya berapa dan tampilkan pada datagrid private void calculate_fase1() int i = 0; // ambil nilai yg melambangkan apakah data acuan ini incontrol atau // tidak setelah di hitung incontrol = MSPC.FaseI(dtFase1, alpha); // ambil hasil ucl dan lcl LCL = MSPC.getLCL(1); UCL = MSPC.getUCL(1); lbllcl.text = LCL.ToString(); // tampilkan LCL lblucl.text = UCL.ToString(); // tampilkan UCL

L 9 // inisialisasi array arrt2 sejumlah banyak baris // data acuannya arrt2 = new double[dtfase1.rows.count]; // copy array T2 hasil perhitungan dari MSPC ke arrt2 MSPC.getArrT2(1).CopyTo(arrT2, 0); // cek apakah kolom "T-Square" pada datatable sudah ada atau //blm if (dtperhitungan.columns["t-square"] == null) // tambahkan kolom T-Square ke dalam table data fase 1 //yang di tampilkan dtperhitungan.columns.add(new DataColumn("T- Square", typeof(double))); = arrt2[i]; // input T-Square ke dalam kolom yang baru di tambah // ke tabel for (i = 0; i < arrt2.length; i++) dtperhitungan.rows[i][dtperhitungan.columns.count - 1] // Tabel untuk Control Chart dtcl = new DataTable(); // inisialisasi tabel // inisialisasi kolom - kolom tabel dccl = new DataColumn("T-Square", typeof(double)); dtcl.columns.add(dccl); dccl = new DataColumn("LCL", typeof(double)); dtcl.columns.add(dccl); dccl = new DataColumn("UCL", typeof(double)); dtcl.columns.add(dccl); for (i = 0; i < arrt2.length; i++) // inisialisasi baris baru drcl = dtcl.newrow(); // input data ke baris yang baru drcl["t-square"] = arrt2[i]; drcl["lcl"] = LCL; drcl["ucl"] = UCL; // tambah baris baru ke tabel

L 10 dtcl.rows.add(drcl); ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// // assign data yang akan di tampilkan oleh grafik chartcl.data.datasource = dtcl; chartcl.data.swaprowsandcolumns = true; chartcl.titletop.text = "Peta Kontrol Fase 1 " + datefase1.value.toshortdatestring(); chartcl.databind(); // jika data hasil perhitungan berada di dalam // kontrol if (incontrol == 1) kesimpulan = "Data acuan yang dimasukkan sudah normal, bisa digunakan sebagai data acuan untuk perhitungan fase 2."; lblkesimpulan.text = kesimpulan; btnhitung.text = "Hitung data Fase 1"; btnhitung.enabled = false; // jika data hasil perhitungan berada di luar kontrol else if (incontrol == 0) // ambil data apa saja yang keluar kontrol //(tipe data nya string) strdataout = MSPC.getDataOutOfControl(); btnhitung.text = "Hitung ulang Data"; kesimpulan = "Data acuan yang dimasukkan tidak normal, yang ditandai dengan adanya data diluar kontrol, yaitu data " + strdataout + " Anda bisa menghapus data diluar kontrol untuk menciptakan data acuan yang normal, atau anda bisa menginput ulang data acuan."; lblkesimpulan.text = kesimpulan + "\njika anda ingin membuang data yang di luar kontrol (" + strdataout + ") dan menghitung ulang data untuk menjaga keseragaman data dari variansi anda bisa menekan tombol \"HITUNG ULANG DATA\"."; btnhitung.enabled = true; // fungsi yang di jalankan apabila user ingin menginput

L 11 // manual data fase 1 // fungsi ini untuk menampilkan nama nama variable yang // kita tambahkan secara manual public void inputvarf1() dtfase1 = new DataTable(); for (int i = 0; i < dtvarf1.rows.count; i++) // tambahkan variable variable yang kita input manual pada // dtvarf1 ke dtfase1 dcf = new DataColumn(dtVarF1.Rows[i][0].ToString(), typeof(double)); dtfase1.columns.add(dcf); dgdata.datasource = dtfase1; dgdata.databind(); // tampilkan jumlah variable yang user telah // tambahkan lblvar.text = dtfase1.columns.count.tostring(); contextvarf1; if (dtfase1.columns.count > 0) dgdata.contextmenu = // perintah yang di jalankan pada saat form di load private void frmfase1_load(object sender, System.EventArgs e) dtperhitungan = new DataTable(); dtfase1 = new DataTable(); MSPC = new CMSPC(); incontrol = -1; 1", typeof(string))); dtvarf1 = new DataTable(); dtvarf1.columns.add(new DataColumn("Nama Variabel Fase // datagrid boleh di edit dgdata.displaylayout.override.allowupdate = Infragistics.Win.DefaultableBoolean.True; // perintah yang di jalankan pada saat user ingin memilih proses

L 12 private void btnplhpart_click(object sender, System.EventArgs e) if (fplhprocess == null) fplhprocess = new frmplhprocess(); fplhprocess.show(); else fplhprocess.focus(); // perintah agar pada combobox untuk memilih alfa tidak bisa di edit private void cboalpha_keypress(object sender, System.Windows.Forms.KeyPressEventArgs e) e.handled = true; // seandainya teks yang ada combobox untuk memilih alpha // berubah maka akan di kembalikan pada nilai awal private void cboalpha_textchanged(object sender, System.EventArgs e) if (cboalpha.selectedindex == -1) cboalpha.text = "[Pilih]"; else if (cboalpha.selectedindex == 0) cboalpha.text = "0.01"; else if (cboalpha.selectedindex == 1) cboalpha.text = "0.05"; else if (cboalpha.selectedindex == 2) cboalpha.text = "0.001"; else if (cboalpha.selectedindex == 3) cboalpha.text = "alpha"; // setiap kali index dari combobox yang terpilih berubah, // maka hasil pilihan ini dimasukkan pada variable alpha private void cboalpha_selectedindexchanged(object sender, System.EventArgs e) alpha = double.parse(cboalpha.items[cboalpha.selectedindex].tostring());

L 13 // fungsi untuk memvalidasi apakah data sebelumnya telah ada atau belum private void btnvalidate_ok_click(object sender, System.EventArgs e) if (txtprocessname.text!= "" && cboalpha.selectedindex!= -1) OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\Data.mdb;Persist Security Info=False"); OleDbCommand com = new OleDbCommand(); OleDbDataReader dr = null; com.connection = con; if (con.state == ConnectionState.Closed) con.open(); com.commandtext = "select * from ms_fase1 where tgl_f1 = '" + datefase1.value.toshortdatestring() + "' and process_number = " + processnumber + " and alpha = " + alpha; try dr = com.executereader(); catch (OleDbException ex) MessageBox.Show(ex.Message); // jika data ternyata sudah ada pada database if (dr.read()) MessageBox.Show("Data Fase 1 untuk tanggal, proses dan tingkat kepercayaan ini sudah ada. Jika anda tetap ingin menginput data pada tanggal, proses dan tingkat kepercayaan ini, anda harus menghapus data yang sebelumnya sudah ada terlebih dahulu dengan menggunakan tombol HAPUS DATA pada Form Laporan Data Acuan (Fase 1).", "Data sudah pernah ada", MessageBoxButtons.OK, MessageBoxIcon.Stop); else txtprocessname.clear(); datefase1.focus(); grbdate_part.enabled = false; grbinputdatafase1.enabled = true;

L 14 grbinput.enabled = true; grbimport.enabled = false; else kepercayaan harus diisi."); dr.close(); con.close(); MessageBox.Show("Nama Proses dan tingkat btnplhpart.focus(); // fungsi atau perintah yang di jalankan saat index dari radio // button berubah private void radioinputmode_valuechanged(object sender, System.EventArgs e) // mengubah menjadi sebaliknya, apabila sebelumnya // true menjadi false dan sebaliknya (negasi) grbinput.visible = (!grbinput.visible); grbinput.enabled = (!grbinput.enabled); grbimport.visible = (!grbimport.visible); grbimport.enabled = (!grbimport.enabled); // jika radio button yang terpilih adalah input // manual if (radioinputmode.checkedindex == 0) // datagrid bisa di edit dgdata.displaylayout.override.allowupdate = Infragistics.Win.DefaultableBoolean.True; // pada datagrid bisa klik kanan untuk tambah // baris dan hapus baris dgdata.contextmenu = contextvarf1; dgdata.datasource = dtfase1; dgdata.databind(); // apabila jumlah proses (kolom) yang ada pada // data acuan<1 maka datagrid tidak bisa diisi

L 15 if (dtfase1.columns.count < 1) dgdata.contextmenu = null; else dgdata.contextmenu = contextvarf1; // jika radiobutton yang terpilih adalah import data else // datagrid tidak bisa di edit dan tidak bisa // klik kanan untuk tambah dan hapus baris dgdata.displaylayout.override.allowupdate = Infragistics.Win.DefaultableBoolean.False; dgdata.contextmenu = null; dgdata.datasource = null; // perintah yang dijalankan pada saat button open file di klik private void btnopenfile_click(object sender, System.EventArgs e) try // tampilkan file yang bisa di buka dalam // format excel openfile.filter = "Excel Files (*.xls) *.xls"; openfile.showdialog(); txtopenfile.text = openfile.filename; catch (Exception ex) MessageBox.Show(ex.Message, "Import Error", MessageBoxButtons.OK, MessageBoxIcon.Error); // perintah yg di jalankan saat user ingin menginput manual // data acuan. // fungsi ini menampilkan satu form untuk user menginput // variable apa saja yang akan di pakai private void btninput_click(object sender, System.EventArgs e) if (fvarf1 == null) fvarf1 = new frmvarf1(); fvarf1.show();

L 16 else fvarf1.focus(); // perintah yang di jalankan saat menu untuk tambah baris di klik private void mnuadd_click(object sender, System.EventArgs e) drf = dtfase1.newrow(); dtfase1.rows.add(drf); if (dtfase1.rows.count > 0) btnok.enabled = true; contextvarf1.menuitems[1].enabled = true; dgdata.activerow = dgdata.rows[dtfase1.rows.count - 1]; // tampilkan jumlah sampel yang telah user tambahkan // secara manual lblsample.text = dtfase1.rows.count.tostring(); // perintah yang di jalankan saat menu hapus baris di klik private void mnudel_click(object sender, System.EventArgs e) dtfase1.rows.removeat(dgdata.activerow.index); if (dtfase1.rows.count > 0) dgdata.activerow = dgdata.rows[0]; else btnok.enabled = false; contextvarf1.menuitems[1].enabled = false; lblsample.text = dtfase1.rows.count.tostring();

L 17 // perintah yang dijalankan pada saat user telah selesai // menginput data secara manual private void btnok_click(object sender, System.EventArgs e) // datagrid tidak bisa di edit dgdata.displaylayout.override.allowupdate = Infragistics.Win.DefaultableBoolean.False; dgdata.contextmenu = null; // cek apakah ada data yang di input merupakan data // yang kosong for (int i = 0; i < dtfase1.rows.count; i++) for (int j = 0; j < dtfase1.columns.count; j++) if (dtfase1.rows[i][j].tostring() == "") MessageBox.Show("Semua data Fase 1 harus diisi semua.", "Ada data yang kosong", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; dtperhitungan = dtfase1.copy(); dgdata.datasource = dtperhitungan; dgdata.databind(); btnhitung.enabled = true; grbinputdatafase1.enabled = false; // perintah yang di jalan kan pada saat user ingin // mengimport file excel ke aplikasi private void btnimport_click(object sender, System.EventArgs e) if (txtopenfile.text!= "") CExcel conexcel = new CExcel(); try // import isi dari file excel ke data table // melalui object conexcel dari class CExcel

L 18 dtfase1 = conexcel.excelimporter(txtopenfile.text).copy(); catch (Exception ex) MessageBox.Show(ex.Message); return; for (int i = 0; i < dtfase1.rows.count; i++) for (int j = 0; j < dtfase1.columns.count; j++) if (dtfase1.rows[i][j].tostring() == "") MessageBox.Show("Sistem tidak dapat mengimport masuk file data Fase 1 anda, hal ini dikarenakan file data Fase 1 mengandung data kosong, semua data Fase 1 harus diisi semua.", "Ada data yang kosong", MessageBoxButtons.OK, MessageBoxIcon.Stop); dtfase1 = new DataTable(); return; dtperhitungan = dtfase1.copy(); dgdata.datasource = dtperhitungan; dgdata.databind(); btnhitung.enabled = true; aplikasi harus diisi."); else grbinputdatafase1.enabled = false; MessageBox.Show("Lokasi file yang akan diimport ke btnopenfile.focus(); // perintah yg di jalan saat user menekan tombol hitung private void btnhitung_click(object sender, System.EventArgs e) // jika belum di hitung sama sekali

L 19 if (incontrol == -1) calculate_fase1(); // jika hitung ulang data karena perhitungan // sebelumnya masih out of control else if (incontrol == 0) strdataout = strdataout.replace(", ", ""); while (strdataout!= "") if (dtfase1.rows.count > 1) dtfase1.rows.removeat(int.parse(strdataout[0].tostring()) - 1); strdataout = strdataout.remove(0, 1); else MessageBox.Show("Tidak ada data lagi yang bisa di buang. Silahkan hitung ulang data"); btnhitung.enabled = false; btnsave.enabled = false; lblkesimpulan.text = "Semua data berada di luar kontrol, hal ini menyebabkan semua data habis terbuang. Silahkan menginput ulang data"; return; dtperhitungan = dtfase1.copy(); dgdata.datasource = dtperhitungan; dgdata.databind(); calculate_fase1(); btnsave.enabled = true;

L 20 private void btnreset_click(object sender, System.EventArgs e) if (dtcl!= null) dtcl = new DataTable(); if (dtfase1!= null) dtfase1 = new DataTable(); if (dtperhitungan!= null) dtperhitungan = new DataTable(); dgdata.contextmenu = null; contextvarf1.menuitems[1].enabled = false; txtopenfile.clear(); txtprocessname.clear(); lblkesimpulan.text = ""; lbllcl.text = ""; lblucl.text = ""; lblvar.text = "<Belum Ada Input>"; lblsample.text = "<Belum Ada Input>"; radioinputmode.checkedindex = 0; incontrol = -1; btnhitung.enabled = false; btnsave.enabled = false; grbdate_part.enabled = true; grbinputdatafase1.enabled = false; dgdata.datasource = null; chartcl.data.datasource = null; datefase1.focus(); // save hasil perhitungan ke dalam database private void btnsave_click(object sender, System.EventArgs e) int i, j; string kd_f1 = datefase1.value.toshortdatestring() + "-" + processnumber.tostring() + "-" + alpha.tostring();; DialogResult hsl = MessageBox.Show("Anda yakin untuk menyimpan data hasil perhitungan ini?", "Simpan Data", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (hsl == DialogResult.No) return;

L 21 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\Data.mdb;Persist Security Info=False"); OleDbCommand com = new OleDbCommand(); com.connection = con; if (con.state == ConnectionState.Closed) con.open(); // input database (tabel MS_Fase1) try com.commandtext = "insert into ms_fase1 values ('" + kd_f1 + "', '" + datefase1.value.toshortdatestring() + "', " + processnumber + ", " + alpha + ", " + dtfase1.columns.count + ", " + LCL + ", " + UCL + ", " + incontrol + ", '" + kesimpulan + "')"; com.executenonquery(); catch (OleDbException ex) MessageBox.Show(ex.Message); // input database (tabel DT_Fase1_Var) for (i = 0; i < dtfase1.columns.count; i++) try com.commandtext = "insert into dt_fase1_var values ('" + kd_f1 + "', " + i + ", '" + dtfase1.columns[i].columnname + "')"; com.executenonquery(); catch (OleDbException ex) MessageBox.Show(ex.Message); // input database (tabel DT_Fase1_Data) for (i = 0; i < dtfase1.rows.count; i++) for (j = 0; j < dtfase1.columns.count; j++) try com.commandtext = "insert into dt_fase1_data values ('" + kd_f1 + "', " + i + ", " + j + ", " + dtfase1.rows[i][j] + ")"; com.executenonquery();

L 22 catch (OleDbException ex) MessageBox.Show(ex.Message); // input database (tabel DT_Fase1_T2) for (i = 0; i < arrt2.length; i++) try com.commandtext = "insert into dt_fase1_t2 values ('" + kd_f1 + "', " + i + ", " + arrt2[i] + ")"; con.close(); com.executenonquery(); catch (OleDbException ex) MessageBox.Show(ex.Message); if (frmmain.fviewf1!= null) frmmain.fviewf1.loadlist(); MessageBox.Show("Data Fase 1 berhasil disimpan ke dalam database.", "Simpan File Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information); btnreset.performclick();

L 23 Coding frmvarf1.cs using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Data.OleDb; namespace MSPC /// <summary> /// Summary description for frmvarf1. /// </summary> public class frmvarf1 : System.Windows.Forms.Form internal Infragistics.Win.UltraWinGrid.UltraGrid dgvar; private Infragistics.Win.Misc.UltraButton btnok; private Infragistics.Win.Misc.UltraButton btncancel; private Infragistics.Win.Misc.UltraLabel ultralabel1; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; private System.Windows.Forms.ContextMenu contextvarf1; private System.Windows.Forms.MenuItem mnudel; private System.Windows.Forms.MenuItem mnuadd; DataTable dt; DataColumn dc; DataRow dr; public frmvarf1() // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after // InitializeComponent call //

L 24 /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) if( disposing ) if(components!= null) components.dispose(); base.dispose( disposing ); private void frmvarf1_closing(object sender, System.ComponentModel.CancelEventArgs e) frmmain.ffase1.fvarf1 = null; private void frmvarf1_load(object sender, System.EventArgs e) dt = frmmain.ffase1.dtvarf1.copy(); dgvar.datasource = dt; dgvar.databind(); if (dt.rows.count < 1) btnok.enabled = false; contextvarf1.menuitems[1].enabled = false; else btnok.enabled = true; contextvarf1.menuitems[1].enabled = true; private void mnuadd_click(object sender, System.EventArgs e) dr = dt.newrow(); dt.rows.add(dr); if (dt.rows.count > 0)

L 25 btnok.enabled = true; contextvarf1.menuitems[1].enabled = true; dgvar.activerow = dgvar.rows[dt.rows.count - 1]; private void mnudel_click(object sender, System.EventArgs e) dt.rows.removeat(dgvar.activerow.index); if (dt.rows.count > 0) dgvar.activerow = dgvar.rows[0]; else btnok.enabled = false; contextvarf1.menuitems[1].enabled = false; private void btncancel_click(object sender, System.EventArgs e) this.close(); private void btnok_click(object sender, System.EventArgs e) for (int i = 0; i < dt.rows.count; i++) if (dt.rows[i][0].tostring() == "") MessageBox.Show("Nama variabel tidak boleh dikosongkan. Apabila anda ingin menghapusnya, anda bisa menggunakan klik kanan dan pilih \"HAPUS VARIABEL INI\".", "Ada nama variabel yang kosong", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; frmmain.ffase1.dtvarf1 = dt.copy(); frmmain.ffase1.inputvarf1(); this.close();

L 26 Coding frmpilihprocess.cs using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; namespace MSPC /// <summary> /// Summary description for frmplhprocess. /// </summary> public class frmplhprocess : System.Windows.Forms.Form internal Infragistics.Win.UltraWinGrid.UltraGrid dgdatapart; private Infragistics.Win.Misc.UltraLabel ultralabel1; private Infragistics.Win.Misc.UltraButton btncancel; private Infragistics.Win.Misc.UltraButton btnok; /// <summary> /// Required designer variable. System.Data.OleDb.OleDbConnection con; System.Data.OleDb.OleDbDataAdapter da; System.Data.DataTable dt; /// </summary> private System.ComponentModel.Container components = null; public frmplhprocess() // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after // InitializeComponent call // /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) if( disposing )

L 27 if(components!= null) components.dispose(); base.dispose( disposing ); private void frmplhprocess_load(object sender, System.EventArgs e) con = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\Data.mdb;Persist Security Info=False"); da = new System.Data.OleDb.OleDbDataAdapter("select process_number as [No Proses], process_name as [Nama Proses] from MS_Process order by process_number", con); dt = new System.Data.DataTable(); try da.fill(dt); catch (System.Data.OleDb.OleDbException ex) MessageBox.Show(ex.Message); dgdatapart.datasource = dt; dgdatapart.databind(); if (dt.rows.count < 1) btnok.enabled = false; else dgdatapart.activerow = dgdatapart.rows[0]; private void frmplhprocess_closing(object sender, System.ComponentModel.CancelEventArgs e) frmmain.ffase1.fplhprocess = null; private void btncancel_click(object sender, System.EventArgs e) this.close();

L 28 private void btnok_click(object sender, System.EventArgs e) frmmain.ffase1.processnumber = int.parse(dgdatapart.rows[dgdatapart.activerow.index].cells[0].text); frmmain.ffase1.txtprocessname.text = dgdatapart.rows[dgdatapart.activerow.index].cells[1].text; this.close();

L 29 Coding frmfase2.cs using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Data.OleDb; namespace MSPC /// <summary> /// Summary description for frmfase2. /// </summary> public class frmfase2 : System.Windows.Forms.Form #region User Interface Component private Infragistics.Win.Misc.UltraGroupBox grbdate_part; private Infragistics.Win.Misc.UltraButton btnvalidate_ok; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label1; private Infragistics.Win.Misc.UltraGroupBox grbinput; private System.Windows.Forms.Label label5; private System.Windows.Forms.Label label4; private Infragistics.Win.Misc.UltraGroupBox grbimport; private System.Windows.Forms.TextBox txtopenfile; private Infragistics.Win.Misc.UltraButton btnimport; private System.Windows.Forms.Label label3; private Infragistics.Win.Misc.UltraButton btnopenfile; private Infragistics.Win.UltraWinEditors.UltraOptionSet radioinputmode; private Infragistics.Win.Misc.UltraButton btnplhdatepartfase1; private System.Windows.Forms.Label label8; private Infragistics.Win.Misc.UltraGroupBox grbdatafase1; private System.Windows.Forms.Label label9; private System.Windows.Forms.Label label10; private System.Windows.Forms.Label label13; private System.Windows.Forms.Label label14; private Infragistics.Win.Misc.UltraGroupBox grbkesimpulan; internal Infragistics.Win.UltraWinGrid.UltraGrid dgdatafase1; private Infragistics.Win.Misc.UltraGroupBox grbclfase1; private System.Windows.Forms.Label lbllcl1; private System.Windows.Forms.Label lblucl1; private Infragistics.Win.Misc.UltraGroupBox grbclfase2; private System.Windows.Forms.Label lbllcl2; private System.Windows.Forms.Label lblucl2;

L 30 private Infragistics.Win.Misc.UltraGroupBox grbdatafase2; internal Infragistics.Win.UltraWinGrid.UltraGrid dgdatafase2; private Infragistics.Win.UltraWinChart.UltraChart chartcl; public System.Windows.Forms.TextBox txtprocessname; private System.Windows.Forms.DateTimePicker datefase2; private Infragistics.Win.Misc.UltraGroupBox grbinputdatafase2; public System.Windows.Forms.TextBox txtdatefase1; private System.Windows.Forms.OpenFileDialog openfile; private Infragistics.Win.Misc.UltraButton btnreset; private Infragistics.Win.Misc.UltraButton btnhitung; private Infragistics.Win.Misc.UltraButton btnsave; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Label lblkesimpulan; public System.Windows.Forms.TextBox txtalpha; private System.Windows.Forms.Label label11; private System.Windows.Forms.Label lblsample; private System.Windows.Forms.Label lblvar; private System.Windows.Forms.ContextMenu contextvarf2; private System.Windows.Forms.MenuItem mnuadd; private System.Windows.Forms.MenuItem mnudel; private Infragistics.Win.Misc.UltraButton btnok; #endregion dtcl; /// <summary> // Variabel yang di pakai pada aplikasi private DataTable dtfase1, dtfase2, dtperhitungan1, dtperhitungan2, private DataColumn dcf, dccl; private DataRow drf, drcl; private CMSPC MSPC; private string strdataout; private double[] arrt2; private double UCL1, LCL1, UCL2, LCL2; private int incontrol = -1; private int varfase1; public int processnumber = 0; public double alpha = 0; public string kd_f1 = ""; public string kd_f2 = ""; public frmdateprocessfase1 fdatepartfase1 = null; //////////////////////////////////////////////////////////// /// </summary>

L 31 private System.ComponentModel.Container components = null; public frmfase2() // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after // InitializeComponent call // /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) if( disposing ) if(components!= null) components.dispose(); base.dispose( disposing ); // fungsi untuk mengambil hasil perhitungan dari MSPC // apakah incontrol atau tidak, // lcl, ucl dan T2 nya berapa dan tampilkan pada datagrid private void calculate_fase2() int i = 0; // ambil nilai yg melambangkan apakah data baru ini // incontrol atau tidak // setelah di hitung incontrol = MSPC.FaseII(dtFase1, dtfase2, alpha); // ambil hasil dari ucl dan lcl LCL2 = MSPC.getLCL(2); UCL2 = MSPC.getUCL(2); lbllcl2.text = LCL2.ToString(); // tampilkan LCL lblucl2.text = UCL2.ToString(); // tampilkan UCL

L 32 arrt2 = new double[dtfase2.rows.count]; MSPC.getArrT2(2).CopyTo(arrT2, 0); if (dtperhitungan2.columns["t-square"] == null) // tambahkan kolom T-Square ke dalam table data // fase 1 yang di tampilkan dtperhitungan2.columns.add(new DataColumn("T- Square", typeof(double))); 1] = arrt2[i]; // input T-Square ke dalam kolom yang baru di tambah // ke tabel for (i = 0; i < arrt2.length; i++) dtperhitungan2.rows[i][dtperhitungan2.columns.count - // Tabel untuk Control Chart dtcl = new DataTable(); // inisialisasi tabel // inisialisasi kolom - kolom tabel dccl = new DataColumn("T-Square", typeof(double)); dtcl.columns.add(dccl); dccl = new DataColumn("LCL", typeof(double)); dtcl.columns.add(dccl); dccl = new DataColumn("UCL", typeof(double)); dtcl.columns.add(dccl); for (i = 0; i < arrt2.length; i++) // inisialisasi baris baru drcl = dtcl.newrow(); // input data ke baris yang baru drcl["t-square"] = arrt2[i]; drcl["lcl"] = LCL2; drcl["ucl"] = UCL2; // tambah baris baru ke tabel dtcl.rows.add(drcl); ////////////////////////////////////////////////////////// chartcl.data.datasource = dtcl; chartcl.data.swaprowsandcolumns = true;

L 33 chartcl.titletop.text = "Peta Kontrol Fase 2 " + datefase2.value.toshortdatestring() + " berdasarkan Data Fase 1 " + txtdatefase1.text; chartcl.databind(); if (incontrol == 1) lblkesimpulan.text = "Data baru yang dimasukkan didalam kontrol seluruhnya. Hal ini berarti kualitas produk masih baik. Belum terjadi penurunan kualitas."; else if (incontrol == 0) strdataout = MSPC.getDataOutOfControl(); lblkesimpulan.text = "Terdapat data baru yang berada diluar kontrol, yaitu data " + strdataout + " Hal ini menunjukkan adanya penurunan kualitas yang bisa disebabkan oleh salah satu atau seluruh variabel yang berpengaruh dalam perhitungan ini."; btnhitung.enabled = false; private void frmfase2_load(object sender, System.EventArgs e) dtperhitungan1 = new DataTable(); dtperhitungan2 = new DataTable(); dtfase1 = new DataTable(); dtfase2 = new DataTable(); MSPC = new CMSPC(); // datagrid tidak bisa di edit dgdatafase2.displaylayout.override.allowupdate = Infragistics.Win.DefaultableBoolean.True; private void frmfase2_closing(object sender, System.ComponentModel.CancelEventArgs e) frmmain.ffase2 = null; // perintah yang dijalankan pada saat ingin memilih fase 1.

L 34 // pada saat ini akan menampilkan 1 form untuk user memilih // fase satu yang mana yang akan di pakai sebagai data // acuan dari data yang baru private void btnplhdatepartfase1_click(object sender, System.EventArgs e) if (fdatepartfase1 == null) fdatepartfase1 = new frmdateprocessfase1(); fdatepartfase1.show(); else fdatepartfase1.focus(); // untuk memvalidasi apakah data sebelumnya telah ada pada // database private void btnvalidate_ok_click(object sender, System.EventArgs e) int idx; idx = 0; if (txtdatefase1.text!= "" && txtprocessname.text!= "" && txtalpha.text!= "") OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\Data.mdb;Persist Security Info=False"); OleDbCommand com = new OleDbCommand(); OleDbDataReader dr = null; com.connection = con; if (con.state == ConnectionState.Closed) con.open(); com.commandtext = "select * from ms_fase2 where kd_f1 = '" + kd_f1 + "' and tgl_f2 = '" + datefase2.value.toshortdatestring() + "'"; try dr = com.executereader(); catch (OleDbException ex)

L 35 MessageBox.Show(ex.Message); // apabila sudah ada data tersebut pada // database if (dr.read()) MessageBox.Show("Data Fase 2 untuk tanggal Fase 1, proses Fase 1, tingkat kepercayaan Fase 1 dan tanggal Fase 2 ini sudah ada. Jika anda tetap ingin menginput data pada tanggal, proses dan tingkat kepercayaan ini, anda harus menghapus data yang sebelumnya sudah ada terlebih dahulu dengan menggunakan tombol HAPUS DATA pada Form Laporan Data Baru (Fase 2).", "Data sudah pernah ada", MessageBoxButtons.OK, MessageBoxIcon.Stop); else txtdatefase1.clear(); txtprocessname.clear(); txtalpha.clear(); datefase2.focus(); grbdate_part.enabled = false; grbinputdatafase2.enabled = true; grbinput.enabled = true; grbimport.enabled = false; dr.close(); ////////////////////////////////////////////////////////////// /// load data dari tabel ms_fase1 /////////////// ////////////////////////////////////////////////////////////// // jika data sebelumnya belum pernah ada maka // load data fase satu sebagai data acuan kd_f1 = '" + kd_f1 + "'"; // load data fase 1 yang memiliki kode seperti // yang user pilih // kode = tanggal fase 1 + no proses + alpha com.commandtext = "select * from MS_Fase1 where try dr = com.executereader();

L 36 catch (OleDbException ex) MessageBox.Show(ex.Message); if (dr.read()) varfase1 = int.parse(dr[4].tostring()); alpha = double.parse(dr[3].tostring()); LCL1 = double.parse(dr[5].tostring()); UCL1 = double.parse(dr[6].tostring()); lbllcl1.text = LCL1.ToString(); lblucl1.text = UCL1.ToString(); ////////////////////////////////////////////////////////////// dr.close(); //////////////////////////////////////////////////////////////////////////////////// /// load nama variabel fase 1 dari tabel dt_fase1_var //////// /////////////////////////////////////////////////////////////////////////////////// com.commandtext = "select * from DT_Fase1_var where kd_f1 = '" + kd_f1 + "' order by kd_f1 asc, kol asc"; try dr = com.executereader(); catch (OleDbException ex) MessageBox.Show(ex.Message); dtfase1 = new DataTable(); typeof(double)); while (dr.read()) dcf = new DataColumn (dr[2].tostring(), dtfase1.columns.add(dcf); //////////////////////////////////////////////////////////////

L 37 dr.close(); ////////////////////////////////////////////////////////////// /// load data fase 1 (tanpa data) ke datatable fase 2 untuk di // tampilkan pada dgdatafase2 dtfase2 = dtfase1.copy(); dgdatafase2.datasource = dtfase2; dgdatafase2.databind(); lblvar.text = dtfase2.columns.count.tostring(); ////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// /// load data fase 1 dari tabel dt_fase1_data //////////// ////////////////////////////////////////////////////////////////////////// com.commandtext = "select * from DT_Fase1_data where kd_f1 = '" + kd_f1 + "'"; try dr = com.executereader(); catch (OleDbException ex) MessageBox.Show(ex.Message); idx = 0; drf = dtfase1.newrow(); while (dr.read()) if (idx == varfase1) dtfase1.rows.add(drf); drf = dtfase1.newrow(); idx = 0; drf[idx++] = dr[3]; dtfase1.rows.add(drf);

L 38 dtperhitungan1 = dtfase1.copy(); ////////////////////////////////////////////////////////////// dr.close(); /////////////////////////////////////////////////////////////////////////// /// load T-Square fase 1 dari tabel dt_fase1_t2/////// ////////////////////////////////////////////////////////////////////////// com.commandtext = "select t2_f1 from DT_Fase1_T2 where kd_f1 = '" + kd_f1 + "'"; try dr = com.executereader(); catch (OleDbException ex) MessageBox.Show(ex.Message); dcf = new DataColumn("T-Square", typeof(double)); dtperhitungan1.columns.add(dcf); idx = 0; while (dr.read()) dtperhitungan1.rows[idx++][dtperhitungan1.columns.count - 1] = double.parse(dr[0].tostring()); ////////////////////////////////////////////////////////////// dr.close(); con.close(); else dgdatafase1.datasource = dtperhitungan1; dgdatafase1.databind(); MessageBox.Show("Nama Proses harus diisi."); btnplhdatepartfase1.focus(); // sama seperti penjelasan pada frmfase1

L 39 private void radioinputmode_valuechanged(object sender, System.EventArgs e) grbinput.visible = (!grbinput.visible); grbinput.enabled = (!grbinput.enabled); grbimport.visible = (!grbimport.visible); grbimport.enabled = (!grbimport.enabled); if (radioinputmode.checkedindex == 0) dgdatafase2.displaylayout.override.allowupdate = Infragistics.Win.DefaultableBoolean.True; dgdatafase2.contextmenu = contextvarf2; dgdatafase2.datasource = dtfase2; dgdatafase2.databind(); else dgdatafase2.displaylayout.override.allowupdate = Infragistics.Win.DefaultableBoolean.False; dgdatafase2.contextmenu = null; dgdatafase2.datasource = null; // sama seperti penjelasan pada frmfase1 private void btnopenfile_click(object sender, System.EventArgs e) try openfile.filter = "Excel Files (*.xls) *.xls"; openfile.showdialog(); txtopenfile.text = openfile.filename; catch (Exception ex) MessageBox.Show(ex.Message, "Import Error", MessageBoxButtons.OK, MessageBoxIcon.Error); // sama seperti penjelasan pada frmfase1 private void mnuadd_click(object sender, System.EventArgs e)

L 40 drf = dtfase2.newrow(); dtfase2.rows.add(drf); if (dtfase2.rows.count > 0) btnok.enabled = true; contextvarf2.menuitems[1].enabled = true; dgdatafase2.activerow = dgdatafase2.rows[dtfase2.rows.count - 1]; lblsample.text = dtfase2.rows.count.tostring(); // sama seperti penjelasan pada frmfase1 private void mnudel_click(object sender, System.EventArgs e) dtfase2.rows.removeat(dgdatafase2.activerow.index); if (dtfase2.rows.count > 0) dgdatafase2.activerow = dgdatafase2.rows[0]; else btnok.enabled = false; contextvarf2.menuitems[1].enabled = false; lblsample.text = dtfase2.rows.count.tostring(); // sama seperti penjelasan pada frmfase1 private void btnok_click(object sender, System.EventArgs e) dgdatafase2.displaylayout.override.allowupdate = Infragistics.Win.DefaultableBoolean.False; dgdatafase2.contextmenu = null; for (int i = 0; i < dtfase2.rows.count; i++) for (int j = 0; j < dtfase2.columns.count; j++) if (dtfase2.rows[i][j].tostring() == "")

L 41 MessageBox.Show("Semua data Fase 2 harus diisi semua.", "Ada data yang kosong", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; dtperhitungan2 = dtfase2.copy(); dgdatafase2.datasource = dtperhitungan2; dgdatafase2.databind(); btnhitung.enabled = true; grbinputdatafase2.enabled = false; // sama seperti penjelasan pada frmfase1 private void btnimport_click(object sender, System.EventArgs e) if (txtopenfile.text!= "") CExcel conexcel = new CExcel(); try dtfase2 = conexcel.excelimporter(txtopenfile.text).copy(); catch (Exception ex) MessageBox.Show(ex.Message); return; for (int i = 0; i < dtfase2.rows.count; i++) for (int j = 0; j < dtfase2.columns.count; j++) if (dtfase2.rows[i][j].tostring() == "") MessageBox.Show("Sistem tidak dapat mengimport masuk file data Fase 1 anda, hal ini dikarenakan file data Fase 2 mengandung data kosong, semua data Fase 2 harus diisi semua.", "Ada data yang kosong", MessageBoxButtons.OK, MessageBoxIcon.Stop); dtfase2 = new DataTable();

L 42 return; dtperhitungan2 = dtfase2.copy(); dgdatafase2.datasource = dtperhitungan2; dgdatafase2.databind(); btnhitung.enabled = true; aplikasi harus diisi."); else grbinputdatafase2.enabled = false; MessageBox.Show("Lokasi file yang akan diimport ke btnopenfile.focus(); // perintah yang di jalan kan pada saat user menekan tombol hitung fase 2 // berbeda dengan fase satu, pada fase 2 ini, user hanya // bisa menghitung sekali, tidak bisa // tidak bisa hitung ulang seperti fase 1 private void btnhitung_click(object sender, System.EventArgs e) try calculate_fase2(); catch (Exception ex) MessageBox.Show(ex.Message); btnsave.enabled = true; private void btnreset_click(object sender, System.EventArgs e) if (dtcl!= null) dtcl = new DataTable(); if (dtfase1!= null) dtfase1 = new DataTable(); if (dtfase2!= null) dtfase2 = new DataTable();

L 43 if (dtperhitungan1!= null) dtperhitungan1 = new DataTable(); if (dtperhitungan2!= null) dtperhitungan2 = new DataTable(); dgdatafase2.contextmenu = null; contextvarf2.menuitems[1].enabled = false; txtopenfile.clear(); txtdatefase1.clear(); txtprocessname.clear(); txtalpha.clear(); lblkesimpulan.text = ""; lbllcl1.text = ""; lblucl1.text = ""; lbllcl2.text = ""; lblucl2.text = ""; lblvar.text = "<Belum Ada Input>"; lblsample.text = "<Belum Ada Input>"; radioinputmode.checkedindex = 0; incontrol = -1; btnhitung.enabled = false; btnsave.enabled = false; grbdate_part.enabled = true; grbinputdatafase2.enabled = false; dgdatafase1.datasource = null; dgdatafase2.datasource = null; chartcl.data.datasource = null; btnplhdatepartfase1.focus(); private void btnsave_click(object sender, System.EventArgs e) int i, j; DialogResult hsl = MessageBox.Show("Anda yakin untuk menyimpan data hasil perhitungan ini?", "Simpan Data", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (hsl == DialogResult.No) return; kd_f2 = datefase2.value.toshortdatestring() + "-" + kd_f1;

L 44 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\Data.mdb;Persist Security Info=False"); OleDbCommand com = new OleDbCommand(); com.connection = con; if (con.state == ConnectionState.Closed) con.open(); // input database (tabel MS_Fase2) try com.commandtext = "insert into ms_fase2 values ('" + kd_f2 + "', '" + datefase2.value.toshortdatestring() + "', '" + kd_f1 + "', " + LCL2 + ", " + UCL2 + ", " + incontrol + ", '" + lblkesimpulan.text + "')"; com.executenonquery(); catch (OleDbException ex) MessageBox.Show(ex.Message); // input database (tabel DT_Fase2_Data) for (i = 0; i < dtfase2.rows.count; i++) for (j = 0; j < dtfase2.columns.count; j++) try com.commandtext = "insert into dt_fase2_data values ('" + kd_f2 + "', " + i + ", " + j + ", " + dtfase2.rows[i][j] + ")"; com.executenonquery(); catch (OleDbException ex) MessageBox.Show(ex.Message); // input database (tabel DT_Fase2_T2) for (i = 0; i < arrt2.length; i++) try com.commandtext = "insert into dt_fase2_t2 values ('" + kd_f2 + "', " + i + ", " + arrt2[i] + ")"; com.executenonquery(); catch (OleDbException ex)

L 45 MessageBox.Show(ex.Message); con.close(); if (frmmain.fviewf2!= null) frmmain.fviewf2.loadlist(); MessageBox.Show("Data Fase 2 berhasil disimpan ke dalam database.", "Simpan File Sukses", MessageBoxButtons.OK, MessageBoxIcon.Information); btnreset.performclick();

L 46 Coding frmplhdateprocessfase1.cs using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; namespace MSPC /// <summary> /// Summary description for frmplhprocess. /// </summary> public class frmdateprocessfase1 : System.Windows.Forms.Form internal Infragistics.Win.UltraWinGrid.UltraGrid dgdatapart; private Infragistics.Win.Misc.UltraLabel ultralabel1; private Infragistics.Win.Misc.UltraButton btncancel; private Infragistics.Win.Misc.UltraButton btnok; /// <summary> /// Required designer variable. System.Data.OleDb.OleDbConnection con; System.Data.OleDb.OleDbDataAdapter da; System.Data.DataTable dt; /// </summary> private System.ComponentModel.Container components = null; public frmdateprocessfase1() // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after // InitializeComponent call // /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) if( disposing )

L 47 if(components!= null) components.dispose(); base.dispose( disposing ); private void frmdateprocessfase1_load(object sender, System.EventArgs e) con = new System.Data.OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\Data.mdb;Persist Security Info=False"); da = new System.Data.OleDb.OleDbDataAdapter("select MS_Fase1.tgl_f1 as [Tanggal Fase 1], MS_Fase1.process_number as [No Proses], MS_Process.process_name as [Nama Proses], MS_Fase1.alpha as [Tingkat Kepercayaan] from MS_Fase1 inner join MS_Process on MS_Fase1.process_number = MS_Process.process_number where MS_Fase1.inControl = true", con); dt = new System.Data.DataTable(); try da.fill(dt); catch (System.Data.OleDb.OleDbException ex) MessageBox.Show(ex.Message); dgdatapart.datasource = dt; dgdatapart.databind(); if (dt.rows.count < 1) btnok.enabled = false; else dgdatapart.activerow = dgdatapart.rows[0]; private void frmdateprocessfase1_closing(object sender, System.ComponentModel.CancelEventArgs e) frmmain.ffase2.fdatepartfase1 = null; private void btncancel_click(object sender, System.EventArgs e)

L 48 this.close(); private void btnok_click(object sender, System.EventArgs e) frmmain.ffase2.txtdatefase1.text = dgdatapart.rows[dgdatapart.activerow.index].cells[0].text; frmmain.ffase2.processnumber = int.parse(dgdatapart.rows[dgdatapart.activerow.index].cells[1].text); frmmain.ffase2.txtprocessname.text = dgdatapart.rows[dgdatapart.activerow.index].cells[2].text; frmmain.ffase2.alpha = double.parse(frmmain.ffase2.txtalpha.text = dgdatapart.rows[dgdatapart.activerow.index].cells[3].text); frmmain.ffase2.kd_f1 = frmmain.ffase2.txtdatefase1.text + "-" + String.Format("0", frmmain.ffase2.processnumber) + "-" + String.Format("0", frmmain.ffase2.alpha); this.close();

L 49 Coding frmviewf1.cs using System; using System.Drawing; using System.Drawing.Printing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Data.OleDb; using Infragistics.Shared; using Infragistics.Win; using Infragistics.Win.Printing; namespace MSPC /// <summary> /// Summary description for frmviewf1. /// </summary> public class frmviewf1 : System.Windows.Forms.Form #region User Interface Component private System.Windows.Forms.Panel frmviewf1_fill_panel; public System.Windows.Forms.TextBox txtalpha; private System.Windows.Forms.Label label11; public System.Windows.Forms.TextBox txtdatefase1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label1; private Infragistics.Win.Misc.UltraButton btnnext; private Infragistics.Win.Misc.UltraButton btnlast; private Infragistics.Win.Misc.UltraLabel ultralabel1; private Infragistics.Win.Misc.UltraButton btnprev; private Infragistics.Win.Misc.UltraButton btnfirst; private Infragistics.Win.Misc.UltraGroupBox grbcl; private System.Windows.Forms.Label lbllcl; private System.Windows.Forms.Label lblucl; private System.Windows.Forms.Label label9; private System.Windows.Forms.Label label8; private Infragistics.Win.Misc.UltraGroupBox grbkesimpulan; private Infragistics.Win.Misc.UltraGroupBox grb_fase1; private Infragistics.Win.Misc.UltraButton btndel; internal Infragistics.Win.UltraWinGrid.UltraGrid dgdata; private Infragistics.Win.Misc.UltraGroupBox grbdatafase1; private Infragistics.Win.UltraWinChart.UltraChart chartcl; internal Infragistics.Win.UltraWinGrid.UltraGrid dglist;