• Tidak ada hasil yang ditemukan

L 1. Lampiran 1 Coding frmmain.cs

N/A
N/A
Protected

Academic year: 2021

Membagikan "L 1. Lampiran 1 Coding frmmain.cs"

Copied!
86
0
0

Teks penuh

(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;

(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()); }

(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

(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;

(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

} } }

(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;

(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() {

//

(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

(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)));

}

// 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] = arrT2[i];

// 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

(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; }

}

(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(); if (dtFase1.Columns.Count > 0) dgData.ContextMenu = contextVarF1;

}

// 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;

dtVarF1 = new DataTable();

dtVarF1.Columns.Add(new DataColumn("Nama Variabel Fase 1", typeof(string)));

// datagrid boleh di edit

dgData.DisplayLayout.Override.AllowUpdate = Infragistics.Win.DefaultableBoolean.True;

}

(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()); }

(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); txtProcessName.Clear(); dateFase1.Focus(); } else { grbDate_Part.Enabled = false; grbInputDataFase1.Enabled = true;

(14)

grbInput.Enabled = true; grbImport.Enabled = false; } dr.Close(); con.Close(); } else {

MessageBox.Show("Nama Proses dan tingkat kepercayaan harus diisi.");

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

(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();

(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(); }

(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

(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; grbInputDataFase1.Enabled = false; } else {

MessageBox.Show("Lokasi file yang akan diimport ke aplikasi harus diisi.");

btnOpenFile.Focus(); }

}

// perintah yg di jalan saat user menekan tombol hitung

private void btnHitung_Click(object sender, System.EventArgs e) {

(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; }

(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);

(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] + ")";

(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] + ")";

com.ExecuteNonQuery(); }

catch (OleDbException ex) {

MessageBox.Show(ex.Message); }

con.Close();

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(); }

} }

(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

// }

(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)

(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(); } } }

(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 ) {

(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(); }

(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(); } } }

(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;

(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

/// <summary>

// Variabel yang di pakai pada aplikasi

private DataTable dtFase1, dtFase2, dtPerhitungan1, dtPerhitungan2, dtCL;

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; ////////////////////////////////////////////////////////////

(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

(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)));

}

// 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 - 1] = arrT2[i];

// 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;

(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; }

(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(); }

(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);

txtDateFase1.Clear(); txtProcessName.Clear(); txtAlpha.Clear(); dateFase2.Focus(); } else { grbDate_Part.Enabled = false; grbInputDataFase2.Enabled = true; grbInput.Enabled = true; grbImport.Enabled = false; } dr.Close();

// jika data sebelumnya belum pernah ada maka // load data fase satu sebagai data acuan

////////////////////////////////////////////////////////////// /// load data dari tabel ms_fase1 /////////////// //////////////////////////////////////////////////////////////

// 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 kd_f1 = '" + kd_f1 + "'";

try {

dr = com.ExecuteReader(); }

(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();

while (dr.Read())

{

dcF = new DataColumn (dr[2].ToString(), typeof(double));

dtFase1.Columns.Add(dcF); }

(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);

(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(); dgDataFase1.DataSource = dtPerhitungan1; dgDataFase1.DataBind(); } else {

MessageBox.Show("Nama Proses harus diisi."); btnPlhDatePartFase1.Focus();

} }

(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) {

(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() == "") {

(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);

(42)

return; } dtPerhitungan2 = dtFase2.Copy(); dgDataFase2.DataSource = dtPerhitungan2; dgDataFase2.DataBind(); btnHitung.Enabled = true; grbInputDataFase2.Enabled = false; } else {

MessageBox.Show("Lokasi file yang akan diimport ke aplikasi harus diisi.");

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();

(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;

(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(); }

(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(); }

} }

(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 ) {

(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; }

(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(); }

} }

(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;

(50)

private Infragistics.Win.Misc.UltraButton btnPrintData; private Infragistics.Win.Misc.UltraButton btnPrintChart;

private Infragistics.Win.Printing.UltraPrintPreviewDialog ultraPrintPreviewDialogData;

private Infragistics.Win.Printing.UltraPrintPreviewDialog ultraPrintPreviewDialogChart;

public System.Windows.Forms.TextBox txtProcessName; private Infragistics.Win.UltraWinGrid.UltraGridPrintDocument printDocDataFase1;

private System.Windows.Forms.Label lblKesimpulan; private System.ComponentModel.IContainer components; #endregion

private OleDbConnection conList; private OleDbDataAdapter daList; private DataTable dtList;

private DataTable dtFase1; private DataTable dtCL;

private DataColumn dcF1, dcCL; private DataRow drF1, drCL; private int idx = 0;

private int varFase1 = 0; private string kd_f1 = ""; public frmViewF1()

{

//

// 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) {

(51)

components.Dispose(); }

}

base.Dispose( disposing ); }

// fungsi untuk mengload semua list fase 1 yang telah // tercatat pada database sebelumnya

public void loadList() {

conList = new

OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\Data.mdb;Persist Security Info=False");

daList = new 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 order by MS_Fase1.tgl_f1, MS_Fase1.process_number, MS_Fase1.alpha", conList);

dtList = new DataTable(); try

{

// load list data fase 1 yang sudah ada pada // database sebelumnya

daList.Fill(dtList); }

catch (OleDbException ex) { MessageBox.Show(ex.Message); } dgList.DataSource = dtList; dgList.DataBind(); if (dtList.Rows.Count < 1) { btnLast.Enabled = false; btnNext.Enabled = false; btnPrev.Enabled = false; btnFirst.Enabled = false; btnPrintData.Enabled = true; btnPrintChart.Enabled = true; btnDel.Enabled = false; }

(52)

else if (dtList.Rows.Count < 2) { btnLast.Enabled = false; btnNext.Enabled = false; btnPrev.Enabled = false; btnFirst.Enabled = false; btnPrintData.Enabled = true; btnPrintChart.Enabled = true; btnDel.Enabled = true; idx = 0; loadDataFase1(); } else { btnLast.Enabled = true; btnNext.Enabled = true; btnPrev.Enabled = true; btnFirst.Enabled = true; btnPrintData.Enabled = true; btnPrintChart.Enabled = true; btnDel.Enabled = true; idx = 0; loadDataFase1(); } }

// fungsi untuk mengload data fase 1 yang terpilih pada // datagrid secara detil

private void loadDataFase1() {

int i = 0;

kd_f1 = dtList.Rows[idx][0].ToString() + "-" + dtList.Rows[idx][1].ToString() + "-" + dtList.Rows[idx][3].ToString(); dgList.ActiveRow = dgList.Rows[idx]; 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;

(53)

com.Connection = con;

if (con.State == ConnectionState.Closed) con.Open(); //////////////////////////////////////////////////////////////

/// load data dari tabel ms_fase1 /////////////// //////////////////////////////////////////////////////////////

com.CommandText = "select var_f1, lcl_f1, ucl_f1, kesimpulan from MS_Fase1 where kd_f1 = '" + kd_f1 + "'";

try {

dr = com.ExecuteReader(); }

catch (OleDbException ex) { MessageBox.Show(ex.Message); } if (dr.Read()) { varFase1 = int.Parse(dr[0].ToString()); txtDateFase1.Text = dtList.Rows[idx][0].ToString(); txtProcessName.Text = dtList.Rows[idx][2].ToString(); txtAlpha.Text = dtList.Rows[idx][3].ToString(); lblLCL.Text = dr[1].ToString(); lblUCL.Text = dr[2].ToString(); lblKesimpulan.Text = dr[3].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) {

(54)

}

dtFase1 = new DataTable(); while (dr.Read())

{

dcF1 = new DataColumn (dr[2].ToString(), typeof(double)); dtFase1.Columns.Add(dcF1); } ////////////////////////////////////////////////////////////// dr.Close(); ////////////////////////////////////////////////////////////////////// /// 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); } i = 0; drF1 = dtFase1.NewRow(); while (dr.Read()) { if (i == varFase1) { dtFase1.Rows.Add(drF1); drF1 = dtFase1.NewRow(); i = 0; } drF1[i++] = dr[3]; } dtFase1.Rows.Add(drF1);

(55)

////////////////////////////////////////////////////////////// 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); }

dcF1 = new DataColumn("T-Square", typeof(double)); dtFase1.Columns.Add(dcF1); i = 0; while (dr.Read()) dtFase1.Rows[i++][dtFase1.Columns.Count - 1] = double.Parse(dr[0].ToString()); ////////////////////////////////////////////////////////////// dr.Close(); con.Close(); dgData.DataSource = dtFase1; dgData.DataBind(); loadChartCL(); }

private void loadChartCL() {

int i = 0;

////////////////////////////////////////////////////////// /// Tabel untuk Control Chart /////////////// //////////////////////////////////////////////////////////

(56)

// 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 < dtFase1.Rows.Count; i++) {

// inisialisasi baris baru drCL = dtCL.NewRow();

// input data ke baris yang baru drCL["T-Square"] = dtFase1.Rows[i][dtFase1.Columns.Count - 1];

drCL["LCL"] = double.Parse(lblLCL.Text); drCL["UCL"] = double.Parse(lblUCL.Text);

// tambah baris baru ke tabel dtCL.Rows.Add(drCL);

}

////////////////////////////////////////////////////////// chartCL.Data.DataSource = dtCL;

chartCL.Data.SwapRowsAndColumns = true; chartCL.TitleTop.Text = "Peta Kontrol Fase 1 " + txtDateFase1.Text;

chartCL.DataBind(); }

private void frmViewF1_Closing(object sender, System.ComponentModel.CancelEventArgs e)

{

frmMain.fViewF1 = null; }

// perintah yang dijalankan pada saat form di load

private void frmViewF1_Load(object sender, System.EventArgs e) {

// begitu form di load langsung load list fase 1 yang // sudah ada database

// dan otomatis load data fase 1 secara detil pada // index pertama list data fase 1

(57)

}

// perintah ini di jalankan pada saat index pada datagrid //(dgList) berubah.

// perintah ini akan mengload data fase 1 secara detil // sesuai tanggal, proses dan alpha yang terpilih pada // datagrid (dgList)

private void dgList_AfterRowActivate(object sender, System.EventArgs e)

{

idx = dgList.Rows[dgList.ActiveRow.Index].Index; loadDataFase1(); // load data fase 1 yang terpilih // secara detil

}

// ketika button last di tekan

private void btnLast_Click(object sender, System.EventArgs e) {

idx = dgList.Rows[dgList.Rows.Count - 1].Index; loadDataFase1(); // load data fase 1 yang terpilih // secara detil

}

// ketika tombol first di tekan

private void btnFirst_Click(object sender, System.EventArgs e) {

idx = 0;

loadDataFase1(); // load data fase 1 yang terpilih // secara detil

}

// ketika button next di tekan

private void btnNext_Click(object sender, System.EventArgs e) {

if (idx < dgList.Rows.Count - 1) idx++;

loadDataFase1(); // load data fase 1 yang terpilih // secara detil

}

//ketika button prev di tekan

private void btnPrev_Click(object sender, System.EventArgs e) {

Referensi

Dokumen terkait

Beberapa kemampuan berpikir matematis yang tergolong tingkat tinggi di antaranya adalah: pemahaman, penalaran, koneksi, komunikasi, dan representasi matematik yang

3) After the current bus cycle is complete the microprocessor will respond by putting a 1 on the HLDA pin to DMA controller. When the requesting device receives this grant signal

Agar kita bisa mengetahui dalam soal bahasanya jenis text yang kit abaca adalah Narrative, kita harus mengetahui cirri – cirri dari text ini!. Generic structure ( cirri – cirri

Dari pengertian tersebut dapat disimpulkan bahwa umat Israel tidak sepenuh hati berpuasa kepada Tuhan, karena pada saat mereka berpuasa ada aktifitas lain yang mereka

memungkinkan untuk merasa benci pada orang lain. Terciptanya hubungan timbal balik antara penerimaan diri dan penerimaan orang lain adalah individu yang memiliki penerimaan

Penelitian ini bertujuan untuk mengetahui gambaran kondisi fisik rumah penduduk sekitar penderita malaria di desa Bagan dalam Kecamatan Tanjung Tiram Kabupaten Batu Bara2.

Dengan melihat hasil uji signifikasi Variabel Dependen Investasi Penanaman Modal Asing (X1) terhadap Pendapatan Perkapita (Y1), Pertumbuhan Ekonomi (Y2), Ekspor (Y3), maka ( 1 )

Alokasikan semua data atau obyek ke cluster terdekat berdasarkan jarak yang dihitung menggunakan rumus fungsi pemetaan Φ dari fungsi kernel.. Mulai masuk pada iterasi ke-1 (t