Toshiba_Kanban_Issuance/Mounting Sequence/Forms/mcSeqForm.vb

526 lines
23 KiB
VB.net

Imports System
Imports System.Data
Imports System.Data.SqlClient
Imports System.IO
Imports System.Text
Public Class mcSeqForm
Private cnstr = mainForm.cnstr
Private conn As New SqlConnection(cnstr)
Private myQuery As String = String.Empty
Private myCommand As SqlCommand
Private adapter As SqlDataAdapter = New SqlDataAdapter()
Private ds As New DataSet("MachineSequence")
Private i, limit As Integer
Private oldMchName As String = String.Empty
Private addMode, editMode As Integer
Private currseq As String
Private Sub mcSeqForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.MdiParent = mainForm
Control.CheckForIllegalCrossThreadCalls = False
Me.Top = 0
Me.Left = 0
toNormalMode()
getSequence()
initializeDG()
End Sub
Public Sub getSequence()
Dim sequence As New Sequence
Dim sequenceList As New List(Of String)
Dim i As Integer = 0
cmbRev.Items.Clear()
sequenceList = sequence.getAllSequence()
cmbSeq.Items.Clear()
While i < sequenceList.Count
cmbSeq.Items.Add(sequenceList(i))
i = i + 1
End While
End Sub
Public Sub getRevisions()
Dim rev As New Sequence
Dim revList As New List(Of String)
Dim i As Integer = 0
revList = rev.getRevisions(cmbSeq.SelectedItem, cmbLine.SelectedItem, cmbModel.SelectedItem, cmbType.SelectedItem)
cmbRev.Items.Clear()
While i < revList.Count
cmbRev.Items.Add(revList(i))
i = i + 1
End While
End Sub
Public Sub getModels()
Dim rev As New Sequence
Dim revList As New List(Of String)
Dim i As Integer = 0
revList = rev.getModel(cmbSeq.SelectedItem, cmbLine.SelectedItem)
cmbModel.Items.Clear()
While i < revList.Count
cmbModel.Items.Add(revList(i))
i = i + 1
End While
End Sub
Public Sub getTypes()
Dim rev As New Sequence
Dim revList As New List(Of String)
Dim i As Integer = 0
revList = rev.getTypes(cmbSeq.SelectedItem, cmbLine.SelectedItem, cmbModel.SelectedItem)
cmbType.Items.Clear()
While i < revList.Count
cmbType.Items.Add(revList(i))
i = i + 1
End While
End Sub
Public Sub getLines()
Dim rev As New Sequence
Dim revList As New List(Of String)
Dim i As Integer = 0
revList = rev.getLines(cmbSeq.SelectedItem)
cmbLine.Items.Clear()
While i < revList.Count
cmbLine.Items.Add(revList(i))
i = i + 1
End While
End Sub
Private Sub fillDataSet(ByVal account As String, ByVal line As String, ByVal model As String, ByVal type As String, ByVal rev As String)
Dim conn As New SqlConnection(cnstr)
Dim seqNumber As String
myQuery = "SELECT KSEQUENCENO FROM KSEQUENCE_HEADER " & _
"WHERE KSACCOUNT = '" & account & "' " & _
"AND KSQLINE = " & line & " " & _
"AND KSQMODEL = '" & model & "' " & _
"AND KSQPCBSIDE = '" & type & "' " & _
"AND KSQREVISION = '" & rev & "' "
myCommand = New SqlCommand(myQuery, conn)
Try
conn.Open()
Dim reader = myCommand.ExecuteReader
reader.Read()
seqNumber = reader("KSEQUENCENO")
reader.Close()
myQuery = "SELECT * FROM KSEQUENCE_DETAIL " & _
"WHERE KSEQUENCENO = '" & seqNumber & "' " & _
"ORDER BY KSQMODULE,KSQFEEDERNO"
myCommand = New SqlCommand(myQuery, conn)
adapter.SelectCommand = myCommand
ds.Clear()
adapter.Fill(ds)
i = 0
limit = ds.Tables(0).Rows.Count - 1
Catch ex As Exception
MessageBox.Show(ex.Message, "Fill Dataset Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
conn.Close()
conn.Dispose()
End Try
End Sub
Public Sub createView(ByVal kseqno As String)
Dim conn As New SqlConnection(cnstr)
myQuery = "CREATE VIEW [CTS" & kseqno & "] AS SELECT TOP (100) PERCENT temp.ModuleAndFeeder, temp.KSQPARTNO AS PartNo, " & _
"(SELECT SupplierPN " & _
" FROM [Toshiba_kanban].[dbo].[PartsRecords] " & _
" WHERE (SerialNum = t.KMTLABEL)) AS Supplier, " & _
" (SELECT Description " & _
" FROM [Toshiba_kanban].[dbo].[PartsRecords] AS PartsRecords_1 " & _
" WHERE (SerialNum = t.KMTLABEL)) AS Description,t.KMTLOT as LOT, " & _
" (SELECT TOP (1) KMTLOT " & _
" FROM [Toshiba_kanban].[dbo].[KMOUNTING] AS KMOUNTING_1 " & _
" WHERE (KMTPARTNO = temp.KSQPARTNO) AND (KMTDATE > CAST(temp.dateAndtime AS datetime) - CAST('00:15' AS datetime)) AND " & _
" (KMTDATE < temp.dateAndtime) AND (KMT3PL = 'op-pass') " & _
" ORDER BY KMTDATE DESC) AS Old_Lot,temp.KSQTOPSDLOC AS Location, " & _
" temp.dateAndtime AS DateAndTimeMounted, t.KMTOPERATOR AS Operator " & _
"FROM (SELECT seq.KSQMODULE + '-' + seq.KSQFEEDERNO AS ModuleAndFeeder, kmt.dateAndtime, seq.KSQPARTNO, seq.KSQTOPSDLOC" & _
" FROM (SELECT MAX(KMTDATE) AS dateAndtime, KMTFEEDER, KMTMACHINE" & _
" FROM [Toshiba_kanban].[dbo].[KMOUNTING] AS KMOUNTING" & _
" WHERE KMT3PL = 'op-pass' AND (KSEQUENCENO =" & _
" (SELECT KSEQUENCENO" & _
" FROM [Toshiba_kanban].[dbo].[KMOUNTING] AS KMOUNTING" & _
" WHERE (KMTDATE =" & _
" (SELECT MAX(KMTDATE) AS Expr1" & _
" FROM [Toshiba_kanban].[dbo].[KMOUNTING] AS KMOUNTING" & _
" WHERE (KSEQUENCENO = '" & kseqno & "')))))" & _
" GROUP BY KMTFEEDER, KMTMACHINE) AS kmt RIGHT OUTER JOIN" & _
" dbo.KSEQUENCE_DETAIL AS seq ON LTRIM(RTRIM(kmt.KMTMACHINE + '-' + kmt.KMTFEEDER)) " & _
" = LTRIM(RTRIM(seq.KSQMODULE + '-' + seq.KSQFEEDERNO))" & _
" WHERE (seq.KSEQUENCENO =" & _
" (SELECT KSEQUENCENO" & _
" FROM [Toshiba_kanban].[dbo].[KMOUNTING] AS KMOUNTING" & _
" WHERE (KMTDATE =" & _
" (SELECT MAX(KMTDATE) AS Expr1" & _
" FROM [Toshiba_kanban].[dbo].[KMOUNTING] AS KMOUNTING" & _
" WHERE (KSEQUENCENO = '" & kseqno & "')))))) AS temp INNER JOIN " & _
" [Toshiba_kanban].[dbo].[KMOUNTING] AS t ON temp.ModuleAndFeeder = LTRIM(RTRIM(t.KMTMACHINE + '-' + t.KMTFEEDER)) AND temp.dateAndtime = t.KMTDATE " & _
"ORDER BY temp.ModuleAndFeeder"
myCommand = New SqlCommand(myQuery, conn)
Try
conn.Open()
myCommand.ExecuteNonQuery()
Catch ex As Exception
MessageBox.Show(ex.Message, "Create View Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
conn.Close()
conn.Dispose()
End Try
End Sub
Private Sub fillDataGridView()
Dim i As Integer = 0
dg_mtSeq.Rows.Clear()
For i = 0 To ds.Tables(0).Rows.Count - 1
dg_mtSeq.Rows.Add()
dg_mtSeq.Rows(i).Cells(0).Value = Trim(ds.Tables(0).Rows(i).Item("KSQPARTNO"))
dg_mtSeq.Rows(i).Cells(1).Value = Trim(ds.Tables(0).Rows(i).Item("KSQMODULE"))
dg_mtSeq.Rows(i).Cells(2).Value = Trim(ds.Tables(0).Rows(i).Item("KSQFEEDERNO"))
dg_mtSeq.Rows(i).Cells(3).Value = Trim(ds.Tables(0).Rows(i).Item("KSQFEEDERTYP"))
dg_mtSeq.Rows(i).Cells(4).Value = Trim(ds.Tables(0).Rows(i).Item("KSQTOPSDLOC"))
dg_mtSeq.Rows(i).Cells(5).Value = Trim(ds.Tables(0).Rows(i).Item("KSQFSBSQTY"))
dg_mtSeq.Rows(i).Cells(6).Value = Trim(ds.Tables(0).Rows(i).Item("KSQDESC1"))
dg_mtSeq.Rows(i).Cells(7).Value = Trim(ds.Tables(0).Rows(i).Item("KSQDESC2"))
dg_mtSeq.Rows(i).Cells(8).Value = Trim(ds.Tables(0).Rows(i).Item("KSQTOPMARK"))
dg_mtSeq.Rows(i).Cells(9).Value = Trim(ds.Tables(0).Rows(i).Item("KSQREMARKS"))
Next
dg_mtSeq.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
End Sub
Private Sub initializeDG()
Dim sequence As New DataGridViewTextBoxColumn
Dim partNo As New DataGridViewTextBoxColumn
Dim topSDLoc As New DataGridViewTextBoxColumn
Dim fsbsQty As New DataGridViewTextBoxColumn
Dim desc1 As New DataGridViewTextBoxColumn
Dim desc2 As New DataGridViewTextBoxColumn
Dim topMark As New DataGridViewTextBoxColumn
Dim feeder As New DataGridViewTextBoxColumn
Dim feederType As New DataGridViewTextBoxColumn
Dim sqModule As New DataGridViewTextBoxColumn
Dim remarks As New DataGridViewTextBoxColumn
'sequence.HeaderText = "Sequence"
partNo.HeaderText = "Part Number"
sqModule.HeaderText = "Machine"
feeder.HeaderText = "Feeder"
feederType.HeaderText = "Feeder Type"
topSDLoc.HeaderText = "Top Side Location"
fsbsQty.HeaderText = "Quantity"
desc1.HeaderText = "Desccription 1"
desc2.HeaderText = "Description 2"
topMark.HeaderText = "Top Mark"
remarks.HeaderText = "Remarks"
dg_mtSeq.Columns.Add(partNo)
dg_mtSeq.Columns.Add(sqModule)
dg_mtSeq.Columns.Add(feeder)
dg_mtSeq.Columns.Add(feederType)
dg_mtSeq.Columns.Add(topSDLoc)
dg_mtSeq.Columns.Add(fsbsQty)
dg_mtSeq.Columns.Add(desc1)
dg_mtSeq.Columns.Add(desc2)
dg_mtSeq.Columns.Add(topMark)
dg_mtSeq.Columns.Add(remarks)
dg_mtSeq.Columns(0).ReadOnly = True
dg_mtSeq.Columns(1).ReadOnly = True
dg_mtSeq.Columns(2).ReadOnly = True
dg_mtSeq.Columns(3).ReadOnly = True
dg_mtSeq.Columns(4).ReadOnly = True
dg_mtSeq.Columns(5).ReadOnly = True
dg_mtSeq.Columns(6).ReadOnly = True
dg_mtSeq.Columns(7).ReadOnly = True
dg_mtSeq.Columns(8).ReadOnly = True
dg_mtSeq.Columns(9).ReadOnly = True
dg_mtSeq.Columns(0).SortMode = DataGridViewColumnSortMode.Programmatic
dg_mtSeq.Columns(1).SortMode = DataGridViewColumnSortMode.Programmatic
dg_mtSeq.Columns(2).SortMode = DataGridViewColumnSortMode.Programmatic
dg_mtSeq.Columns(3).SortMode = DataGridViewColumnSortMode.Programmatic
dg_mtSeq.Columns(4).SortMode = DataGridViewColumnSortMode.Programmatic
dg_mtSeq.Columns(5).SortMode = DataGridViewColumnSortMode.Programmatic
dg_mtSeq.Columns(6).SortMode = DataGridViewColumnSortMode.Programmatic
dg_mtSeq.Columns(7).SortMode = DataGridViewColumnSortMode.Programmatic
dg_mtSeq.Columns(8).SortMode = DataGridViewColumnSortMode.Programmatic
dg_mtSeq.Columns(9).SortMode = DataGridViewColumnSortMode.Programmatic
'dg_mtSeq.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
dg_mtSeq.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader
dg_mtSeq.RowsDefaultCellStyle.BackColor = Color.AntiqueWhite
dg_mtSeq.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige
End Sub
Private Sub cmbSeq_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbSeq.SelectedIndexChanged
dg_mtSeq.Rows.Clear()
getLines()
End Sub
Private Sub ts_find_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_find.Click
find()
End Sub
Private Sub find()
Dim sequence As New Sequence
Dim verDet As List(Of String)
Try
currseq = sequence.getSequenceNo(cmbSeq.SelectedItem, cmbLine.SelectedItem, cmbModel.SelectedItem, cmbType.SelectedItem, cmbRev.Text)
fillDataSet(cmbSeq.SelectedItem, cmbLine.SelectedItem, cmbModel.SelectedItem, cmbType.SelectedItem, cmbRev.SelectedItem)
fillDataGridView()
If sequence.isVerified(cmbSeq.SelectedItem, cmbLine.SelectedItem, cmbModel.SelectedItem, cmbType.SelectedItem, cmbRev.SelectedItem) Then
btn_verify.Enabled = False
verDet = sequence.verificationDetails(cmbSeq.SelectedItem, cmbLine.SelectedItem, cmbModel.SelectedItem, cmbType.SelectedItem, cmbRev.SelectedItem)
txtVerBy.Text = verDet(0)
txtVerDate.Text = CDate(verDet(1))
Else
If loginForm.userType = "Quality Control" Or loginForm.userType = "Administrator" Or loginForm.userType = "Super Administrator" Then
btn_verify.Enabled = True
End If
txtVerBy.Text = String.Empty
txtVerDate.Text = String.Empty
End If
If loginForm.userType = "Engineer" Or loginForm.userType = "Administrator" Or loginForm.userType = "Super Administrator" Then
ts_edit.Enabled = True
ts_delete.Enabled = True
End If
Catch ex As Exception
toNormalMode()
End Try
End Sub
Private Sub ts_new_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_new.Click
uploadMcSeq.Show()
End Sub
Private Sub ts_edit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_edit.Click
'dg_mtSeq.Columns(0).ReadOnly = False
'dg_mtSeq.Columns(1).ReadOnly = False
'dg_mtSeq.Columns(2).ReadOnly = False
dg_mtSeq.Columns(3).ReadOnly = False
dg_mtSeq.Columns(4).ReadOnly = False
dg_mtSeq.Columns(5).ReadOnly = False
dg_mtSeq.Columns(6).ReadOnly = False
dg_mtSeq.Columns(7).ReadOnly = False
dg_mtSeq.Columns(8).ReadOnly = False
dg_mtSeq.Columns(9).ReadOnly = False
toEditMode()
End Sub
Private Sub ts_close_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Me.Close()
End Sub
Public Sub add()
addMode = 1
editMode = 0
toAddMode()
End Sub
Public Sub edit()
editMode = 1
addMode = 0
toEditMode()
End Sub
Public Sub toNormalMode()
If loginForm.userType = "Engineer" Or loginForm.userType = "Administrator" Or loginForm.userType = "Super Administrator" Then
ts_new.Enabled = True
End If
ts_edit.Enabled = False
ts_delete.Enabled = False
ts_find.Enabled = True
ts_revert.Enabled = False
ts_save.Enabled = False
End Sub
Public Sub toEditMode()
ts_new.Enabled = False
ts_edit.Enabled = False
ts_delete.Enabled = False
ts_find.Enabled = False
ts_revert.Enabled = True
ts_save.Enabled = True
disableControls()
End Sub
Public Sub toAddMode()
ts_new.Enabled = False
ts_edit.Enabled = False
ts_delete.Enabled = False
ts_find.Enabled = False
ts_revert.Enabled = True
ts_save.Enabled = True
End Sub
Public Sub toSearchMode()
ts_new.Enabled = False
ts_edit.Enabled = False
ts_delete.Enabled = False
ts_find.Enabled = True
ts_revert.Enabled = False
ts_save.Enabled = False
End Sub
Private Sub enableControls()
cmbRev.Enabled = True
cmbSeq.Enabled = True
End Sub
Private Sub disableControls()
cmbRev.Enabled = False
cmbSeq.Enabled = False
End Sub
Private Sub clear()
txtVerBy.Text = String.Empty
txtVerDate.Text = String.Empty
End Sub
Private Sub btn_verify_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_verify.Click
If MessageBox.Show("Are you sure you want to approve?" & vbCrLf & " Account: " & cmbSeq.SelectedItem & vbCrLf & " Line: " & cmbLine.SelectedItem & vbCrLf & " Model: " & cmbModel.SelectedItem & vbCrLf & " Type: " & cmbType.SelectedItem & vbCrLf & " Revision Number: " & cmbRev.Text, "Approve Sequence Number", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim sequence As New Sequence
sequence.sequenceno = currseq
sequence.checkby = loginForm.username
sequence.chkdate = DateTime.Now
If sequence.approve() Then
createView(currseq)
MessageBox.Show("Successfully Approved.", "Approve Sequence Number", MessageBoxButtons.OK, MessageBoxIcon.Information)
txtVerBy.Text = loginForm.username
txtVerDate.Text = Date.Now
btn_verify.Enabled = False
End If
End If
End Sub
Private Sub ts_delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_delete.Click
If MessageBox.Show("Are you sure you want to delete?" & vbCrLf & " Account: " & cmbSeq.SelectedItem & vbCrLf & " Line: " & cmbLine.SelectedItem & vbCrLf & " Model: " & cmbModel.SelectedItem & vbCrLf & " Type: " & cmbType.SelectedItem & vbCrLf & " Revision Number: " & cmbRev.Text, "Delete Sequence Number", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
Dim sequence As New Sequence
sequence.sequenceno = currseq
sequence.deleteDetail()
sequence.deleteHeader()
MessageBox.Show("Successfully Deleted.", "Delete Sequence Number", MessageBoxButtons.OK, MessageBoxIcon.Information)
getSequence()
cmbRev.Items.Clear()
dg_mtSeq.Rows.Clear()
clear()
toNormalMode()
End If
End Sub
Private Sub ts_revert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_revert.Click
fillDataSet(cmbSeq.SelectedItem, cmbLine.SelectedItem, cmbModel.SelectedItem, cmbType.SelectedItem, cmbRev.Text)
fillDataGridView()
dg_mtSeq.Columns(0).ReadOnly = True
dg_mtSeq.Columns(1).ReadOnly = True
dg_mtSeq.Columns(2).ReadOnly = True
dg_mtSeq.Columns(3).ReadOnly = True
dg_mtSeq.Columns(4).ReadOnly = True
dg_mtSeq.Columns(5).ReadOnly = True
dg_mtSeq.Columns(6).ReadOnly = True
dg_mtSeq.Columns(7).ReadOnly = True
dg_mtSeq.Columns(8).ReadOnly = True
dg_mtSeq.Columns(9).ReadOnly = True
toNormalMode()
enableControls()
End Sub
Private Sub save()
Dim seq As New Sequence()
Dim i As Integer = 0
seq.sequenceno = currseq
seq.checkby = String.Empty
seq.chkdate = Nothing
If seq.disApprove() Then
seq.deleteDetail()
While i < dg_mtSeq.Rows.Count
seq.partno = dg_mtSeq.Rows(i).Cells(0).Value
seq.modules = dg_mtSeq.Rows(i).Cells(1).Value
seq.feeder = dg_mtSeq.Rows(i).Cells(2).Value
seq.feederType = dg_mtSeq.Rows(i).Cells(3).Value
seq.topsdloc = dg_mtSeq.Rows(i).Cells(4).Value
seq.fsbsqty = dg_mtSeq.Rows(i).Cells(5).Value
seq.desc1 = dg_mtSeq.Rows(i).Cells(6).Value
seq.desc2 = dg_mtSeq.Rows(i).Cells(7).Value
seq.topmark = dg_mtSeq.Rows(i).Cells(8).Value
seq.remarks = dg_mtSeq.Rows(i).Cells(9).Value
seq.addDetail()
i = i + 1
End While
End If
End Sub
Private Sub ts_save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ts_save.Click
If MessageBox.Show("Are you sure you want to save the updates to this Sequence Number: " & cmbSeq.SelectedItem & " with Revision Number: " & cmbRev.SelectedItem & "?", "Delete Sequence Number", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then
save()
MessageBox.Show("Successfully Saved.", "Save Sequence Number", MessageBoxButtons.OK, MessageBoxIcon.Information)
toNormalMode()
find()
End If
End Sub
Private Sub cmbRev_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbRev.SelectedIndexChanged
If cmbSeq.SelectedItem <> "" And cmbLine.SelectedItem <> "" And cmbRev.SelectedItem <> "" And cmbModel.SelectedItem <> "" And cmbType.SelectedItem <> "" Then
find()
End If
End Sub
Private Sub cmbPlant_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
getSequence()
End Sub
Private Sub cmbModel_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub cmbMachine_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
If cmbSeq.SelectedItem <> "" And cmbLine.SelectedItem <> "" And cmbRev.SelectedItem <> "" Then
find()
End If
End Sub
Private Sub cmbLine_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbLine.SelectedIndexChanged
dg_mtSeq.Rows.Clear()
getModels()
End Sub
Private Sub cmbModel_SelectedIndexChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbModel.SelectedIndexChanged
dg_mtSeq.Rows.Clear()
getTypes()
End Sub
Private Sub cmbType_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbType.SelectedIndexChanged
dg_mtSeq.Rows.Clear()
getRevisions()
End Sub
End Class