0% menganggap dokumen ini bermanfaat (0 suara)
11 tayangan48 halaman

Aplikasi Prediksi Penjualan Parfum

Dokumen ini menjelaskan tentang aplikasi prediksi penjualan parfum menggunakan metode Least Square, termasuk rancangan database dan coding untuk berbagai modul aplikasi. Terdapat penjelasan mengenai koneksi database, pengolahan data, serta pembuatan form untuk login, daftar user, dan varian aroma. Aplikasi ini juga mencakup fungsi untuk menampilkan dan mengedit data penjualan berdasarkan varian parfum.

Diunggah oleh

ariiipubg69
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
11 tayangan48 halaman

Aplikasi Prediksi Penjualan Parfum

Dokumen ini menjelaskan tentang aplikasi prediksi penjualan parfum menggunakan metode Least Square, termasuk rancangan database dan coding untuk berbagai modul aplikasi. Terdapat penjelasan mengenai koneksi database, pengolahan data, serta pembuatan form untuk login, daftar user, dan varian aroma. Aplikasi ini juga mencakup fungsi untuk menampilkan dan mengedit data penjualan berdasarkan varian parfum.

Diunggah oleh

ariiipubg69
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd

Contoh Aplikasi Prediksi Data Per Bulan

Aplikasi Prediksi Penjualan Parfum Berdasarkan Varian dengan Metode Least


Square
A. Rancangan Database
B. Buat Aplikasi Project Baru
1. Coding untuk Bagian Modul

Imports System.Data.Odbc
Imports System.Text
Imports System.Security.Cryptography
Module Module1
Public Conn As OdbcConnection
Public da As OdbcDataAdapter
Public ds As DataSet
Public rd As OdbcDataReader
Public rd2 As OdbcDataReader
Public cmd As OdbcCommand
Public nJmlUser As Integer
Public cLevelUser, cUserId, mPath, cNamaUser, cId_Dataset, cKode_Varian, cId_Bulan As String
Public tblEdit, Valid As Boolean
Public cBulan() As String

Public Sub Koneksi()


'Procedure koneksi database dengan MySql
mPath = Application.StartupPath & "\"
cBulan = {"Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September",
"Oktober", "November", "Desember"}
Try
Conn = New OdbcConnection("DSN=dsnParfum;MultipleActiveResultSets=True")
If Conn.State = ConnectionState.Closed Then
Conn.Open()
End If
Catch ex As Exception
MsgBox("Koneksi Database Gagal", vbExclamation, "Koneksi Gagal")
End Try

End Sub
Public Sub HitungData()
cmd = New OdbcCommand("Select count(*) as jml from tbuser ", Conn)
rd = cmd.ExecuteReader
rd.Read()
nJmlUser = rd.Item(0)

End Sub
Public Function StripNonAlphaNum(ByRef sText As String) As String
Dim strRegex As String = "[^a-zA-Z0-9 -]"
Dim rgx As New System.Text.RegularExpressions.Regex(strRegex)
Return rgx.Replace(sText, "")
End Function

Public Function SHA256(ByVal Content As String) As String


'Function untuk mengenkrip password dengan algoritma SHA256
Dim MoleCul3 As New Security.Cryptography.SHA256CryptoServiceProvider
Dim ByteString() As Byte = System.Text.Encoding.ASCII.GetBytes(Content)
ByteString = MoleCul3.ComputeHash(ByteString)

Dim FinalString As String = Nothing


For Each bt As Byte In ByteString
FinalString &= bt.ToString("x2")
Next
Return FinalString

End Function

Public Function NamaBulan(ByVal cNilaiBulan As Byte) As String


NamaBulan = cBulan(cNilaiBulan)
Return NamaBulan
End Function
Public Function NilaiBulan(ByVal cNamaBulan As String) As Byte
Dim nBulan As Byte
Select Case Trim(cNamaBulan)
Case "Januari"
nBulan = 1
Case "Februari", "Pebruari"
nBulan = 2
Case "Maret"
nBulan = 3
Case "April"
nBulan = 4
Case "Mei", "Mey"
nBulan = 5
Case "Juni"
nBulan = 6
Case "Juli"
nBulan = 7
Case "Agustus"
nBulan = 8
Case "September"
nBulan = 9
Case "Oktober"
nBulan = 10
Case "November", "Nopember"
nBulan = 11
Case "Desember"
nBulan = 12
Case Else
nBulan = 0
End Select
NilaiBulan = nBulan
Return NilaiBulan
End Function
End Module

2. Buat Form Login (coding sama dengan di modul materi)


3. Buat Form Menu Level Admin dan Level User (Coding sama dengan di Modul Materi)
4. Buat Form Daftar User (Coding sama dengan di Modul Materi)
5. Buat Form Lupa User (Coding sama dengan di Modul Materi)
6. Buat Form List Data User + Form Entry Data User (Coding sama dengan di Modul Materi)
7. Buat Form List Data Jenis Varian Parfum + Entry Data Parfum
Coding :
Imports System.Data.Odbc
Public Class frmListVarianAroma

Private Sub frmListVarianAroma_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Asc(e.KeyChar) = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub

Private Sub frmListVarianAroma_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


MyBase.Load
Call Tampilkan()
End Sub

Sub Tampilkan()
Dim btnEdit As New DataGridViewButtonColumn()
Dim btnHapus As New DataGridViewButtonColumn()
DGV.Columns.Clear()
DGV.Columns.Add("kode", "Kode Varian")
DGV.Columns.Add("kode", "Varian Aroma")

Dim sql As String = "Select * from tbvarian_aroma order by kode_varian"


cmd = New OdbcCommand(sql, Conn)
rd = cmd.ExecuteReader
Dim i As Integer = 0
While rd.Read
DGV.Rows.Add()
DGV.Item(0, i).Value = rd("kode_varian")
DGV.Item(1, i).Value = rd("varian_aroma")
i += 1
End While

DGV.ReadOnly = True
DGV.AllowUserToAddRows = False
DGV.Columns(0).Width = 90
DGV.Columns(1).Width = 220

DGV.RowTemplate.Height = 25
DGV.GridColor = Color.Blue
DGV.DefaultCellStyle.ForeColor = Color.Blue
DGV.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
DGV.SelectionMode = DataGridViewSelectionMode.FullRowSelect
DGV.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter

DGV.Columns().Add(btnEdit)
btnEdit.HeaderText = ""
btnEdit.Name = "btEdit"
btnEdit.Text = "Edit"
btnEdit.DefaultCellStyle.ForeColor = Color.Maroon
btnEdit.UseColumnTextForButtonValue = True

DGV.Columns().Add(btnHapus)
btnHapus.HeaderText = ""
btnHapus.Name = "btHapus"
btnHapus.Text = "Hapus"
btnHapus.DefaultCellStyle.ForeColor = Color.Maroon
btnHapus.UseColumnTextForButtonValue = True

DGV.Columns(2).Width = 60
DGV.Columns(3).Width = 60

End Sub

Private Sub DGV_CellContentClick(ByVal sender As System.Object, ByVal e As


System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellContentClick

If e.ColumnIndex = 2 Then
tblEdit = True
frmEntryVarianAroma.Text = "Edit Varian Aroma"
cKode_Varian = DGV.SelectedRows.Item(0).Cells(0).Value()
frmEntryVarianAroma.Show()
End If
If e.ColumnIndex = 3 Then
cKode_Varian = DGV.SelectedRows.Item(0).Cells(0).Value()
If MessageBox.Show("Yakin akan dihapus..?", "Hapus Data", MessageBoxButtons.YesNo) =
Windows.Forms.DialogResult.Yes Then
cmd = New OdbcCommand("Delete from tbvarian_aroma where kode_varian='" & cKode_Varian &
"'", Conn)
cmd.ExecuteNonQuery()
Tampilkan()
End If
End If
End Sub

Private Sub btnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnTutup.Click
Me.Close()
End Sub
Private Sub btnTambah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnTambah.Click
tblEdit = False
frmEntryVarianAroma.Text = "Tambah Data Varian Aroma"
frmEntryVarianAroma.Show(Me)
End Sub

End Class

Coding
Imports System.Data.Odbc
Public Class frmEntryVarianAroma
Sub databaru()
txtVarian.Text = ""
txtVarian.Focus()
End Sub

Sub siapisi()
txtVarian.Enabled = True
btnSimpan.Enabled = True
End Sub
Sub tidaksiapisi()
txtVarian.Enabled = False
btnSimpan.Enabled = False

End Sub

Private Sub frmEntryVarainAroma_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Asc(e.KeyChar) = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub

Private Sub frmEntryVarianAroma_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles MyBase.Load

If tblEdit = False Then


Call databaru()
Call tidaksiapisi()
Else
txtKode.Text = cKode_Varian
cmd = New OdbcCommand("select * from tbvarian_aroma where kode_varian='" & cKode_Varian & "'",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows = True Then
Call siapisi()
txtVarian.Text = rd.Item("varian_aroma")
txtKode.Enabled = False
End If
End If

End Sub

Private Sub txtKode_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles txtKode.KeyPress
If e.KeyChar = Chr(13) Then
cmd = New OdbcCommand("select * from tbvarian_aroma where kode_varian='" & txtKode.Text & "'",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows = True Then
txtVarian.Text = rd.Item("varian_aroma")
Call siapisi()
txtKode.Enabled = False
Else
Call databaru()
Call siapisi()

End If

End If
End Sub

Private Sub txtKode_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles


txtKode.Validated
btnSimpan.Enabled = True
End Sub

Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnSimpan.Click
If txtVarian.TextLength = 0 Then
MsgBox("Maaf, Varian Aroma belum diisi", MsgBoxStyle.Information, "Konfirmasi...!")
txtVarian.Focus()
Exit Sub
End If

cmd = New OdbcCommand("Select * from tbvarian_aroma where kode_varian='" & txtKode.Text & "'",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
Dim sqltambah As String = "Insert into tbvarian_aroma (kode_varian,varian_aroma) values " & _
"('" & txtKode.Text & "','" & txtVarian.Text & "')"
cmd = New OdbcCommand(sqltambah, Conn)

Else
Dim sqledit As String = "Update tbvarian_aroma set " & _
"varian_aroma='" & txtVarian.Text & "' " & _
" where kode_varian='" & txtKode.Text & "'"
cmd = New OdbcCommand(sqledit, Conn)

End If
cmd.ExecuteNonQuery()
Me.Close()
Me.Visible = False
frmListVarianAroma.Tampilkan()
End Sub

Private Sub btnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnBatal.Click
Me.Close()
Me.Visible = False
frmListVarianAroma.Tampilkan()
End Sub

End Class

8. Buat Form List Dataset dan Form Entry Dataset


Imports System.Data.Odbc
Imports System.Data.OleDb
Public Class frmListDataset
Dim StopWatch As New Diagnostics.Stopwatch

Dim cTahun As String

Sub Tampil_VarianAroma()
cboVarian.Items.Clear()
cmd = New OdbcCommand("select distinct varian_aroma from tbvarian_aroma " & _
" order by kode_varian", Conn)
rd = cmd.ExecuteReader
While rd.Read
cboVarian.Items.Add(rd.Item(0))
End While
End Sub

Private Sub frmListDataset_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Asc(e.KeyChar) = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub

Private Sub frmListDataset_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


MyBase.Load
cKode_Varian = ""
Call Koneksi()
Call Tampil_VarianAroma()
Call Tampilkandata()
stsBar.Visible = False
btnImport.Enabled = False
btnPilihFile.Enabled = False
btnTambah.Enabled = False
End Sub

Sub Tampilkandata()
Dim btnEdit As New DataGridViewButtonColumn()
Dim btnHapus As New DataGridViewButtonColumn()
DGV.Columns.Clear()
DGV.Columns.Add("kode", "Id Dataset")
DGV.Columns.Add("kode", "Tahun")
DGV.Columns.Add("kode", "Bulan")
DGV.Columns.Add("kode", "Jml Penjualan")

Dim sql As String = "Select id_dataset,tahun,id_bulan,jml_penjualan " & _


" from tbdataset where kode_varian ='" & cKode_Varian & "' order by id_dataset"

cmd = New OdbcCommand(sql, Conn)


rd = cmd.ExecuteReader
Dim i As Integer = 0
While rd.Read
DGV.Rows.Add()
DGV.Item(0, i).Value = rd("id_dataset")
DGV.Item(1, i).Value = rd("Tahun")
DGV.Item(2, i).Value = NamaBulan(rd("id_bulan") - 1)
DGV.Item(3, i).Value = rd("jml_penjualan")
i += 1
End While

rd.Close()
DGV.ReadOnly = True
DGV.AllowUserToAddRows = False
DGV.Columns(0).Width = 90
DGV.Columns(1).Width = 80
DGV.Columns(2).Width = 100
DGV.Columns(3).Width = 100
DGV.GridColor = Color.Blue
DGV.DefaultCellStyle.ForeColor = Color.Black
DGV.RowHeadersDefaultCellStyle.BackColor = Color.DeepPink
DGV.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
DGV.SelectionMode = DataGridViewSelectionMode.FullRowSelect
DGV.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(3).DefaultCellStyle.Format = "#,##0"
DGV.Columns().Add(btnEdit)
btnEdit.HeaderText = ""
btnEdit.Name = "btEdit"
btnEdit.Text = "Edit"
btnEdit.DefaultCellStyle.ForeColor = Color.Maroon
btnEdit.UseColumnTextForButtonValue = True

DGV.Columns().Add(btnHapus)
btnHapus.HeaderText = ""
btnHapus.Name = "btHapus"
btnHapus.Text = "Hapus"
btnHapus.DefaultCellStyle.ForeColor = Color.Maroon
btnHapus.UseColumnTextForButtonValue = True

DGV.Columns(4).Width = 60
DGV.Columns(5).Width = 60
stsBar.Visible = False
txtData.Text = DGV.RowCount
End Sub
Private Sub DGV_CellContentClick(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.DataGridViewCellEventArgs) Handles DGV.CellContentClick

If e.ColumnIndex = 4 Then
tblEdit = True
frmEntryDataset.Text = "Edit Dataset " & cboVarian.Text
cId_Dataset = DGV.SelectedRows.Item(0).Cells(0).Value()

frmEntryDataset.Show()
End If
If e.ColumnIndex = 5 Then
cId_Dataset = DGV.SelectedRows.Item(0).Cells(0).Value()

If MessageBox.Show("Yakin akan dihapus..?", "Hapus Data", MessageBoxButtons.YesNo) =


Windows.Forms.DialogResult.Yes Then
cmd = New OdbcCommand("Delete from tbdataset where id_dataset='" & cId_Dataset & "'", Conn)
cmd.ExecuteNonQuery()

cmd = New OdbcCommand("Delete from tbprediksi where id_dataset='" & cId_Dataset & "'", Conn)
cmd.ExecuteNonQuery()

Tampilkandata()
End If
End If

End Sub

Private Sub btnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnTutup.Click
Me.Close()
End Sub

Private Sub btnTambah_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnTambah.Click
tblEdit = False
frmEntryDataset.Text = "Tambah Dataset " & cboVarian.Text
frmEntryDataset.Show()
End Sub
Private Sub cmdimport_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnImport.Click
Dim conn_xls As OleDbConnection
Dim cmd_xls As OleDbCommand
Dim rd_xls As OleDbDataReader
Dim nJmlDataExcel, nData As Integer
Me.StopWatch.Reset()
stsBar.Visible = True
If btnImport.Text = "&Import" Then
If txtNamaFile.Text = "" Then
MsgBox("Maaf, File Excel belum dipilih !!!", 0 + 16, "Konfirmasi")
Exit Sub
End If
conn_xls = New OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;data source=" &
txtNamaFile.Text & ";Extended Properties=Excel 12.0;")
conn_xls.Open()
cmd_xls = New OleDbCommand("SELECT COUNT(*) AS jml_rec FROM [sheet1$]", conn_xls)
rd_xls = cmd_xls.ExecuteReader
rd_xls.Read()
nJmlDataExcel = rd_xls.Item(0)
cmd_xls = New OleDbCommand("SELECT * FROM [sheet1$]", conn_xls)
rd_xls = cmd_xls.ExecuteReader
btnImport.Visible = False
Me.Refresh()

Timer1.Enabled = True
nData = 0
pBar.Maximum = 100
Timer1.Start()
Me.StopWatch.Start()
While rd_xls.Read

cTahun = rd_xls.Item(0)
cId_Bulan = NilaiBulan(Trim(rd_xls.Item(1)))
Cek_IdDataset()
If cId_Bulan <> 0 Then
cmd = New OdbcCommand("Select * from tbdataset where id_dataset='" & cId_Dataset & "' ",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
Dim sqltambah As String = "Insert into tbdataset
(id_dataset,kode_varian,tahun,id_bulan,jml_penjualan,user_id) values " & _
"('" & cId_Dataset & "','" & cKode_Varian & "','" & cTahun & "','" & cId_Bulan & "'," &
rd_xls.Item(2) & ",'" & cUserId & "')"
cmd = New OdbcCommand(sqltambah, Conn)

Else
Dim sqledit As String = "Update tbdataset set " & _
"jml_penjualan=" & rd_xls.Item(2) & ", " & _
"user_id='" & cUserId & "' " & _
" where id_dataset='" & cId_Dataset & "' "
cmd = New OdbcCommand(sqledit, Conn)

End If

cmd.ExecuteNonQuery()
End If
nData = nData + 1
pBar.PerformStep()
'Hitung persentase kinerja pemrosesan data dan tampilkan dalam status bar
lblPersen.Text = ((nData / nJmlDataExcel) * 100).ToString("N2") & "% Completing..."
pBar.Value = Math.Round(nData / nJmlDataExcel * 100)
Application.DoEvents()
End While
Timer1.Stop()
Me.StopWatch.Stop()
lblPersen.Text = "100% Completed"
conn_xls.Close()
btnImport.Visible = True
MsgBox("Import Data Sukses.", vbExclamation, "Information")
btnImport.Enabled = False
pBar.Value = 0
lblPersen.Text = ""
Call Tampilkandata()
End If
End Sub

Private Sub cmdPilihFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnPilihFile.Click

Dim FileExcel As String


cDialog.Title = "Excel File"
cDialog.Filter = "Excel (*.xlsx)|*.xlsx"
cDialog.InitialDirectory = Application.ExecutablePath
cDialog.ShowDialog()
FileExcel = cDialog.FileName
txtNamaFile.Text = FileExcel
If txtNamaFile.Text <> "" Then
btnImport.Enabled = True
stsBar.Visible = True
Else
btnImport.Enabled = False
End If
End Sub
Sub Cek_IdDataset()
Dim cBln, cPeriode As String
If cId_Bulan < 10 Then
cBln = "0" + Trim(Microsoft.VisualBasic.Str(cId_Bulan))
Else
cBln = Trim(Microsoft.VisualBasic.Str(cId_Bulan))
End If
cPeriode = cTahun + cBln

cId_Dataset = cKode_Varian + cPeriode


End Sub

Private Sub cboVarian_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As


System.EventArgs) Handles cboVarian.SelectedIndexChanged
If cboVarian.Text = "" Then Exit Sub
cmd = New OdbcCommand("Select kode_varian from tbvarian_aroma where varian_aroma='" &
cboVarian.Text & "'", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cKode_Varian = rd.Item("kode_varian")
btnPilihFile.Enabled = True
btnTambah.Enabled = True
Else
MsgBox("Maaf, Varian Aroma salah isi...", , "Perhatian...!")
btnPilihFile.Enabled = False
cboVarian.Text = ""
cboVarian.Focus()
Exit Sub
End If
Call Tampilkandata()
End Sub

End Class

Imports System.Data.Odbc

Public Class frmEntryDataset


Dim nLuas As Single
Dim cTahun As String
Sub TampilBulan()
cboBulan.Items.Clear()
For A = 0 To 11
cboBulan.Items.Add(cBulan(A))
Next
End Sub

Sub kosongkan()
txtJumlah.Text = ""
nTahun.Enabled = True
cboBulan.Enabled = True
nTahun.Focus()
txtJumlah.Enabled = False
btnSimpan.Enabled = False
End Sub
Sub siapisi()
txtJumlah.Enabled = True
txtJumlah.Focus()
btnSimpan.Enabled = True
End Sub
Sub CekData()
cmd = New OdbcCommand("select * from tbdataset where id_dataset = '" & cId_Dataset & "' ", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows = True Then
txtJumlah.Text = rd.Item("jml_penjualan")
txtJumlah.Enabled = True
btnSimpan.Enabled = True
Else
txtJumlah.Text = ""
siapisi()
End If
End Sub

Private Sub frmEntryDataset_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Asc(e.KeyChar) = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub

Private Sub frmEntryDataSet_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


MyBase.Load
Call Koneksi()
nTahun.Value = Year(Now)

Call TampilBulan()
If tblEdit = False Then
Call kosongkan()
Else
cmd = New OdbcCommand("select * from tbdataset where id_dataset='" & cId_Dataset & "'", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows = True Then
Call siapisi()
nTahun.Text = rd.Item("tahun")
cboBulan.Text = NamaBulan(rd("id_bulan") - 1)
txtJumlah.Text = rd.Item("jml_penjualan")
nTahun.Enabled = False
cboBulan.Enabled = False

End If
End If
End Sub

Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnSimpan.Click
If cboBulan.Text = "" Then
MsgBox("Maaf, Bulan Belum diisi...", , "Perhatian...!")
cboBulan.Focus()
Exit Sub
End If
If txtJumlah.Text = "" Then
MsgBox("Maaf, Luas Belum diisi...", , "Perhatian...!")
txtJumlah.Focus()
Exit Sub
End If

Cek_IdDataset()
cmd = New OdbcCommand("Select * from tbdataset where id_dataset = '" & cId_Dataset & "' ", Conn)
rd = cmd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
Dim sqltambah As String = "Insert into tbdataset
(id_dataset,kode_varian,tahun,id_bulan,jml_penjualan,user_id) values " & _
"('" & cId_Dataset & "','" & cKode_Varian & "', '" & nTahun.Text & "', '" & cId_Bulan & "','" & nLuas & "','"
& cUserId & "')"
cmd = New OdbcCommand(sqltambah, Conn)

Else
Dim sqledit As String = "Update tbdataset set " & _
"jml_penjualan='" & nLuas & "', " & _
"user_id='" & cUserId & "' " & _
" where id_dataset = '" & cId_Dataset & "' "
cmd = New OdbcCommand(sqledit, Conn)

End If
cmd.ExecuteNonQuery()
Me.Close()
Me.Visible = False
frmListDataset.Tampilkandata()
End Sub

Private Sub btnBatal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnBatal.Click
Me.Close()
Me.Visible = False
End Sub

Private Sub txtJumlah_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles txtJumlah.KeyPress
If Not ((e.KeyChar >= "0" And e.KeyChar <= "9") Or e.KeyChar = vbBack) Then e.Handled() = True

End Sub

Private Sub cboBulan_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboBulan.SelectedIndexChanged
If cboBulan.Text = "" Then Exit Sub
cId_Bulan = NilaiBulan(Trim(cboBulan.Text))
If cId_Bulan = 0 Then
MsgBox("Maaf, Nama Bulan tidak dikenal atau salah isi...", , "Perhatian...!")
cboBulan.Text = ""
cboBulan.Focus()
Exit Sub
End If
Call Cek_IdDataset()
Call CekData()
End Sub

Private Sub cboBulan_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles


cboBulan.Validated
cboBulan_SelectedIndexChanged(sender, e)
End Sub

Private Sub nTahun_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


nTahun.ValueChanged
If cboBulan.Text <> "" Then
Call CekData()
End If
End Sub

Sub Cek_IdDataset()
Dim cBln, cPeriode As String
If cId_Bulan < 10 Then
cBln = "0" + Trim(Microsoft.VisualBasic.Str(cId_Bulan))
Else
cBln = Trim(Microsoft.VisualBasic.Str(cId_Bulan))
End If
cPeriode = nTahun.Text + cBln

cId_Dataset = cKode_Varian + cPeriode


End Sub

Private Sub txtJumlah_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


txtJumlah.TextChanged
With Me.txtJumlah
If .Text = "" Then .Text = 0
.Text = FormatNumber(.Text, 0)
.SelectionStart = .Text.Length
End With
nLuas = txtJumlah.Text
End Sub

End Class

9. Buat Form Setting Dataset


Coding
Imports System.Data.Odbc

Public Class frmSettingDataset


Dim cTahun As String
Sub KosongkanData()
nudDatasetAwal.Value = 0
nudDatasetAkhir.Value = 0
nudAkurasiAwal.Value = 0
nudAkurasiAkhir.Value = 0
btnSimpan.Enabled = False
End Sub

Sub Tampil_VarianAroma()
cboVarian.Items.Clear()
cmd = New OdbcCommand("select distinct varian_aroma from tbvarian_aroma " & _
" order by kode_varian", Conn)
rd = cmd.ExecuteReader
While rd.Read
cboVarian.Items.Add(rd.Item(0))
End While
End Sub

Sub CekData()
cmd = New OdbcCommand("Select * from tbsetting_dataset where kode_varian ='" & cKode_Varian & "' ",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
nudDatasetAwal.Value = rd.Item("dataset_awal")
nudDatasetAkhir.Value = rd.Item("dataset_akhir")
nudAkurasiAwal.Value = rd.Item("akurasi_awal")
nudAkurasiAkhir.Value = rd.Item("akurasi_akhir")
End If
End Sub

Sub Tampilkandata()
DGV.Columns.Clear()
DGV.Columns.Clear()
DGV.Columns.Add("kode", "No")
DGV.Columns.Add("kode", "Id Dataset")
DGV.Columns.Add("kode", "Tahun")
DGV.Columns.Add("kode", "Bulan")
DGV.Columns.Add("kode", "Jumlah Penjualan")

Dim sql As String = "Select id_dataset,tahun,id_bulan,jml_penjualan " & _


" from tbdataset where kode_varian ='" & cKode_Varian & "' order by id_dataset"

cmd = New OdbcCommand(sql, Conn)


rd = cmd.ExecuteReader
Dim i As Integer = 0
While rd.Read
DGV.Rows.Add()
DGV.Item(0, i).Value = i + 1
DGV.Item(1, i).Value = rd("id_dataset")
DGV.Item(2, i).Value = rd("Tahun")
DGV.Item(3, i).Value = NamaBulan(rd("id_bulan") - 1)
DGV.Item(4, i).Value = rd("jml_penjualan")
i += 1
End While

rd.Close()
DGV.ReadOnly = True
DGV.AllowUserToAddRows = False
DGV.Columns(0).Width = 50
DGV.Columns(1).Width = 80
DGV.Columns(2).Width = 80
DGV.Columns(3).Width = 100
DGV.Columns(4).Width = 100
DGV.GridColor = Color.Blue
DGV.DefaultCellStyle.ForeColor = Color.Black
DGV.RowHeadersDefaultCellStyle.BackColor = Color.DeepPink
DGV.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
DGV.SelectionMode = DataGridViewSelectionMode.FullRowSelect
DGV.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
DGV.Columns(4).DefaultCellStyle.Format = "#,##0"

If DGV.RowCount > 1 Then


GroupBox1.Enabled = True
GroupBox2.Enabled = True
btnSimpan.Enabled = True
nudDatasetAwal.Minimum = 1
nudDatasetAwal.Maximum = DGV.RowCount
nudDatasetAkhir.Minimum = 1
nudDatasetAkhir.Maximum = DGV.RowCount
nudAkurasiAwal.Minimum = 1
nudAkurasiAwal.Maximum = DGV.RowCount
nudAkurasiAkhir.Minimum = 1
nudAkurasiAkhir.Maximum = DGV.RowCount
nudDatasetAkhir.Value = nudDatasetAwal.Maximum
nudAkurasiAkhir.Value = nudAkurasiAkhir.Maximum
Else
GroupBox1.Enabled = False
GroupBox2.Enabled = False
btnSimpan.Enabled = False
nudDatasetAwal.Minimum = 0
nudDatasetAwal.Maximum = 999
nudDatasetAkhir.Minimum = 0
nudDatasetAkhir.Maximum = 999
nudAkurasiAwal.Minimum = 0
nudAkurasiAwal.Maximum = 999
nudAkurasiAkhir.Minimum = 0
nudAkurasiAkhir.Maximum = 999
Call KosongkanData()
End If
CekData()
End Sub

Sub Cek_IdDataset()
Dim cBln, cPeriode As String
If cId_Bulan < 10 Then
cBln = "0" + Trim(Microsoft.VisualBasic.Str(cId_Bulan))
Else
cBln = Trim(Microsoft.VisualBasic.Str(cId_Bulan))
End If
cPeriode = cTahun + cBln

cId_Dataset = cKode_Varian + cPeriode


End Sub
Private Sub frmSettingDataset_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
cKode_Varian = ""
Tampil_VarianAroma()
Tampilkandata()
GroupBox1.Enabled = False
GroupBox2.Enabled = False

End Sub

Private Sub btnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnTutup.Click
Me.Close()
End Sub

Private Sub btnSimpan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnSimpan.Click

If nudDatasetAwal.Value = 0 Then
MsgBox("Maaf, Dataset Awal masih kosong...", , "Perhatian...!")
nudDatasetAwal.Focus()
Exit Sub
End If
If nudDatasetAkhir.Value = 0 Then
MsgBox("Maaf, Dataset Akhir masih kosong...", , "Perhatian...!")
nudDatasetAkhir.Focus()
Exit Sub
End If
If nudAkurasiAwal.Value = 0 Then
MsgBox("Maaf, Akurasi Awal masih kosong...", , "Perhatian...!")
nudAkurasiAwal.Focus()
Exit Sub
End If
If nudAkurasiAkhir.Value = 0 Then
MsgBox("Maaf, Akurasi Akhir masih kosong...", , "Perhatian...!")
nudAkurasiAkhir.Focus()
Exit Sub
End If
cmd = New OdbcCommand("Select * from tbsetting_dataset where kode_varian ='" & cKode_Varian & "' ",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If Not rd.HasRows Then

Dim sqltambah As String = "Insert into tbsetting_dataset (kode_varian,dataset_awal,dataset_akhir," & _


"akurasi_awal,akurasi_akhir) values " & _
"('" & cKode_Varian & "','" & nudDatasetAwal.Value & "','" & nudDatasetAkhir.Value & "', " & _
"'" & nudAkurasiAwal.Value & "','" & nudAkurasiAkhir.Value & "')"
cmd = New OdbcCommand(sqltambah, Conn)

Else
Dim sqledit As String = "Update tbsetting_dataset set " & _
"dataset_awal='" & nudDatasetAwal.Value & "', " & _
"dataset_akhir='" & nudDatasetAkhir.Value & "', " & _
"akurasi_awal='" & nudAkurasiAwal.Value & "', " & _
"akurasi_akhir='" & nudAkurasiAkhir.Value & "' " & _
" where kode_varian ='" & cKode_Varian & "'"
cmd = New OdbcCommand(sqledit, Conn)

End If
cmd.ExecuteNonQuery()
'Pemberian nomor urut/no. indeks
For baris As Integer = 0 To DGV.Rows.Count - 1
cId_Bulan = NilaiBulan(Trim(DGV.Rows(baris).Cells(3).Value))
cTahun = DGV.Rows(baris).Cells(2).Value
Cek_IdDataset()
cmd = New OdbcCommand("Select * from tbdataset where id_dataset ='" & cId_Dataset & "'", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
Dim sqledit As String = "Update tbdataset set " & _
"no_indeks='" & DGV.Rows(baris).Cells(0).Value & "' " & _
" where id_dataset ='" & cId_Dataset & "'"
cmd = New OdbcCommand(sqledit, Conn)
cmd.ExecuteNonQuery()
End If

Next baris
rd.Close()

MsgBox("Data Setting berhasil disimpan...", , "Simpan Data Setting...!")

End Sub

Private Sub cboVarian_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboVarian.SelectedIndexChanged
If cboVarian.Text = "" Then Exit Sub
cmd = New OdbcCommand("Select kode_varian from tbvarian_aroma where varian_aroma='" &
cboVarian.Text & "'", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cKode_Varian = rd.Item("kode_varian")
Else
MsgBox("Maaf, Varian Aroma salah isi...", , "Perhatian...!")
cboVarian.Text = ""
cboVarian.Focus()
Exit Sub
End If
Call Tampilkandata()
End Sub
End Class
10. Buat Form Pemodelan Metode
Coding
Imports System.Data.Odbc
Imports System.Data.OleDb
Public Class frmPemodelan
Dim A, nJmlData As Byte
Dim NilaiA, NilaiB, NilaiX As Single
Dim cDataset_AWal, cDataset_Akhir, cKetData As String
Dim Slh_Bulan As Boolean
Dim tgl1, tgl2 As Date
Dim thn1, bln1, tgla As Integer
Dim thn2, bln2, tglb, nilai_X As Integer
Sub Kosongkan()
dg2.Columns.Clear()
lblY.Text = ""

End Sub
Sub Tampil_VarianAroma()
cboVarian.Items.Clear()
cmd = New OdbcCommand("select distinct varian_aroma from tbvarian_aroma " & _
" order by kode_varian", Conn)
rd = cmd.ExecuteReader
While rd.Read
cboVarian.Items.Add(rd.Item(0))
End While
End Sub
Sub CekSettingDataset()
cmd = New OdbcCommand("Select * from tbsetting_dataset where kode_varian ='" & cKode_Varian & "' ",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cDataset_AWal = rd.Item("dataset_awal")
cDataset_Akhir = rd.Item("dataset_akhir")
Else
dg2.Columns.Clear()
Call Kosongkan()
MsgBox("Maaf, Setting Dataset Belum Diatur...", , "Perhatian...!")
dg1.Columns.Clear()
dg2.Columns.Clear()
Exit Sub
End If
End Sub

Private Sub frmPemodelan_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Asc(e.KeyChar) = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub
Private Sub frmPemodelan_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
cKode_Varian = ""
Call Kosongkan()
Call Tampil_VarianAroma()
Slh_Bulan = False
btnHitungPersamaan.Enabled = False

End Sub
Sub MencariNilaiX()
' On Error Resume Next
Dim hasil, posisi_record As Integer
hasil = nJmlData Mod 2
If hasil = 0 Then
posisi_record = Int(nJmlData / 2) - 1
cKetData = "Genap"
Else
posisi_record = Int(nJmlData / 2)
cKetData = "Ganjil"
End If

tgla = 1
tglb = 1
thn2 = dg2.Item(0, posisi_record).Value
bln2 = NilaiBulan(dg2.Item(1, posisi_record).Value)
tgl2 = CDate(tglb & "-" & bln2 & "-" & thn2)

If hasil = 0 Then
nilai_X = DateDiff(DateInterval.Month, tgl2, tgl1) + DateDiff(DateInterval.Month, tgl2, tgl1) - 1
Else
nilai_X = DateDiff(DateInterval.Month, tgl2, tgl1)
End If

End Sub
Sub Tampilkandata()
dg2.Columns.Clear()
dg2.Columns.Add("kode", "Tahun")
dg2.Columns.Add("kode", "Bulan")
dg2.Columns.Add("kode", "Jumlah Penjualan (Y)")
dg2.Columns.Add("kode", "Nilai (X)")
dg2.Columns.Add("kode", "X.Y")
dg2.Columns.Add("kode", "X.X")

Dim sql As String = "Select tahun,id_bulan,jml_penjualan " & _


" from tbdataset where kode_varian ='" & cKode_Varian & "' and no_indeks >='" &
cDataset_AWal & "' and " & _
"no_indeks <='" & cDataset_Akhir & "' order by tahun,id_bulan"

cmd = New OdbcCommand(sql, Conn)


rd = cmd.ExecuteReader
Dim i As Integer = 0
While rd.Read
dg2.Rows.Add()
dg2.Item(0, i).Value = rd(0)
dg2.Item(1, i).Value = NamaBulan(rd(1) - 1)
dg2.Item(2, i).Value = rd(2) 'Nilai Y

i += 1
End While

rd.Close()
dg2.ReadOnly = True
dg2.AllowUserToAddRows = False
dg2.Columns(0).Width = 90
dg2.Columns(1).Width = 100
dg2.Columns(2).Width = 100
dg2.Columns(3).Width = 100
dg2.Columns(4).Width = 100
dg2.GridColor = Color.Blue
dg2.DefaultCellStyle.ForeColor = Color.Blue
dg2.RowHeadersDefaultCellStyle.BackColor = Color.DeepPink
dg2.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
dg2.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dg2.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
dg2.Columns(2).DefaultCellStyle.Format = "#,##0"
dg2.Columns(4).DefaultCellStyle.Format = "#,##0"
If dg2.RowCount > 1 Then
btnHitungPersamaan.Enabled = True
Else
btnHitungPersamaan.Enabled = False
End If
nJmlData = dg2.RowCount

End Sub
Sub ProsesLastSquare()

Dim nBaris, nData As Integer


Dim TotY = 0, TotXY = 0, TotXX = 0
Call Tampilkandata()
For brs As Integer = 0 To nJmlData - 1
tgla = 1
thn1 = dg2.Item(0, brs).Value
bln1 = NilaiBulan(dg2.Item(1, brs).Value)
tgl1 = CDate(tgla & "-" & bln1 & "-" & thn1)
MencariNilaiX()
dg2.Item(3, brs).Value = nilai_X
dg2.Item(4, brs).Value = dg2.Item(3, brs).Value * dg2.Item(2, brs).Value 'X.Y
dg2.Item(5, brs).Value = dg2.Item(3, brs).Value * dg2.Item(3, brs).Value 'X.X

TotY = TotY + dg2.Item(2, brs).Value


TotXY = TotXY + dg2.Item(4, brs).Value
TotXX = TotXX + dg2.Item(5, brs).Value

Next
nBaris = nJmlData
nData = nJmlData

dg2.Rows.Add("")
dg2.Rows.Add("Total")
dg2.Item(1, nBaris + 1).Value = "n = " + nData.ToString
dg2.Item(2, nBaris + 1).Value = TotY
dg2.Item(4, nBaris + 1).Value = TotXY
dg2.Item(5, nBaris + 1).Value = TotXX

'Mencari Persamaan Y
NilaiB = TotXY / TotXX
NilaiA = TotY / nJmlData

txtNilaiA.Text = NilaiA
txtNilaiB.Text = NilaiB
lblY.Text = "Y = " + txtNilaiA.Text + " + " + txtNilaiB.Text + " * X"
rd.Close()

Call AturGrid()

End Sub
Sub AturGrid()
dg2.ReadOnly = True
dg2.Columns(0).Width = 90
dg2.Columns(1).Width = 100
dg2.Columns(2).Width = 100
dg2.Columns(3).Width = 100
dg2.Columns(4).Width = 100
dg2.Columns(5).Width = 100

dg2.GridColor = Color.Blue
dg2.DefaultCellStyle.ForeColor = Color.Blue
dg2.RowHeadersDefaultCellStyle.BackColor = Color.DeepPink
dg2.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
dg2.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dg2.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
'dg2.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(2).DefaultCellStyle.Format = "###,##0"
dg2.Columns(3).DefaultCellStyle.Format = "###,##0"
dg2.Columns(4).DefaultCellStyle.Format = "###,##0"
dg2.Columns(5).DefaultCellStyle.Format = "###,##0"
End Sub
Private Sub btnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnTutup.Click
Me.Dispose()
End Sub

Private Sub btnHitungPersamaan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles btnHitungPersamaan.Click
Dim CblnTitik As String
Call ProsesLastSquare()
Dim nA, nB As String

nA = Replace(NilaiA.ToString, ",", ".")


nB = Replace(NilaiB.ToString, ",", ".")
MencariNilaiX()
CblnTitik = Format(tgl2, "yyyy-MM-dd")
cmd = New OdbcCommand("Select * from tbsetting_dataset where kode_varian ='" & cKode_Varian & "' ",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
Dim sqledit As String = "Update tbsetting_dataset set " & _
"nilai_a='" & nA & "', " & _
"nilai_b='" & nB & "', " & _
"bulan_titik='" & CblnTitik & "', " & _
"ket='" & cKetData & "' where kode_varian ='" & cKode_Varian & "' "
cmd = New OdbcCommand(sqledit, Conn)
cmd.ExecuteNonQuery()
End If

End Sub

Sub Tampilkandataset()
dg1.Columns.Clear()
dg1.Columns.Add("kode", "Tahun")
dg1.Columns.Add("kode", "Bulan")
dg1.Columns.Add("kode", "Jumlah Penjualan")

Dim sql As String = "Select tahun,id_bulan,jml_penjualan " & _


" from tbdataset where kode_varian ='" & cKode_Varian & "' and no_indeks >='" &
cDataset_AWal & "' and " & _
"no_indeks <='" & cDataset_Akhir & "' order by tahun,id_bulan"

cmd = New OdbcCommand(sql, Conn)


rd = cmd.ExecuteReader
Dim i As Integer = 0
While rd.Read
dg1.Rows.Add()
dg1.Item(0, i).Value = rd(0)
dg1.Item(1, i).Value = NamaBulan(rd(1) - 1)
dg1.Item(2, i).Value = rd(2)

i += 1
End While

rd.Close()
dg1.ReadOnly = True
dg1.AllowUserToAddRows = False
dg1.Columns(0).Width = 120
dg1.Columns(1).Width = 150
dg1.Columns(2).Width = 150

dg1.GridColor = Color.Blue
dg1.DefaultCellStyle.ForeColor = Color.Blue
dg1.RowHeadersDefaultCellStyle.BackColor = Color.DeepPink
dg1.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
dg1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dg1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg1.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg1.Columns(2).DefaultCellStyle.Format = "#,##0"

txtData.Text = dg1.RowCount
End Sub

Private Sub cboVarian_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboVarian.SelectedIndexChanged
If cboVarian.Text = "" Then Exit Sub
cmd = New OdbcCommand("Select kode_varian from tbvarian_aroma where varian_aroma='" &
cboVarian.Text & "'", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cKode_Varian = rd.Item("kode_varian")
Else
MsgBox("Maaf, Varian Aroma salah isi...", , "Perhatian...!")
cboVarian.Text = ""
cboVarian.Focus()
Exit Sub
End If
Call CekSettingDataset()
Call Tampilkandataset()
Call Tampilkandata()
End Sub
End Class
11. Buat Form Akurasi

Coding
Imports System.Data.Odbc
Public Class frmHitungAkurasi
Dim NilaiA, NilaiB, nNilaiX, nNilaiY As Single
Dim cAkurasi_AWal, cAkurasi_Akhir, cKet As String
Dim Akurasi As Boolean
Dim tgl1, tgl2 As Date
Dim thn1, bln1, tgla As Integer
Dim thn2, bln2, tglb, nilai_X As Integer
Sub Tampil_VarianAroma()
cboVarian.Items.Clear()
cmd = New OdbcCommand("select distinct varian_aroma from tbvarian_aroma " & _
" order by kode_varian", Conn)
rd = cmd.ExecuteReader
While rd.Read
cboVarian.Items.Add(rd.Item(0))
End While
End Sub

Sub CekSettingDataset()
cmd = New OdbcCommand("Select * from tbsetting_dataset where kode_varian ='" & cKode_Varian & "'",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cAkurasi_AWal = rd.Item("akurasi_awal")
cAkurasi_Akhir = rd.Item("akurasi_akhir")
NilaiA = rd.Item("nilai_a")
NilaiB = rd.Item("nilai_b")

Call HitungDatasetAkurasi()
Else
dg1.Columns.Clear()
txtMape.Text = ""
MsgBox("Maaf, Setting Dataset Belum Diatur...", , "Perhatian...!")

Exit Sub
End If
End Sub

Sub CekNilaiX_Prediksi()

cmd = New OdbcCommand("Select * from tbsetting_dataset where kode_varian ='" & cKode_Varian & "'",
Conn)
rd2 = cmd.ExecuteReader
rd2.Read()
If rd2.HasRows Then
tgl2 = Format(CDate(rd2.Item("bulan_titik")), "yyyy-MM-dd")
cKet = rd2.Item("ket")

If cKet = "Genap" Then


nilai_X = DateDiff(DateInterval.Month, tgl2, tgl1) + DateDiff(DateInterval.Month, tgl2, tgl1) - 1
Else
nilai_X = DateDiff(DateInterval.Month, tgl2, tgl1)
End If

End If
rd2.Close()
End Sub
Sub HitungDatasetAkurasi()
Dim Hasil As Single
Dim xTahun, xBulan As String
Dim sql As String = "Select id_dataset,tahun,id_bulan,jml_penjualan,no_indeks from tbdataset " & _
"where kode_varian ='" & cKode_Varian & "' and no_indeks >='" & cAkurasi_AWal & "' and
no_indeks <='" & cAkurasi_Akhir & "' " & _
" order by tahun,id_bulan "

cmd = New OdbcCommand(sql, Conn)


rd = cmd.ExecuteReader
Dim i As Integer = 0
While rd.Read
cId_Dataset = rd("id_dataset")
xTahun = rd("tahun")
xBulan = rd("id_bulan")
nNilaiY = rd("jml_penjualan")
tgla = 1
thn1 = xTahun
bln1 = xBulan
' tgl1 = CDate(tgla & "-" & bln1 & "-" & thn1)
tgl1 = CDate(thn1 & "-" & bln1 & "-" & tgla)
CekNilaiX_Prediksi()
Hasil = NilaiA + NilaiB * nilai_X

cmd = New OdbcCommand("Select * from tbakurasi where id_dataset = '" & cId_Dataset & "' ", Conn)
rd2 = cmd.ExecuteReader
rd2.Read()
If Not rd2.HasRows Then
Dim sqltambah As String = "Insert into tbakurasi
(id_dataset,kode_varian,tahun,id_bulan,nilai_x,prediksi_y) values " & _
"('" & cId_Dataset & "','" & cKode_Varian & "','" & xTahun & "','" & xBulan & "','" & nilai_X & "','" & Hasil
& "')"
cmd = New OdbcCommand(sqltambah, Conn)

Else
Dim sqledit As String = "Update tbakurasi set " & _
"nilai_x='" & nilai_X & "', " & _
"prediksi_y='" & Hasil & "' " & _
"where id_dataset = '" & cId_Dataset & "' "
cmd = New OdbcCommand(sqledit, Conn)

End If
cmd.ExecuteNonQuery()
End While

Call CekDataPrediksi()

End Sub
Sub Hitung_MAPE()
Dim TotSelisih, nMAPE As Single
Dim nBaris, nData As Integer

For brs As Integer = 0 To dg1.RowCount - 2


'Hitung Error MAPE (%)
If dg1.Item(2, brs).Value = 0 Then
dg1.Item(4, brs).Value = Math.Abs(dg1.Item(2, brs).Value - dg1.Item(3, brs).Value)
Else
dg1.Item(4, brs).Value = (Math.Abs(dg1.Item(2, brs).Value - dg1.Item(3, brs).Value) / dg1.Item(2,
brs).Value) * 100
End If

TotSelisih = TotSelisih + dg1.Item(4, brs).Value


Next

nBaris = dg1.RowCount - 1
rd.Close()
nData = dg1.RowCount - 1
dg1.Rows.Add("")
dg1.Rows.Add("Total")
dg1.Item(2, nBaris + 1).Value = "n = " + Microsoft.VisualBasic.Str(nData)
dg1.Item(4, nBaris + 1).Value = TotSelisih
nMAPE = TotSelisih / nData
txtMape.Text = FormatNumber(nMAPE, 2) & "%"

End Sub
Sub CekDataPrediksi()
Dim cTahun As String
dg1.Columns.Clear()
dg1.Columns.Add("kode", "Tahun")
dg1.Columns.Add("kode", "Bulan")
dg1.Columns.Add("kode", "Data Aktual (y)")
dg1.Columns.Add("kode", "Data Prediksi (y')")
dg1.Columns.Add("kode", "Error MAPE (%)")

Dim sql As String = "Select tahun,id_bulan,jml_penjualan from tbdataset " & _


"where kode_varian ='" & cKode_Varian & "' and no_indeks >='" & cAkurasi_AWal & "' and
no_indeks <='" & cAkurasi_Akhir & "' " & _
" order by tahun,id_bulan "

cmd = New OdbcCommand(sql, Conn)


rd = cmd.ExecuteReader
Dim i As Integer = 0
While rd.Read
dg1.Rows.Add()
dg1.Item(0, i).Value = rd(0)
dg1.Item(1, i).Value = NamaBulan(rd(1) - 1)
dg1.Item(2, i).Value = rd(2) 'Data Aktual (y)
i += 1
End While
rd.Close()
For j As Integer = 0 To dg1.RowCount - 2
cTahun = dg1.Rows(j).Cells(0).Value
cId_Bulan = NilaiBulan(Trim(dg1.Rows(j).Cells(1).Value))
sql = "select prediksi_y from tbakurasi where kode_varian ='" & cKode_Varian & "' and tahun ='" &
cTahun & "' and id_bulan ='" & cId_Bulan & "' "
cmd = New OdbcCommand(sql, Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows = True Then
dg1.Item(3, j).Value = rd.Item(0) 'Data Prediksi (y')
Else
dg1.Item(3, j).Value = ""
Akurasi = False
End If
Next
rd.Close()
dg1.ReadOnly = True
dg1.Columns(0).Width = 75
dg1.Columns(1).Width = 100
dg1.Columns(2).Width = 100
dg1.Columns(3).Width = 100
dg1.GridColor = Color.Blue
dg1.DefaultCellStyle.ForeColor = Color.Blue
dg1.RowHeadersDefaultCellStyle.BackColor = Color.DeepPink
dg1.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
dg1.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dg1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg1.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg1.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg1.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg1.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg1.Columns(2).DefaultCellStyle.Format = "#,##0.00"
dg1.Columns(3).DefaultCellStyle.Format = "#,##0.#0"
dg1.Columns(4).DefaultCellStyle.Format = "##0.0##"
If Akurasi = True Then
btnHitungPersamaan.Enabled = True
btnHitungPersamaan.Focus()
Else
MsgBox("Maaf, Hasil Prediksi untuk Perhitungan Akurasi Belum Lengkap", , "Perhatian...!")
btnHitungPersamaan.Enabled = False
btnTutup.Focus()
Exit Sub
End If
End Sub

Private Sub frmHitungMSE_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Asc(e.KeyChar) = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub

Private Sub btnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnTutup.Click
Me.Dispose()
End Sub

Private Sub btnHitungPersamaan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles btnHitungPersamaan.Click
Call Hitung_MAPE()
End Sub

Private Sub frmHitungAkurasi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


MyBase.Load
cKode_Varian = ""
txtMape.Text = ""
Call Tampil_VarianAroma()
dg1.Columns.Clear()
Akurasi = True

End Sub

Private Sub cboVarian_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboVarian.SelectedIndexChanged
txtMape.Text = ""
If cboVarian.Text = "" Then Exit Sub
cmd = New OdbcCommand("Select kode_varian from tbvarian_aroma where varian_aroma='" &
cboVarian.Text & "'", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cKode_Varian = rd.Item("kode_varian")
Else
MsgBox("Maaf, Varian Aroma salah isi...", , "Perhatian...!")
cboVarian.Text = ""
cboVarian.Focus()
Exit Sub
End If
Call CekSettingDataset()
End Sub
End Class
12. Buat Form Prediksi
Coding
Imports System.Data.Odbc
Public Class frmPrediksiUser
Dim NilaiA, NilaiB, nNilaiX As Single
Dim cDataset_AWal, cDataset_Akhir, cKet, cTahun As String
Dim Slh_Bulan As Boolean
Dim tgl1, tgl2 As Date
Dim thn1, bln1, tgla As Integer
Dim thn2, bln2, tglb, nNilai_X As Integer

Sub Tampil_VarianAroma()
cboVarian.Items.Clear()
cmd = New OdbcCommand("select distinct varian_aroma from tbvarian_aroma " & _
" order by kode_varian", Conn)
rd = cmd.ExecuteReader
While rd.Read
cboVarian.Items.Add(rd.Item(0))
End While
End Sub

Sub Tampilkandata()
dg2.Columns.Clear()
dg2.Columns.Add("kode", "Tahun")
dg2.Columns.Add("kode", "Bulan")
dg2.Columns.Add("kode", "Nilai Skor (X)")
dg2.Columns.Add("kode", "Prediksi Jml Penjualan (Y)")

Dim sql As String = "Select tahun,id_bulan,nilai_X,prediksi_y " & _


" from tbprediksi where kode_varian ='" & cKode_Varian & "' order by tahun,id_bulan"

cmd = New OdbcCommand(sql, Conn)


rd = cmd.ExecuteReader
Dim i As Integer = 0
While rd.Read
dg2.Rows.Add()
dg2.Item(0, i).Value = rd(0)
dg2.Item(1, i).Value = NamaBulan(rd(1) - 1)
dg2.Item(2, i).Value = rd(2)
dg2.Item(3, i).Value = rd(3)

i += 1
End While

rd.Close()
dg2.ReadOnly = True
dg2.AllowUserToAddRows = False
dg2.Columns(0).Width = 95
dg2.Columns(1).Width = 120
dg2.Columns(2).Width = 105
dg2.Columns(3).Width = 105

dg2.GridColor = Color.Blue
dg2.DefaultCellStyle.ForeColor = Color.Blue
dg2.RowHeadersDefaultCellStyle.BackColor = Color.DeepPink
dg2.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
dg2.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dg2.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(3).DefaultCellStyle.Format = "#,###.00"

End Sub

Sub Kosongkan()
dg2.Columns.Clear()
txtNilaiX.Text = ""
txtHasil.Text = ""
cboBulan.Text = ""
lblY.Text = ""
btnPrediksi.Enabled = False
txtNilaiX.Enabled = False
nTahun.Enabled = False
cboBulan.Enabled = False
End Sub
Sub TampilBulan()
cboBulan.Items.Clear()
For X = 0 To 11
cboBulan.Items.Add(cBulan(X))
Next
End Sub
Sub TampilThnPrediksi()
cmd = New OdbcCommand("select * from tbdataset " & _
" order by tahun", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cmd = New OdbcCommand("select min(tahun) from tbdataset " & _
" order by tahun", Conn)
rd = cmd.ExecuteReader
rd.Read()
nTahun.Minimum = rd.Item(0)
nTahun.Value = Year(Now)

End If
End Sub

Sub CekSettingDataset()
cmd = New OdbcCommand("Select * from tbsetting_dataset where kode_varian ='" & cKode_Varian & "' ",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then

NilaiA = rd.Item("nilai_a")
NilaiB = rd.Item("nilai_b")

lblY.Text = "Y = " + Microsoft.VisualBasic.Str(NilaiA) + " + " + Microsoft.VisualBasic.Str(NilaiB) + " X"


'persamaan Y
If (NilaiA = 0) Or (NilaiB = 0) Then
Call Kosongkan()
dg2.Columns.Clear()
MsgBox("Maaf, Persamaan Least Square Belum ada...", , "Perhatian...!")
Exit Sub
Else
Call TampilBulan()
Call TampilThnPrediksi()
nTahun.Enabled = True
cboBulan.Enabled = True
txtNilaiX.Enabled = True
txtNilaiX.Enabled = True
cboBulan.Focus()
btnPrediksi.Enabled = True
End If
Else
dg2.Columns.Clear()
Call Kosongkan()
MsgBox("Maaf, Setting Dataset Belum Diatur...", , "Perhatian...!")

Exit Sub
End If
End Sub

Private Sub frmPrediksiUser_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Asc(e.KeyChar) = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub

Private Sub frmPrediksiUser_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


MyBase.Load
cKode_Varian = ""
Call Tampil_VarianAroma()
Call TampilBulan()
Call Kosongkan()

End Sub

Private Sub btnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnTutup.Click
Me.Dispose()
End Sub

Private Sub btnPrediksi_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnPrediksi.Click
Dim Hasil As Single
If cboBulan.Text = "" Then
MsgBox("Maaf, Bulan Prediksi harus dipilih dulu...", , "Perhatian...!")
cboBulan.Focus()
Exit Sub
End If

Hasil = Int(NilaiA + NilaiB * nNilai_X)


txtHasil.Text = FormatNumber(Hasil, 0)

cTahun = nTahun.Value
Call Cek_IdDataset()
cmd = New OdbcCommand("Select * from tbprediksi where id_dataset = '" & cId_Dataset & "' ", Conn)
rd = cmd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
Dim sqltambah As String = "Insert into tbprediksi
(id_dataset,kode_varian,tahun,id_bulan,nilai_x,prediksi_y,user_id) values " & _
"('" & cId_Dataset & "','" & cKode_Varian & "','" & nTahun.Text & "','" & cId_Bulan & "','" & txtNilaiX.Text &
"','" & Hasil & "','" & cUserId & "')"
cmd = New OdbcCommand(sqltambah, Conn)

Else
Dim sqledit As String = "Update tbprediksi set " & _
"nilai_x='" & txtNilaiX.Text & "', " & _
"prediksi_y='" & Hasil & "' " & _
"where id_dataset = '" & cId_Dataset & "' "
cmd = New OdbcCommand(sqledit, Conn)

End If
cmd.ExecuteNonQuery()
Call Tampilkandata()
End Sub
Sub Cek_IdDataset()
Dim cBln, cPeriode As String
If cId_Bulan < 10 Then
cBln = "0" + Trim(Microsoft.VisualBasic.Str(cId_Bulan))
Else
cBln = Trim(Microsoft.VisualBasic.Str(cId_Bulan))
End If
cPeriode = cTahun + cBln

cId_Dataset = cKode_Varian + cPeriode

End Sub
Sub CekNilaiX_Prediksi()
tgla = 1
thn1 = nTahun.Value
bln1 = NilaiBulan(cboBulan.Text)
' tgl1 = CDate(tgla & "-" & bln1 & "-" & thn1)
tgl1 = CDate(thn1 & "-" & bln1 & "-" & tgla)
cmd = New OdbcCommand("Select * from tbsetting_dataset where kode_varian ='" & cKode_Varian & "'",
Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
' tgl2 = rd.Item("bulan_titik")
tgl2 = Format(CDate(rd.Item("bulan_titik")), "yyyy-MM-dd")
cKet = rd.Item("ket")

If cKet = "Genap" Then


nNilai_X = DateDiff(DateInterval.Month, tgl2, tgl1) + DateDiff(DateInterval.Month, tgl2, tgl1) - 1
Else
nNilai_X = DateDiff(DateInterval.Month, tgl2, tgl1)
End If
txtNilaiX.Text = nNilai_X
End If
End Sub
Sub cekHasilPrediksi()
cTahun = nTahun.Value
Call Cek_IdDataset()
cmd = New OdbcCommand("Select * from tbprediksi where id_dataset = '" & cId_Dataset & "' ", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
txtNilaiX.Text = rd.Item("nilai_x")
txtHasil.Text = FormatNumber(rd.Item("prediksi_y"), 0)
btnPrediksi.Focus()
Else
CekNilaiX_Prediksi()
txtHasil.Text = ""

End If
End Sub

Private Sub cboBulan_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboBulan.SelectedIndexChanged
If cboBulan.Text = "" Then Exit Sub
cId_Bulan = NilaiBulan(Trim(cboBulan.Text))
If cId_Bulan = 0 Then
MsgBox("Maaf, Nama Bulan tidak dikenal atau salah isi...", , "Perhatian...!")
cboBulan.Text = ""
cboBulan.Focus()
Exit Sub
Else
btnPrediksi.Enabled = True
Call cekHasilPrediksi()
End If
End Sub

Private Sub nTahun_Validated(ByVal sender As Object, ByVal e As System.EventArgs) Handles


nTahun.Validated
If cboBulan.Text <> "" Or Slh_Bulan <> True Then
Call cekHasilPrediksi()
End If
End Sub

Private Sub mnHapus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


mnHapus.Click
Dim cTahun As String
cTahun = Me.dg2.SelectedCells(0).Value
cId_Bulan = NilaiBulan(Me.dg2.SelectedCells(1).Value)
If MessageBox.Show("Yakin akan dihapus..?", "Hapus Data", MessageBoxButtons.YesNo) =
Windows.Forms.DialogResult.Yes Then
cmd = New OdbcCommand("Delete from tbprediksi where id_dataset = '" & cId_Dataset & "'", Conn)
cmd.ExecuteNonQuery()
End If
Call Tampilkandata()
Call CekBulanBerikutnya()
txtHasil.Text = ""
End Sub

Private Sub dg2_CellContentClick(ByVal sender As System.Object, ByVal e As


System.Windows.Forms.DataGridViewCellEventArgs) Handles dg2.CellContentClick

End Sub

Private Sub dg2_CellMouseClick(ByVal sender As Object, ByVal e As


System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles dg2.CellMouseClick
If e.Button = MouseButtons.Right Then
Dim Rowindexx As Integer
Me.dg2.Rows(e.RowIndex).Selected = True
Rowindexx = e.RowIndex
Me.dg2.CurrentCell = Me.dg2.Rows(e.RowIndex).Cells(0)
Me.mnHapusData.Show(Me.dg2, e.Location)
Me.mnHapusData.Show(Cursor.Position)
End If
End Sub

Sub CekBulanBerikutnya()
Dim cbln_Akhir, cThn_Akhir As Integer

cThn_Akhir = 0
'cek data tabel prediksi untuk jenis yang dipilih ada/belum
cmd = New OdbcCommand("Select * from tbprediksi where kode_varian ='" & cKode_Varian & "'", Conn)
rd = cmd.ExecuteReader
rd.Read()
If Not rd.HasRows Then
'cek nilai x1 terakhir di dataset
cmd = New OdbcCommand("Select * from tbakurasi where kode_varian ='" & cKode_Varian & "' order
by id_dataset desc", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cThn_Akhir = rd.Item("tahun")
cbln_Akhir = rd.Item("id_bulan") + 1
If cbln_Akhir = 13 Then
cThn_Akhir = Val(rd.Item("tahun")) + 1
cbln_Akhir = 1
Else
cbln_Akhir = rd.Item("id_bulan") + 1
End If
nTahun.Value = cThn_Akhir
cboBulan.Text = NamaBulan(cbln_Akhir - 1)

'CekNilaiX_Prediksi()
End If

Else
'jika isi tabel prediksi sudah ada
cmd = New OdbcCommand("Select * from tbprediksi where kode_varian ='" & cKode_Varian & "'
order by nilai_x desc ", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cThn_Akhir = rd.Item("tahun")
cbln_Akhir = rd.Item("id_bulan") + 1
If cbln_Akhir = 13 Then
cThn_Akhir = Val(rd.Item("tahun")) + 1
cbln_Akhir = 1
Else
cbln_Akhir = rd.Item("id_bulan") + 1
End If
'cek bulan prediksi harus berlanjut dari dataset terakhir
nTahun.Value = cThn_Akhir
cboBulan.Text = NamaBulan(cbln_Akhir - 1)

' CekNilaiX_Prediksi()
Exit Sub
End If
End If

End Sub

Private Sub cboVarian_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboVarian.SelectedIndexChanged
If cboVarian.Text = "" Then Exit Sub
cmd = New OdbcCommand("Select kode_varian from tbvarian_aroma where varian_aroma='" &
cboVarian.Text & "'", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cKode_Varian = rd.Item("kode_varian")
Else
MsgBox("Maaf, Varian Aroma salah isi...", , "Perhatian...!")
cboVarian.Text = ""
cboVarian.Focus()
Exit Sub
End If
Call CekSettingDataset()
Call TampilThnPrediksi()
Call Tampilkandata()
Call CekBulanBerikutnya()
End Sub

End Class
13. Buat Form Laporan Dataset (coding sama dengan di Modul Materi)
14. Buat Form Laporan Hasil Akurasi (coding sama dengan di Modul Materi)
15. Buat Form Laporan Hasil Prediksi

Coding :
Imports System.Data.Odbc
Imports System.Data.OleDb
Public Class frmLapHasilPrediksi
Dim cIdB1, cIdB2, cThn1, cThn2 As Integer
Dim periode1, periode2 As String
Sub TampilBulan1()
cboBulan1.Items.Clear()
For X = 0 To 11
cboBulan1.Items.Add(cBulan(X))
Next
End Sub
Sub TampilBulan2()
cboBulan2.Items.Clear()
For X = 0 To 11
cboBulan2.Items.Add(cBulan(X))
Next
End Sub
Sub TampilThn1()
cboThn1.Items.Clear()
cmd = New OdbcCommand("select distinct tahun from tbprediksi where kode_varian='" & cKode_Varian &
"' " & _
" order by tahun", Conn)
rd = cmd.ExecuteReader
While rd.Read
cboThn1.Items.Add(rd.Item(0))

End While
End Sub
Sub TampilThn2()
cboThn2.Items.Clear()
cmd = New OdbcCommand("select distinct tahun from tbprediksi where kode_varian='" & cKode_Varian &
"' " & _
" order by tahun", Conn)
rd = cmd.ExecuteReader
While rd.Read
cboThn2.Items.Add(rd.Item(0))

End While
End Sub
Sub CekTahunAkhir()
' cboThn2.Items.Clear()
cmd = New OdbcCommand("select distinct tahun,id_bulan from tbprediksi where kode_varian='" &
cKode_Varian & "' " & _
" order by id_dataset ", Conn)
rd = cmd.ExecuteReader
If rd.HasRows Then
cboThn1.Text = rd(0)
cboBulan1.Text = NamaBulan(rd(1) - 1)
End If
cmd = New OdbcCommand("select distinct tahun,id_bulan from tbprediksi where kode_varian='" &
cKode_Varian & "' " & _
" order by id_dataset desc", Conn)
rd = cmd.ExecuteReader
If rd.HasRows Then
cboThn2.Text = rd(0)
cboBulan2.Text = NamaBulan(rd(1) - 1)
End If
End Sub

Sub Tampil_VarianAroma()
cboVarian.Items.Clear()
cmd = New OdbcCommand("select distinct varian_aroma from tbvarian_aroma " & _
" order by kode_varian", Conn)
rd = cmd.ExecuteReader
While rd.Read
cboVarian.Items.Add(rd.Item(0))
End While
End Sub

Sub Tampilkandata()
dg2.Columns.Clear()
dg2.Columns.Add("kode", "Tahun")
dg2.Columns.Add("kode", "Bulan")
dg2.Columns.Add("kode", "Nilai Skor (X)")
dg2.Columns.Add("kode", "Jumlah Penjualan (Y)")

Dim sql As String = "Select tahun,id_bulan,nilai_X,prediksi_y " & _


" from tbprediksi where kode_varian='" & cKode_Varian & "' " & _
" and right(id_dataset,6) >= '" & periode1 & "' and right(id_dataset,6)<= '" & periode2 & "'
order by tahun,id_bulan"

cmd = New OdbcCommand(sql, Conn)


rd = cmd.ExecuteReader
Dim i As Integer = 0
While rd.Read
dg2.Rows.Add()
dg2.Item(0, i).Value = rd(0)
dg2.Item(1, i).Value = NamaBulan(rd(1) - 1)
dg2.Item(2, i).Value = rd(2)
dg2.Item(3, i).Value = rd(3)
i += 1
End While

rd.Close()
dg2.ReadOnly = True
dg2.AllowUserToAddRows = False
dg2.Columns(0).Width = 100
dg2.Columns(1).Width = 120
dg2.Columns(2).Width = 110
dg2.Columns(3).Width = 110
dg2.GridColor = Color.Blue
dg2.DefaultCellStyle.ForeColor = Color.Blue
dg2.RowHeadersDefaultCellStyle.BackColor = Color.DeepPink
dg2.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGray
dg2.SelectionMode = DataGridViewSelectionMode.FullRowSelect
dg2.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
dg2.Columns(3).DefaultCellStyle.Format = "#,###"
If dg2.RowCount > 0 Then
btnCetak.Enabled = True
Else
btnCetak.Enabled = False
End If
End Sub

Private Sub frmLapHasilPrediksi_KeyPress(ByVal sender As Object, ByVal e As


System.Windows.Forms.KeyPressEventArgs) Handles Me.KeyPress
If Asc(e.KeyChar) = Keys.Enter Then
SendKeys.Send("{tab}")
End If
End Sub
Private Sub frmLapHasilPrediksi_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
btnCetak.Enabled = False
cKode_Varian = ""
Call Tampil_VarianAroma()

End Sub

Private Sub btnTutup_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnTutup.Click
Me.Dispose()
End Sub
Private Sub btnCetak_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
btnCetak.Click
Dim xPeriode As String
Dim frmCetakHasil As New frmLaporan
Dim Cetakdata As CrystalDecisions.CrystalReports.Engine.ReportDocument
Cetakdata = New rptHasilPrediksi
xPeriode = "Periode : " + cboBulan1.Text + " " + cboThn1.Text + " s/d " + cboBulan2.Text + " " +
cboThn2.Text
frmCetakHasil.CRV.ReportSource = Nothing
frmCetakHasil.CRV.SelectionFormula = "{tbprediksi1.kode_varian}='" & cKode_Varian & "' and " & _
" right({tbprediksi1.id_dataset},6)>='" & periode1 & "' and right({tbprediksi1.id_dataset},6)<='" &
periode2 & "'"
Cetakdata.DataDefinition.FormulaFields("xperiode").Text = "'" & xPeriode & "'"
frmCetakHasil.CRV.ReportSource = Cetakdata
frmCetakHasil.CRV.Refresh()
frmCetakHasil.CRV.RefreshReport()
frmCetakHasil.Show(Me)
End Sub

Sub Cek_Periode1()
Dim cBln As String
cIdB1 = NilaiBulan(Trim(cboBulan1.Text))
cThn1 = cboThn1.Text
If cIdB1 < 10 Then
cBln = "0" + Trim(Microsoft.VisualBasic.Str(cIdB1))
Else
cBln = Trim(Microsoft.VisualBasic.Str(cIdB1))
End If
periode1 = cThn1.ToString + cBln.ToString
End Sub
Sub Cek_Periode2()
Dim cBln As String
cIdB2 = NilaiBulan(Trim(cboBulan2.Text))
cThn2 = cboThn2.Text
If cIdB2 < 10 Then
cBln = "0" + Trim(Microsoft.VisualBasic.Str(cIdB2))
Else
cBln = Trim(Microsoft.VisualBasic.Str(cIdB2))
End If
periode2 = cThn2.ToString + cBln.ToString
End Sub

Private Sub btnTampilkan_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles


btnTampilkan.Click

Cek_Periode1()
Cek_Periode2()
Call Tampilkandata()
End Sub

Private Sub cboBulan1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboBulan1.SelectedIndexChanged
If cboBulan1.Text = "" Then Exit Sub
cIdB1 = NilaiBulan(Trim(cboBulan1.Text))
End Sub

Private Sub cboBulan2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboBulan2.SelectedIndexChanged
If cboBulan2.Text = "" Then Exit Sub
cIdB2 = NilaiBulan(Trim(cboBulan2.Text))
End Sub

Private Sub cboThn1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboThn1.SelectedIndexChanged
cThn1 = Val(cboThn1.Text)

End Sub

Private Sub cboThn2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboThn2.SelectedIndexChanged
cThn2 = Val(cboThn2.Text)
End Sub

Private Sub cboVarian_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)


Handles cboVarian.SelectedIndexChanged
If cboVarian.Text = "" Then Exit Sub
cmd = New OdbcCommand("Select kode_varian from tbvarian_aroma where varian_aroma='" &
cboVarian.Text & "'", Conn)
rd = cmd.ExecuteReader
rd.Read()
If rd.HasRows Then
cKode_Varian = rd.Item(0)
cboBulan1.Text = ""
cboBulan2.Text = ""
cIdB1 = 0
cIdB2 = 0
Call TampilBulan1()
Call TampilBulan2()
Call TampilThn1()
Call TampilThn2()
Call CekTahunAkhir()
dg2.Columns.Clear()
Else
MsgBox("Maaf, Varian Aroma salah isi...", , "Perhatian...!")
cboVarian.Text = ""
cboVarian.Focus()
Exit Sub
End If

End Sub
End Class
14. Desain Crystall Reportnya

16. Lengkapi Form Utility : Form BackupRestore Database, Ubah Password dan About Me

Selamat Mecoba, Semoga Sukses

Anda mungkin juga menyukai