3186 lines
117 KiB
VB.net
Raw Normal View History

2025-06-25 11:19:00 +09:00
Imports System.IO
Imports System.IO.Ports
Imports System.Math
2025-06-25 11:19:00 +09:00
Imports System.Text
Imports System.Threading
Imports Microsoft.VisualBasic.ApplicationServices
2025-06-25 11:19:00 +09:00
Public Class MainForm
Private Const TDMaxLength As Int16 = 10
Private Const TDMinLength As Int16 = 9
Private Const InputCntVal As Int16 = 10
Private Const LimitWhile As Int16 = 5
Private TDSNHead1 As String = "DIT"
Private TDSNHead2 As String = "J"
Private DBCmd As String
Private tmpCmdMessage As String
Private rxMessage, cmdMessage As String
Private ThreadStop As Boolean = False
Private SerialNum As String
Private NowDate As String
Private NowTime As String
Private OptionChange As Boolean = False
Private IDName As String = String.Empty
Private ModelCode As String
Private TypeCode As String
Private ColorCode As String
Private ClassCode As String
Private ProdCode As String
Private TDUseCompare As Boolean = False
Private RegNumber() As Integer
Private InputCnt As Int16
Private TrayData(0, 0) As Integer
Private Enum TrayDataList
NumData
State
maxList
End Enum
Private Enum SearchList
TestStep
Power
Depth
Serial
InputDate
Frequency
TestDate
Capacitor_FW
Grede
maxList
End Enum
Private TDData(SearchList.maxList - 1) As String
Private TDDataTxb(SearchList.maxList - 1) As TextBox
Private Enum ModeList
Prod_Input
TDRecycle
End Enum
Private NowMode As Int16
Private Enum SaveList
Info
Config
Print
MaxSave
End Enum
Private SaveName(SaveList.MaxSave) As String
Private Enum CountList
Total
Success
Fail
maxCount
End Enum
Private CountSelect(CountList.maxCount - 1) As Integer
Private ErrorData As Boolean = False
Private Enum ClassList
Domestic_Set
Domestic_AS
Domestic_shop
OverSeas_Set
OverSeas_AS
Experience
MaxClass
End Enum
Private ClassNumber(ClassList.MaxClass - 1) As Int16
Private Sub SetInputCnt()
InputCnt = InputCntVal
ScanTimer.Enabled = True
End Sub
Private Delegate Sub SerialDelegate()
Private SerialDelegateFunc As SerialDelegate
Private Runthread As Thread = New Thread(AddressOf ThreadPlay)
Private ThreadSwitch As Boolean = True
Private Sub ScanTimer_Tick(sender As Object, e As EventArgs) Handles ScanTimer.Tick
If InputCnt Then
InputCnt -= 1
Else
ScanTimer.Enabled = False
If txbPVSN.Text.Replace(" ", "") <> "" Or chbAutoMeasure.Checked Then
Select Case NowMode
Case ModeList.Prod_Input
If InStr(txbPVSN.Text, "[START]") > 0 Or txbPVSN.Text.Length = 12 Then
btnEnter_Click(sender, e)
End If
Case ModeList.TDRecycle
If InStr(txbPVSN.Text, TDSNHead1) > 0 Or InStr(txbPVSN.Text, TDSNHead2) > 0 Then
btnEnter_Click(sender, e)
End If
Case Else
MsgBox("잘못된 접근입니다.", vbCritical)
End Select
txbPVSN.Focus()
Else
btnEnter.Focus()
End If
txbPVSN.Refresh()
btnEnter.Refresh()
End If
End Sub
Private Sub txbPVSN_TextChanged(sender As Object, e As EventArgs) Handles txbPVSN.TextChanged
Dim TmpStr As String
If txbPVSN.Enabled = True Then
If InputCnt = 0 And chbUseBarcode.Checked = True Then
TmpStr = txbPVSN.Text
If (Len(TmpStr) > 1) Then
TmpStr = Mid(TmpStr, Len(TmpStr), 1)
txbPVSN.Clear()
txbPVSN.AppendText(TmpStr)
End If
SetInputCnt()
End If
End If
End Sub
Private Sub DataSetting()
Select Case NowMode
Case ModeList.Prod_Input
TDDataTxb(SearchList.TestStep) = txbTDStep
TDDataTxb(SearchList.Frequency) = txbTDFreq
TDDataTxb(SearchList.Grede) = txbTDGrade
TDDataTxb(SearchList.Serial) = txbTDNum
TDDataTxb(SearchList.InputDate) = txbTDIDate
TDDataTxb(SearchList.Depth) = txbTDDepth
TDDataTxb(SearchList.TestDate) = txbReTest
TDDataTxb(SearchList.Power) = txbTDPower
TDDataTxb(SearchList.Capacitor_FW) = txbPDVersion ''제외
Case ModeList.TDRecycle
TDDataTxb(SearchList.TestStep) = txbReOrder
TDDataTxb(SearchList.Capacitor_FW) = txbReCValue
TDDataTxb(SearchList.Frequency) = txbReFreq
TDDataTxb(SearchList.Grede) = txbReGrade
TDDataTxb(SearchList.Serial) = txbReSerial
TDDataTxb(SearchList.InputDate) = txbReInput
TDDataTxb(SearchList.Depth) = txbReMotor
TDDataTxb(SearchList.TestDate) = txbReTest
TDDataTxb(SearchList.Power) = txbRePower
End Select
End Sub
Private Sub DefaultSetting()
PrintUseCkb(PrintList.BoxCode) = ckbBoxPnt
PrintUseCkb(PrintList.Warranty) = ckbWarPnt
PrintUseCkb(PrintList.ProdLabel) = ckbProdPnt
PrintUseTxb(PrintList.BoxCode) = txbPtBox_Name
PrintUseTxb(PrintList.Warranty) = txbPtWar_Name
PrintUseTxb(PrintList.ProdLabel) = txbPtProd_Name
PrintUseZip(PrintList.BoxCode) = txbPtBox_Label
PrintUseZip(PrintList.Warranty) = txbPtWar_Label
PrintUseZip(PrintList.ProdLabel) = txbPtProd_Label
SaveName(SaveList.Info) = "InfoList"
SaveName(SaveList.Config) = "Config"
SaveName(SaveList.Print) = "Print"
ClassNumber(ClassList.Domestic_Set) = "1"
ClassNumber(ClassList.Domestic_AS) = "2"
ClassNumber(ClassList.Domestic_shop) = "3"
ClassNumber(ClassList.OverSeas_Set) = "5"
ClassNumber(ClassList.OverSeas_AS) = "6"
ClassNumber(ClassList.Experience) = "7"
End Sub
Private Sub RegCboSetting()
ModelCboSetting()
ClassCboSetting()
cboClear()
End Sub
Private Sub ClassCboSetting()
cboRegClass.Items.Clear()
cboRegClass.Items.Add("국내-세트")
cboRegClass.Items.Add("국내-A/S")
cboRegClass.Items.Add("국내-샵용")
cboRegClass.Items.Add("해외-세트")
cboRegClass.Items.Add("해외-A/S")
cboRegClass.Items.Add("체험단")
End Sub
Private Sub ModelCboSetting()
cboRegModel.Items.Clear()
cboRegModel.Items.Add("MAXIMUM")
cboRegModel.Items.Add("ALTO")
cboRegModel.Items.Add("EFFECT")
2025-07-16 10:39:32 +09:00
cboRegModel.Items.Add("MAXIMUM ALPHA")
2025-06-25 11:19:00 +09:00
End Sub
Private Sub cboRegModel_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboRegModel.SelectedIndexChanged
If cboRegModel.SelectedIndex > -1 Then
cboRegType.Items.Clear()
Select Case cboRegModel.SelectedItem
Case "MAXIMUM"
cboRegType.Items.Add("V1")
cboRegType.Items.Add("V2")
Case "ALTO"
cboRegType.Items.Add("SET")
Case "EFFECT"
cboRegType.Items.Add("V2")
cboRegType.Items.Add("V3")
2025-07-16 10:39:32 +09:00
Case "MAXIMUM ALPHA"
cboRegType.Items.Add("SET")
2025-06-25 11:19:00 +09:00
Case Else
MsgBox("잘못된 경로입니다.", vbCritical)
End Select
cboRegType.SelectedIndex = -1
cboRegType.Text = "SELECT!"
pnRegType.Enabled = True
End If
End Sub
Private Sub cboRegType_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboRegType.SelectedIndexChanged
If cboRegType.SelectedIndex > -1 Then
cboRegColor.Items.Clear()
Select Case cboRegModel.SelectedItem
Case "MAXIMUM"
Select Case cboRegType.SelectedItem
Case "V1"
cboRegColor.Items.Add("White")
cboRegColor.Items.Add("Pink")
cboRegColor.Items.Add("Mint")
cboRegColor.Items.Add("Purple")
cboRegColor.Items.Add("Yellow")
cboRegColor.Items.Add("Black_Gold")
Case "V2"
cboRegColor.Items.Add("White")
cboRegColor.Items.Add("Shine_Mint")
cboRegColor.Items.Add("Black_Black")
cboRegColor.Items.Add("Peach")
cboRegColor.Items.Add("Purple")
cboRegColor.Items.Add("Black_Gold")
cboRegColor.Items.Add("Pink")
cboRegColor.Items.Add("Yellow")
2025-06-25 11:19:00 +09:00
Case Else
MsgBox("잘못된 경로입니다.", vbCritical)
End Select
Case "ALTO"
Select Case cboRegType.SelectedItem
Case "SET"
cboRegColor.Items.Add("White")
cboRegColor.Items.Add("Purple")
cboRegColor.Items.Add("Black_Gold")
Case Else
MsgBox("잘못된 경로입니다.", vbCritical)
End Select
Case "EFFECT"
Select Case cboRegType.SelectedItem
Case "V2"
cboRegColor.Items.Add("White_Brown")
cboRegColor.Items.Add("White_Pink")
cboRegColor.Items.Add("White_Sky")
Case "V3"
cboRegColor.Items.Add("LineFrends_Brown")
cboRegColor.Items.Add("LineFrends_Sally")
2025-06-25 11:19:00 +09:00
Case Else
MsgBox("잘못된 경로입니다.", vbCritical)
End Select
2025-07-16 10:39:32 +09:00
Case "MAXIMUM ALPHA"
Select Case cboRegType.SelectedItem
Case "SET"
cboRegColor.Items.Add("Ruby_Red")
cboRegColor.Items.Add("Topaz_Orange")
cboRegColor.Items.Add("Emerald_Green")
cboRegColor.Items.Add("Sappaire_Blue")
cboRegColor.Items.Add("Topaz_Brown")
cboRegColor.Items.Add("Sitrin_Gold")
Case Else
MsgBox("잘못된 경로입니다.", vbCritical)
End Select
2025-06-25 11:19:00 +09:00
Case Else
MsgBox("잘못된 경로입니다.", vbCritical)
End Select
cboRegColor.SelectedIndex = -1
cboRegColor.Text = "SELECT!"
pnRegColor.Enabled = True
End If
End Sub
Private Function ColorSet(cboSelect As Integer) As Boolean
Select Case dgvDataSet.Rows(cboSelect).Cells(1).Value
Case "MAXIMUM"
ModelCode = "3"
TDUseCompare = True
Select Case dgvDataSet.Rows(cboSelect).Cells(2).Value
Case "V1"
TypeCode = "0"
Select Case dgvDataSet.Rows(cboSelect).Cells(5).Value
Case "White"
ColorCode = "0"
Case "Pink"
ColorCode = "3"
Case "Yellow"
ColorCode = "5"
Case "Mint"
ColorCode = "7"
Case "Purple"
ColorCode = "8"
Case "Black_Gold"
ColorCode = "9"
Case Else
Return True
End Select
Case "V2"
TypeCode = "1"
Select Case dgvDataSet.Rows(cboSelect).Cells(5).Value
Case "White"
ColorCode = "0"
Case "Shine_Mint"
ColorCode = "2"
Case "Black_Black"
ColorCode = "4"
Case "Peach"
ColorCode = "6"
Case "Purple"
ColorCode = "8"
Case "Black_Gold"
ColorCode = "9"
Case "Pink"
ColorCode = "3"
Case "Yellow"
ColorCode = "5"
2025-06-25 11:19:00 +09:00
Case Else
Return True
End Select
Case Else
Return True
End Select
Case "ALTO"
ModelCode = "5"
TDUseCompare = False
Select Case dgvDataSet.Rows(cboSelect).Cells(2).Value
Case "SET"
TypeCode = "0"
Select Case dgvDataSet.Rows(cboSelect).Cells(5).Value
Case "White"
ColorCode = "0"
Case "Purple"
ColorCode = "8"
Case "Black_Gold"
ColorCode = "9"
Case Else
Return True
End Select
End Select
Case "EFFECT"
ModelCode = "6"
TDUseCompare = True
Select Case dgvDataSet.Rows(cboSelect).Cells(2).Value
Case "V2"
TypeCode = "0" 'SET 였을 때 0 으로 고정
Select Case dgvDataSet.Rows(cboSelect).Cells(5).Value
Case "White_Pink"
ColorCode = "1"
Case "White_Sky"
ColorCode = "2"
Case "White_Brown"
ColorCode = "3"
Case Else
Return True
End Select
Case "V3"
TypeCode = "3" 'V3 혼란스럽지 않게 3으로 고정
2025-06-25 11:19:00 +09:00
Select Case dgvDataSet.Rows(cboSelect).Cells(5).Value
Case "LineFrends_Brown"
ColorCode = "4"
Case "LineFrends_Sally"
ColorCode = "5"
2025-06-25 11:19:00 +09:00
Case Else
Return True
End Select
End Select
2025-07-16 10:39:32 +09:00
Case "MAXIMUM ALPHA"
ModelCode = "7"
TDUseCompare = True
Select Case dgvDataSet.Rows(cboSelect).Cells(2).Value
Case "SET"
TypeCode = "0"
Select Case dgvDataSet.Rows(cboSelect).Cells(5).Value
Case "Ruby_Red"
ColorCode = "1"
Case "Topaz_Orange"
ColorCode = "2"
Case "Emerald_Green"
ColorCode = "3"
Case "Sapphire_Blue"
ColorCode = "4"
Case "Topaz_Brown"
ColorCode = "5"
Case "Stirin_Gold"
ColorCode = "6"
Case Else
Return True
End Select
End Select
2025-06-25 11:19:00 +09:00
Case Else
TDUseCompare = False
Return True
End Select
Return False
End Function
Private Sub MainForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
FormSetting()
DefaultSetting()
ModeEnable()
DataSetting()
ComboBoxSetting()
txtManufactureDate.ReadOnly = True
txtManufactureDate.BackColor = Color.Lavender
UpdateDateTextBox()
2025-06-25 11:19:00 +09:00
For i = SaveList.Info To SaveList.MaxSave - 1
OptionLoad(i)
Next
Print_Activate()
RegCboSetting()
StartCountSetting()
NowRegCheck()
txbPVSN.Focus()
End Sub
Private Sub ComboBoxSetting()
' 년도 콤보박스 (예: 2020~2030)
For i As Integer = 2020 To 2030
cmbYear.Items.Add(i.ToString())
Next
' 월 콤보박스 (1~12)
For i As Integer = 1 To 12
cmbMonth.Items.Add(i.ToString("00"))
Next
' 일 콤보박스 (1~31)
For i As Integer = 1 To 31
cmbDay.Items.Add(i.ToString("00"))
Next
' 기본값 설정 (오늘 날짜)
cmbYear.Text = DateTime.Now.Year.ToString()
cmbMonth.Text = DateTime.Now.Month.ToString("00")
cmbDay.Text = DateTime.Now.Day.ToString("00")
End Sub
Private Sub UpdateDateTextBox()
If cmbYear.Text <> "" And cmbMonth.Text <> "" And cmbDay.Text <> "" Then
txtManufactureDate.Text = cmbYear.Text & "-" & cmbMonth.Text.PadLeft(2, "0"c) & "-" & cmbDay.Text.PadLeft(2, "0"c)
Else
txtManufactureDate.Text = ""
End If
End Sub
Private Sub cmbYear_SelectedIndexChanged() Handles cmbYear.SelectedIndexChanged
UpdateDateTextBox()
End Sub
Private Sub cmbMonth_SelectedIndexChanged() Handles cmbMonth.SelectedIndexChanged
UpdateDateTextBox()
End Sub
Private Sub cmbDay_SelectedIndexChanged() Handles cmbDay.SelectedIndexChanged
UpdateDateTextBox()
End Sub
2025-06-25 11:19:00 +09:00
Private Sub MainForm_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
If UserLogOut() Then
End
Else
e.Cancel = True
End If
End Sub
Private Function UserLogOut() As Boolean
DBCmd = "UPDATE " & LoginDB & " SET NowState = '0' WHERE UserID = '" & IDName & "'"
If DBCommand(DBCmd) Then
Return True
Else
Return False
End If
End Function
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
If Runthread.IsAlive = True Then
Runthread.Abort()
End If
If UserLogOut() Then
End
Else
MsgBox("LogOut Fail!", vbCritical)
End If
End Sub
Private Sub FormSetting()
Const ProgramName As String = "Product Program Ver_"
2025-07-31 17:07:41 +09:00
Const VersionNum As String = "1.1.10"
2025-06-25 11:19:00 +09:00
Me.Text = ProgramName & VersionNum
Me.Size = New Size(1920, 1050)
Me.WindowState = FormWindowState.Maximized
IDName = LoginForm.UserInfo.UserID
dgvPrinter.DefaultCellStyle.Font = New Font("함초롱바탕", 12)
NowTimer.Enabled = True
End Sub
Private Sub ModeEnable()
rdbCSearch.Enabled = False
rdbPD1.Enabled = False
rdbPD2.Enabled = True
rdbCheck.Enabled = False
rdbManager.Enabled = False
rdbRecycle.Enabled = True
End Sub
Private Sub ConfigSetting()
chbUseBarcode.Location = New Point(45, 20)
chbAutoMeasure.Location = New Point(45, 50)
ckbPrintUse.Location = New Point(200, 20)
ckbAutoFunc.Location = New Point(200, 50)
If rdbRecycle.Checked = True Then
ckbAutoFunc.Text = "자동삭제"
ckbAutoFunc.Checked = True
Else
ckbAutoFunc.Text = "자동생성"
ckbAutoFunc.Checked = True
End If
End Sub
Private Sub chbUseBarcode_CheckedChanged(sender As Object, e As EventArgs) Handles chbUseBarcode.CheckedChanged
If chbUseBarcode.Checked = True Then
chbAutoMeasure.Checked = True
chbAutoMeasure.Enabled = True
lbPVSN.Location = New Point(265, 28)
txbPVSN.Location = New Point(760, 25)
btnEnter.Enabled = False
btnEnter.Visible = False
Else
chbAutoMeasure.Checked = False
chbAutoMeasure.Enabled = False
lbPVSN.Location = New Point(155, 28)
txbPVSN.Location = New Point(650, 25)
btnEnter.Enabled = True
btnEnter.Visible = True
End If
txbPVSN.Focus()
End Sub
Private Sub rdbRecycle_CheckedChanged(sender As Object, e As EventArgs) Handles rdbRecycle.CheckedChanged
If rdbRecycle.Checked = True Then
NowMode = ModeList.TDRecycle
OptionSave(SaveList.Config)
ModeChange()
End If
End Sub
Private Sub rdbPD2_CheckedChanged(sender As Object, e As EventArgs) Handles rdbPD2.CheckedChanged
If rdbPD2.Checked = True Then
NowMode = ModeList.Prod_Input
OptionSave(SaveList.Config)
ModeChange()
End If
End Sub
Private Sub ModeChange()
TimerFalse()
ConfigSetting()
gbSerial.Enabled = False
lbState.Visible = False
pnMaxInput.Enabled = False
pnMaxInput.Visible = False
pnRecycle.Enabled = False
pnRecycle.Visible = False
Select Case NowMode
Case ModeList.Prod_Input
pnMaxInput.Enabled = True
pnMaxInput.Visible = True
gbSerial.Enabled = True
lbState.Visible = True
Case ModeList.TDRecycle
pnRecycle.Enabled = True
pnRecycle.Visible = True
Case Else
MsgBox("알 수 없는 동작 모드입니다. 관리자에게 문의해주세요.", vbCritical)
End Select
DataReset()
End Sub
Private Sub StartCountSetting()
NowDate = Format(Now, "yyyy-MM-dd")
If TodayCountCreate() Then
MsgBox("수량 카운터를 생성하는 도중 오류가 발생하였습니다.", vbCritical)
Exit Sub
End If
If cboPDInfo.SelectedIndex = -1 Then
ModelCode = 3
End If
If TodayCountLoad() Then
MsgBox("수량 카운터를 불러오는 도중 오류가 발생하였습니다.", vbCritical)
Exit Sub
End If
CountSetting()
End Sub
Private Sub NowTimer_Tick(sender As Object, e As EventArgs) Handles NowTimer.Tick
lblTime.Text = Now
End Sub
Private Sub cmdSerial_Click(sender As Object, e As EventArgs) Handles cmdSerial.Click
TimerFalse()
If cmdSerial.Text = "스캔" Then
cboComPort.Text = "SELECT!"
LoadComportName()
cmdSerial.Text = "연결"
Else
PortSerial.Close()
If PortSerial.IsOpen = True Then
PortSerial.Close()
SerialStateOFF()
End If
Dim PortName As String = cboComPort.SelectedItem
If OpenSerial(PortName) = False Then
SerialStateOFF()
Else
OptionSave(SaveList.Config)
End If
cmdSerial.Text = "스캔"
End If
txbPVSN.Focus()
End Sub
Private Sub SerialStateOn()
txbState.BackColor = Color.Green
lbState.BackColor = Color.Green
lbState.Text = "ON"
lbState.Location = New Point(389, 40)
End Sub
Private Sub SerialStateOFF()
txbState.BackColor = Color.Red
lbState.BackColor = Color.Red
lbState.Text = "OFF"
lbState.Location = New Point(385, 40)
End Sub
Private Sub LoadComportName()
Dim PortName() As String
Dim i As Integer
Try
cboComPort.Items.Clear()
PortName = SerialPort.GetPortNames
For i = 1 To PortName.Length
cboComPort.Items.Add(PortName(i - 1))
Next i
cboComPort.Text = "PRESS!"
Catch ex As Exception
MsgBox("Port Load ERROR !!" & vbCrLf & ex.Message, vbCritical)
End Try
End Sub
Private Function OpenSerial(SerialName As String) As Boolean
Try
If SerialName <> "" Then
If PortSerial.IsOpen = False Then
With PortSerial
.PortName = SerialName
.BaudRate = 230400
.DataBits = 8
.Parity = IO.Ports.Parity.None
.StopBits = IO.Ports.StopBits.One
.Handshake = IO.Ports.Handshake.None
End With
PortSerial.Open()
SerialStateOn()
End If
Return True
Else
MsgBox("시리얼포트를 설정해주세요!" & vbCrLf & "", vbCritical, "DUALSONIC T/D Selecter Tester Manager")
Return False
End If
Catch ex As Exception
MsgBox("COM 포트 연결 ERROR !!" & vbCrLf & ex.Message, vbCritical)
Return False
End Try
End Function
Private Sub btnEnter_Click(sender As Object, e As EventArgs) Handles btnEnter.Click
Dim SearchData As String = txbPVSN.Text
If SearchData.Replace(" ", "") = "" Then
MsgBox("검색할 TD 번호를 입력하여 주십시오.", vbExclamation)
GoTo FailFunc
End If
Select Case NowMode
Case ModeList.Prod_Input
TimerFalse()
ProdInputFunc(sender, e, SearchData)
Case ModeList.TDRecycle
TDRecycleFunc(sender, e, SearchData)
Case Else
MsgBox("잘못된 루트입니다.", vbCritical)
End Select
Exit Sub
FailFunc:
txbPVSN.BackColor = Color.Red
txbPVSN.Text = String.Empty
txbPVSN.Focus()
End Sub
Private Function SerialUseCheck() As Boolean
If txbNowNum.Text = "" Or txbNowNum.Text = "0" Or txbNowNum.Text = String.Empty Then
MsgBox("시리얼 번호를 불러올 수 없습니다.", vbCritical)
Return True
Else
ProdCode = txbNowNum.Text
End If
Dim FrontSerial As String = Mid(ProdCode, 1, 3)
Dim BackSerial As String = Mid(ProdCode, 4, 3)
SerialNum = ModelCode & TypeCode & Format(Now, "yyMM") & BackSerial & FrontSerial
If DBSerialCheck() Then
Return False
Else
MsgBox("생성 할 시리얼 번호 " & SerialNum & "은 이미 존재 합니다.", vbCritical)
2025-06-25 11:19:00 +09:00
Return True
End If
End Function
'Private Function SerialUseCheck() As Boolean
' Const ReGen As Int16 = 5
' Dim SearchData As String = ClassCode & ColorCode
' RichTextBox1.AppendText("SearchData :" & SearchData & vbCrLf)
' Dim rdNum As Random = New Random
' For i = 1 To ReGen
' If SerialCompare(SearchData) Then
' ProdCode = NextSerialCheck(SearchData)
' If ProdCode = "0" Then
' MsgBox("시리얼 번호 확인 중 오류가 발생하였습니다.", vbCritical)
' Return True
' End If
' Else
' ProdCode = SearchData & "0000"
' End If
' ProdCode = Val(ProdCode) + i
' RichTextBox1.AppendText("ProdCode :" & ProdCode & vbCrLf)
' Dim FrontSerial As String = Mid(ProdCode, 1, 3)
' RichTextBox1.AppendText("FrontSerial :" & FrontSerial & vbCrLf)
' Dim BackSerial As String = Mid(ProdCode, 4, 3)
' RichTextBox1.AppendText("BackSerial :" & BackSerial & vbCrLf)
' SerialNum = ModelCode & TypeCode & Format(Now, "yyMM") & BackSerial & FrontSerial
' RichTextBox1.AppendText("SerialNum :" & SerialNum & vbCrLf)
' Dim NumUse As Boolean = False
' For chk = 0 To 2
' If DBSerialCheck() Then
' NumUse = True
' Else
' NumUse = False
' Exit For
' End If
' Thread.Sleep(rdNum.Next(50, 100))
' Next
' If NumUse = True Then
' If DBPreemptSet() Then
' Return False
' End If
' End If
' Next
' MsgBox("시리얼 번호를 설정할 수 없습니다.", vbCritical)
' Return True
'End Function
'Private Function DBPreemptSet() As Boolean
' DBCmd = "UPDATE " & ApplyCartDB & " SET Product_SN = '" & SerialNum & "', Ct_SN = '" & ProdCode & "' WHERE PV_SN = '" & TDData(SearchList.Serial) & "'"
' If DBCommand(DBCmd) Then
' Return True
' Else
' Return False
' End If
'End Function
Private Function DBSerialCheck() As Boolean
If TDUseCompare = True Then
DBCmd = "SELECT COUNT(NUMBER) FROM " & ApplyCartDB & " WHERE Product_SN = '" & SerialNum & "'"
Else
DBCmd = "SELECT COUNT(NUMBER) FROM " & ApplyNonTDDB & " WHERE Product_SN = '" & SerialNum & "'"
End If
Dim UseCheck As String = DBQueryScalar(DBCmd)
If UseCheck = 0 Then
Return True
Else
Return False
End If
End Function
Private Function SerialCompare(FrontCode As String) As Boolean
DBCmd = "SELECT COUNT(Ct_SN) FROM " & ApplyCartDB & " WHERE Ct_Manufacture_Year = " & Format(Now, "yy") & " AND Ct_Manufacture_Month = " & Format(Now, "MM") & " AND Ct_SN IS not NULL AND Product_SN LIKE '" & ModelCode & TypeCode & "%' AND Ct_SN LIKE '" & FrontCode & "%'"
RichTextBox1.AppendText("DBCmd FULL :" & DBCmd & vbCrLf)
Dim SerialUse As Integer = DBQueryScalar(DBCmd)
RichTextBox1.AppendText("SerialUse :" & SerialUse & vbCrLf)
If SerialUse = 0 Then
Return False
Else
Return True
End If
End Function
'Private Function NextSerialCheck(FrontCode As String) As String
' Dim UseSerial As String = String.Empty
' Dim NewSerialUse As Boolean = True
' Dim NowNumber As String = String.Empty
' DBCmd = "SELECT b.Ct_SN FROM (SELECT Ct_SN FROM " & ApplyCartDB & " WHERE Ct_Manufacture_Year = " & Format(Now, "yy") & " AND Ct_Manufacture_Month = " & Format(Now, "MM") & " AND Ct_SN IS not NULL AND Product_SN LIKE '" & ModelCode & TypeCode & "%' AND Ct_SN LIKE '" & FrontCode & "%' ORDER BY Ct_SN DESC LIMIT 5) AS b ORDER BY b.Ct_SN ASC LIMIT 5"
' RichTextBox1.AppendText("DBCmd FULL :" & DBCmd & vbCrLf)
' If DBQueryReader(DBCmd) Then
' For i = 0 To sqlDataQuery.Length - 1
' UseSerial = sqlDataQuery(i)
' If i = 0 Then
' NowNumber = UseSerial
' Else
' Dim CheckData As String = UseSerial - NowNumber
' If CheckData <> 1 Then
' Exit For
' Else
' NowNumber = UseSerial
' End If
' End If
' Next
' Return NowNumber
' Else
' Return "NULL"
' End If
'End Function
Private Sub ProdInputFunc(sender As Object, e As EventArgs, SearchData As String)
Dim userID As String = ""
' info1 또는 info2 중 NowState가 1인 사용자 조회
DBCmd = "SELECT UserID FROM " & LoginDB & " WHERE NowState = '1' AND (UserID = 'info1' OR UserID = 'info2')"
If DBQueryReader(DBCmd) Then
userID = sqlDataQuery(0)
Else
MsgBox("사용자 정보 읽기 실패", vbExclamation)
GoTo FailFunc
End If
If userID = "info1" Or userID = "info2" Then
' PASS
Else
MsgBox("info1 또는 info2 계정을 사용하세요", vbExclamation)
GoTo FailFunc
End If
2025-06-25 11:19:00 +09:00
StepReset()
ValueReset()
If cboPDInfo.SelectedIndex = -1 Then
MsgBox("제품 설정을 선택하지 않았습니다. 선택하여 주십시오.", vbExclamation)
GoTo FailFunc
End If
If PortSerial.IsOpen = False Then
MsgBox("통신 포트를 설정하지 않았습니다. 연결하여 주십시오.", vbExclamation)
GoTo FailFunc
End If
If ckbAutoFunc.Checked = True Then
If SearchData <> "[START]" Then
MsgBox("잘못된 시작 코드입니다. 확인하여 주십시오.", vbExclamation)
GoTo FailFunc
End If
TraySerialSetting()
Else
Const SearchLength As Int16 = 12
If SearchData.Length <> SearchLength Then
MsgBox("잘못된 제품 코드입니다. 확인하여 주십시오.", vbExclamation)
GoTo FailFunc
End If
txbPDNum.Text = SearchData
SerialNum = SearchData
If DBSerialCheck() = False Then
If RePrintCheck() Then
Print_Activate()
Dim RePrForm As RePrintForm = New RePrintForm
RePrForm.Visible = False
RePrForm.ShowDialog()
GoTo RePrintOk
End If
End If
End If
RunStateFunc("제품 연결 대기", Color.Orange)
ThreadStop = False
Runthread = New Thread(AddressOf ThreadPlay)
Runthread.IsBackground = True
Runthread.Start()
Exit Sub
RePrintOk:
RunStateFunc("재인쇄 완료", Color.Green)
Exit Sub
FailFunc:
RunStateFunc("실 패", Color.Red)
End Sub
Private Function RePrintCheck() As Boolean
If TDUseCompare = True Then
DBCmd = "SELECT TestStep FROM " & ApplyCartDB & " WHERE Product_SN = '" & SerialNum & "'"
Else
DBCmd = "SELECT TestStep FROM " & ApplyNonTDDB & " WHERE Product_SN = '" & SerialNum & "'"
End If
Dim StepCheck As String = DBQueryScalar(DBCmd)
If StepCheck = "False" Then
Return False
End If
If StepCheck = "31" Then
Return True
End If
Return False
End Function
Private Sub ValueReset()
ProdCode = String.Empty
SerialNum = String.Empty
ThreadSwitch = True
ErrorData = False
End Sub
Private Sub ThreadPlay()
Const RunLimitMax As Int16 = 10
Dim RunLimit As Int16 = 0
Dim LimitFail As Boolean = False
SerialDelegateFunc = New SerialDelegate(AddressOf ThreadFunc)
While ThreadSwitch
If ThreadStop = True Then '' 초기화 누를 시 강제 탈출하도록
ThreadSwitch = False
Exit While
End If
If RunLimit = RunLimitMax Then
ThreadSwitch = False
LimitFail = True
Exit While
End If
Me.Invoke(SerialDelegateFunc)
Thread.Sleep(1000)
RunLimit += 1
End While
If LimitFail = True Then
SerialDelegateFunc = New SerialDelegate(AddressOf ThreadStateFunc)
Me.Invoke(SerialDelegateFunc)
End If
End Sub
Private Sub ThreadStateFunc()
RunStateFunc("시간 초과", Color.Red)
End Sub
Private Sub ThreadFunc()
Select Case NowMode
Case ModeList.Prod_Input
If IsNumeric(ShotSearch()) Then
If ckbOpAlto.Checked = False Then
Dim SerialCode As String = TDCodeSearch()
If SerialCode = "1" Then
MsgBox("제품과의 연결이 올바르지 않습니다. 다시 시도하여 주십시오.", vbCritical)
GoTo ComErr
ElseIf SerialCode = "0" Then
MsgBox("TD 시리얼 번호가 존재하지 않습니다. TD 시리얼 번호를 등록하여 주십시오.", vbCritical)
ErrorData = True
GoTo DataErr
End If
If TDExist(SerialCode) Then
ErrorData = True
GoTo DataErr
End If
If TDUseCompare = True Then
If TDSearch(SerialCode) Then
ErrorData = True
GoTo DataErr
End If
For i = SearchList.TestStep To SearchList.maxList - 1
If i = SearchList.TestStep Then
TDDataTxb(i).Text = TestStepParsing()
If TDDataTxb(i).Text = "NULL" Then
TDDataTxb(i).BackColor = Color.Red
Else
TDDataTxb(i).BackColor = Color.Green
End If
Else
TDDataTxb(i).Text = TDData(i)
End If
Next
Else
TDData(SearchList.Serial) = SerialCode
DBCmd = "SELECT TestStep FROM " & ApplyNonTDDB & " WHERE PV_SN = '" & TDData(SearchList.Serial) & "'"
TDData(SearchList.TestStep) = DBQueryScalar(DBCmd)
TDDataTxb(SearchList.TestStep).Text = TestStepParsing()
For i = SearchList.TestStep To SearchList.maxList - 1
If i <> SearchList.Serial Then
TDDataTxb(i).Text = "확인"
Else
TDDataTxb(i).Text = TDData(SearchList.Serial)
End If
Next
End If
Else
TDData(SearchList.Serial) = txbTDNum.Text
For i = SearchList.TestStep To SearchList.maxList - 1
If i <> SearchList.Serial Then
TDDataTxb(i).Text = "확인"
Else
TDDataTxb(i).Text = TDData(SearchList.Serial)
End If
Next
End If
RunTimer.Enabled = True
GoTo FinishFunc
End If
End Select
Exit Sub
DataErr:
RunStateFunc("데이터 에러", Color.Red)
If ErrorData = True Then
If TodayCountSet(False) Then
RunStateFunc("D 수량 에러", Color.Red)
End If
End If
GoTo FinishFunc
ComErr:
RunStateFunc("통신 에러", Color.Red)
FinishFunc:
ThreadSwitch = False
End Sub
Private Sub RunTimer_Tick(sender As Object, e As EventArgs) Handles RunTimer.Tick
Dim ConfigStr As String
If ThreadSwitch = False Then
RunTimer.Enabled = False
If ckbOpAlto.Checked = False Then
If txbTDNum.Text.Length = TDMaxLength Then
If Not (ModelCode = 6 And (Val(TDData(SearchList.TestStep)) = 21 Or Val(TDData(SearchList.TestStep)) = 25)) Then
If Val(TDData(SearchList.TestStep)) <> 23 And Val(TDData(SearchList.TestStep)) <> 27 And Val(TDData(SearchList.TestStep)) <> 30 And Val(TDData(SearchList.TestStep)) <> 32 And Val(TDData(SearchList.TestStep)) <> 41 Then
If Val(TDData(SearchList.TestStep)) > 29 Then
RunStateFunc("중복 처리", Color.Red)
ErrorData = True
GoTo FinishFunc
Else
RunStateFunc("공정 순서 불량", Color.Red)
ErrorData = True
GoTo FinishFunc
End If
End If
End If
If TDUseCompare = True Then
ConfigStr = FreqPowerSearch()
If ConfigStr = "NULL" Or ConfigStr = "FAIL" Then
FreqPowerReg(TDData(SearchList.Frequency), TDData(SearchList.Power))
ConfigStr = FreqPowerSearch()
End If
If ConfigStr = "NULL" Then
ErrorData = True
MsgBox("잘못된 주파수가 입력되어 있습니다. 주파수 값을 확인하여 주십시오.", vbExclamation)
GoTo DataFail
ElseIf ConfigStr = "FAIL" Then
MsgBox("주파수를 읽어오지 못했습니다. 연결을 확인하여 주십시오.", vbExclamation)
GoTo DataFail
End If
If FreqCompare(ConfigStr) Then
FreqPowerReg(TDData(SearchList.Frequency), TDData(SearchList.Power))
End If
If FreqCompare(ConfigStr) Then
ErrorData = True
GoTo LoadFail
End If
TDDataTxb(SearchList.Frequency).BackColor = Color.Green
TDDataTxb(SearchList.Power).BackColor = Color.Green
End If
ConfigStr = FirmWareCheck()
If ConfigStr = "NULL" Then
MsgBox("잘못된 펌웨어가 입력되어 있습니다. 값을 확인하여 주십시오.", vbExclamation)
ErrorData = True
GoTo LoadFail
ElseIf ConfigStr = "FAIL" Then
MsgBox("펌웨어를 읽어오지 못했습니다. 연결을 확인하여 주십시오.", vbExclamation)
GoTo LoadFail
Else
txbPDVersion.Text = ConfigStr
End If
RunStateFunc("정보 입력중", Color.Lime)
If ckbAutoFunc.Checked = True Then
If SerialUseCheck() Then
GoTo LoadFail
End If
txbPDNum.Text = SerialNum
Else
SerialNum = txbPDNum.Text
Dim FrontSetSerial As String = Mid(SerialNum, 7, 3)
Dim BackSetSerial As String = Mid(SerialNum, 10, 3)
ProdCode = BackSetSerial & FrontSetSerial
End If
PrintFunc()
If ProdRegData(txbPDCP.Text, txbPDCC.Text, txbPDAgency.Text) Then
If ShotReg(0) Then
If ShotSearch() = "0" Then 'If ShotSearch() = "False" Then 'hjw test
2025-06-25 11:19:00 +09:00
If DBProdReg(txbPDCP.Text, txbPDCC.Text, txbPDAgency.Text, 0) Then
If TraySuccess() Then
If TodayCountSet(True) Then
MsgBox("데이터베이스 수량 카운트 도중 오류가 발생하였습니다.", vbCritical)
GoTo LoadFail
End If
RunStateFunc("입력 완료", Color.Green)
GoTo FinishFunc
Else
MsgBox("데이터베이스에 Tray 내용을 등록하는 도중 오류가 발생하였습니다.", vbCritical)
GoTo LoadFail
End If
Else
MsgBox("데이터베이스에 등록하는 도중 오류가 발생하였습니다.", vbCritical)
GoTo LoadFail
End If
Else
MsgBox("샷 수 정보 확인 실패!", vbCritical)
MsgBox("통신 포트 연결을 확인하세요", vbExclamation, "포트 연결 확인")
2025-06-25 11:19:00 +09:00
GoTo LoadFail
End If
Else
MsgBox("샷 정보 입력 실패 !", vbCritical)
GoTo LoadFail
End If
Else
MsgBox("시리얼 정보 입력 실패 !", vbCritical)
GoTo LoadFail
End If
Else
txbTDNum.BackColor = Color.Red
MsgBox("잘못된 TD 번호가 입력되어 있습니다. TD 번호를 재입력하여 주십시오.", vbExclamation)
GoTo FinishFunc
End If
Else
RunStateFunc("정보 입력중", Color.Lime)
PrintFunc()
If ProdRegData(txbPDCP.Text, txbPDCC.Text, txbPDAgency.Text) Then
If DBProdRegAlto(txbPDNum.Text, txbPDCP.Text, txbPDCC.Text, txbPDAgency.Text, 0) Then
If TodayCountSet(True) Then
MsgBox("데이터베이스 수량 카운트 도중 오류가 발생하였습니다.", vbCritical)
GoTo LoadFail
End If
RunStateFunc("입력 완료", Color.Green)
GoTo FinishFunc
Else
MsgBox("데이터베이스에 등록하는 도중 오류가 발생하였습니다.", vbCritical)
GoTo LoadFail
End If
Else
MsgBox("시리얼 정보 입력 실패 !", vbCritical)
GoTo LoadFail
End If
End If
GoTo FinishFunc
End If
Exit Sub
DataFail:
TDDataTxb(SearchList.Frequency).BackColor = Color.Red
TDDataTxb(SearchList.Power).BackColor = Color.Red
LoadFail:
RunStateFunc("입력 실패", Color.Red)
If ErrorData = True Then
If TodayCountSet(False) Then
If DBProdFailReg() Then
RunStateFunc("T 수량 에러", Color.Red)
End If
End If
End If
FinishFunc:
NowRegCheck()
End Sub
Private Function TraySuccess() As Boolean
Dim TrayOkNg As Boolean = False
For i = 0 To TrayData.GetLength(1) - 1
If TrayData(TrayDataList.NumData, i) = txbNowNum.Text Then
Dim DBNum As Int16 = i + 1
DBCmd = "UPDATE " & InfoRegStateDB & " SET Tray" & DBNum & "State = '" & Abs(Val(True)) & "' WHERE UserID = '" & IDName & "' AND ModelNum = '" & ModelCode & "' AND TypeNum = '" & TypeCode & "' AND ColorNum = '" & ColorCode & "' AND UsageNum = '" & ClassCode & "' AND CreateYear = '" & Format(Now, "yy") & "' AND CreateMonth = '" & Format(Now, "MM") & "'"
If DBCommand(DBCmd) Then
Return True
End If
End If
Next
Return False
End Function
Public Sub PrintFunc()
If ckbPrintUse.Checked = True Then
Dim PrintThread As Thread = New Thread(New ParameterizedThreadStart(AddressOf PrintRun))
PrintThread.IsBackground = True
PrintThread.Start(SerialNum)
End If
End Sub
Private Function DBProdReg(Factory As String, Country As String, Agency As String, ShotCount As String) As Boolean
Dim DBCheck As String = String.Empty
If TDData(SearchList.TestStep) = "41" Then
If TDUseCompare = True Then
DBCmd = "SELECT PV_SN FROM " & ApplyCartDB & " WHERE Product_SN = '" & SerialNum & "'"
Else
DBCmd = "SELECT PV_SN FROM " & ApplyNonTDDB & " WHERE Product_SN = '" & SerialNum & "'"
End If
Dim PVSN As String = DBQueryScalar(DBCmd)
If PVSN = "False" Then
MsgBox("제품 시리얼 번호에 등록된 TD 시리얼 번호를 검색하는 도중 오류가 발생하였습니다.", vbCritical)
Return True
End If
If PVSN <> TDData(SearchList.Serial) Then
MsgBox("제품 시리얼 번호에 등록된 TD 시리얼 번호가 저장된 시리얼 번호와 다릅니다.", vbCritical)
Return True
End If
DBCmd = "UPDATE " & ApplyReturnDB & " SET DataRegDate = '" & Format(Now, "yyyy-MM-dd") & "', DataRegTime = '" & Format(Now, "HH:mm:ss") & "' WHERE Product_SN = '" & SerialNum & "' AND ReturnCount = (SELECT MAX(ReturnCount) FROM " & ApplyReturnDB & " WHERE Product_SN = '" & SerialNum & "')"
If DBCommand(DBCmd) = False Then
Return True
End If
End If
If TDUseCompare = True Then
DBCheck = "UPDATE " & ApplyCartDB & " SET Product_SN = null WHERE PV_SN = '" & txbTDNum.Text & "'"
DBCmd = "UPDATE " & ApplyCartDB & " SET TestStep = '31', Product_SN = '" & SerialNum & "', Ct_Manufacture_Name='" & Factory & "', Ct_Manufacture_Year='" & Format(Now, "yy") & "', Ct_Manufacture_Month='" & Format(Now, "MM") & "', Ct_SN='" & ProdCode & "', Ct_Model='" & txbPDModel.Text & "', Ct_Type='" & txbPDType.Text & "', Ct_Abroad='" & Country & "', Ct_Agency='" & Agency & "',Ct_Max_ShotCnt = '" & ShotCount & "', Ct_Remain_ShotCnt = '" & ShotCount & "', P3_DateTime = '" & Format(Now, "yyyy-MM-dd HH:mm:ss") & "', Manufacture_Date ='" & txtManufactureDate.Text & "' WHERE PV_SN = '" & txbTDNum.Text & "'"
2025-06-25 11:19:00 +09:00
Else
DBCheck = "UPDATE " & ApplyNonTDDB & " SET Product_SN = null WHERE PV_SN = '" & txbTDNum.Text & "'"
DBCmd = "UPDATE " & ApplyNonTDDB & " SET TestStep = '31', Product_SN = '" & SerialNum & "', Ct_Manufacture_Name='" & Factory & "', Ct_Manufacture_Year='" & Format(Now, "yy") & "', Ct_Manufacture_Month='" & Format(Now, "MM") & "', Ct_SN='" & ProdCode & "', Ct_Model='" & txbPDModel.Text & "', Ct_Type='" & txbPDType.Text & "', Ct_Abroad='" & Country & "', Ct_Agency='" & Agency & "', P3_DateTime = '" & Format(Now, "yyyy-MM-dd HH:mm:ss") & "', Manufacture_Date ='" & txtManufactureDate.Text & "' WHERE PV_SN = '" & txbTDNum.Text & "'"
2025-06-25 11:19:00 +09:00
End If
If DBCommand(DBCheck) Then
If DBCommand(DBCmd) Then
If TDUseCompare = True Then
DBCmd = "SELECT TestStep FROM " & ApplyCartDB & " Where Product_SN = '" & SerialNum & "'"
Else
DBCmd = "SELECT TestStep FROM " & ApplyNonTDDB & " Where Product_SN = '" & SerialNum & "'"
End If
If DBQueryScalar(DBCmd) = "31" Then
Return True
End If
Else
MsgBox("DB Update 도중 오류 발생 !", vbCritical)
Return True
End If
Else
MsgBox("DB NULL 변경 오류 발생 !", vbCritical)
Return True
End If
Return False
End Function
Private Function DBProdRegAlto(ProdSerial As String, Factory As String, Country As String, Agency As String, ShotCount As String) As Boolean
Dim DBSerial As String = Mid(ProdSerial, 10, 3) & Mid(ProdSerial, 7, 3)
DBCmd = "INSERT INTO " & ApplyNonTDDB & "(TestStep,Product_SN,Ct_Manufacture_Name,Ct_Manufacture_Year,Ct_Manufacture_Month,Ct_SN,Ct_Model,Ct_Type,Ct_Abroad,Ct_Agency,P3_DateTime) VALUES('31','" & ProdSerial & "','" & Factory & "','" & Format(Now, "yy") & "','" & Format(Now, "MM") & "','" & DBSerial & "','" & txbPDModel.Text & "','" & txbPDType.Text & "','" & Country & "','" & Agency & "','" & Format(Now, "yyyy-MM-dd HH:mm:ss") & "')"
If DBCommand(DBCmd) Then
DBCmd = "SELECT TestStep FROM " & ApplyNonTDDB & " Where Product_SN = '" & ProdSerial & "'"
If DBQueryScalar(DBCmd) = "31" Then
Return True
End If
End If
Return False
End Function
Private Function DBProdFailReg() As Boolean
DBCmd = "UPDATE " & ApplyCartDB & " SET TestStep = '30',Product_SN = NULL, Ct_SN = null, P3_DateTime = '" & Format(Now, "yyyy-MM-dd HH:mm:ss") & "' WHERE PV_SN = '" & txbTDNum.Text & "'"
If DBCommand(DBCmd) Then
DBCmd = "SELECT TestStep FROM " & ApplyCartDB & " Where PV_SN = '" & txbTDNum.Text & "'"
If DBQueryScalar(DBCmd) = "30" Then
Return True
End If
End If
Return False
End Function
Private Function CreateSerialCompare(SerialNum As String) As Boolean
DBCmd = "SELECT COUNT(NUMBER) FROM " & ApplyCartDB & " WHERE Product_SN = '" & SerialNum & "'"
Dim CompareData As String = DBQueryScalar(DBCmd)
2025-07-25 11:10:07 +09:00
If CompareData > "False" Then
2025-06-25 11:19:00 +09:00
Return False
End If
Return True
End Function
Private Function SerialNumberSet() As String
Const SearchLength As Int16 = 2
Const SerialLength As Int16 = 6
Dim SearchData As String = ClassCode & ColorCode
If SearchData.Length <> SearchLength Then
MsgBox("잘못된 시리얼번호 타입입니다.", vbCritical)
Return "FAIL"
End If
DBCmd = "SELECT Ct_SN FROM " & ApplyCartDB & " WHERE Ct_Manufacture_Year = " & Format(Now, "yy") & " AND Ct_Manufacture_Month = " & Format(Now, "MM") & " AND Ct_SN IS not NULL AND Ct_SN LIKE '" & SearchData & "%' ORDER BY Ct_SN DESC LIMIT 1"
Dim ScalarData = DBQueryScalar(DBCmd)
If ScalarData = "False" Then
Return "FAIL"
End If
If ScalarData = "" Or ScalarData.Length <> SerialLength Then
ScalarData = SearchData & "0000"
End If
Return ScalarData
End Function
Private Function TDStepCheck(TDName As String) As String
If TDUseCompare = True Then
DBCmd = "SELECT TestStep FROM " & ApplyCartDB & " WHERE PV_SN = '" & TDName & "'"
Else
DBCmd = "SELECT TestStep FROM " & ApplyNonTDDB & " WHERE PV_SN = '" & TDName & "'"
End If
Return DBQueryScalar(DBCmd)
End Function
Private Function ProdRegData(Factory As String, Country As String, Agency As String) As Boolean
Const Commander As String = "wrsconf1"
Dim retVal As String
Dim ProdCode As String = Mid(SerialNum, 1, 2)
Dim ProdDate As String = Mid(SerialNum, 3, 4)
Dim FrontSetSerial As String = Mid(SerialNum, 7, 3)
Dim BackSetSerial As String = Mid(SerialNum, 10, 3)
Dim UseSerial As String = ProdDate & BackSetSerial & FrontSetSerial
tmpCmdMessage = "[" & Commander & " " & Factory & "," & UseSerial & "," & ProdCode & "," & Country & "," & Agency & "]" + vbCrLf
If SendData(tmpCmdMessage) Then
Return False
End If
retVal = PollingReceiveData(2000)
If retVal <> Factory.ToLower & "," & UseSerial & "," & ProdCode & "," & Country & "," & Agency Then
Return False
End If
Return True
End Function
Private Function FirmWareCheck() As String
Const Commander As String = "dsfwver"
Dim retval As String
tmpCmdMessage = "[" & Commander & "]" + vbCrLf
If SendData(tmpCmdMessage) Then
Return "FAIL"
End If
retval = PollingReceiveData(1000)
If InStr(1, retval, ".") > 0 Then
Return retval
Else
Return "NULL"
End If
End Function
Private Function FreqCompare(FreqData As String) As Boolean
If UBound(Split(FreqData, ",")) = 1 Then
Dim FreqValue As String = Mid(FreqData, 1, InStr(FreqData, ",") - 1)
Dim PowerValue As String = Mid(FreqData, InStr(FreqData, ",") + 1, FreqData.Length)
If FreqValue = TDData(SearchList.Frequency) Then
If PowerValue = TDData(SearchList.Power) Then
Return False
End If
End If
Return True
Else
MsgBox("잘못된 형식의 주파수 값입니다. 연결을 확인하여 주십시오.", vbExclamation)
Return True
End If
End Function
Private Function TDCodeSearch() As String
Dim retVal As String
tmpCmdMessage = "settdsn"
cmdMessage = "[" & tmpCmdMessage & "]" + vbCrLf
If SendData(cmdMessage) Then
Return "1"
End If
retVal = PollingReceiveData(500)
If retVal.Length = TDMaxLength Then
Return retVal
Else
Return "0"
End If
End Function
Private Function FreqPowerReg(Freq As String, Power As String) As String
Const Commander As String = "settdcnf"
Dim Retval As String
tmpCmdMessage = "[" & Commander & " " & Freq & "," & Power & "]" + vbCrLf
If SendData(tmpCmdMessage) Then
Return "FAIL"
End If
Retval = PollingReceiveData(500)
If InStr(1, Retval, ",") > 0 Then
Return Retval
Else
Return "NULL"
End If
End Function
Private Function FreqPowerSearch() As String
Const Commander As String = "settdcnf"
Dim Retval As String
tmpCmdMessage = "[" & Commander & "]" + vbCrLf
If SendData(tmpCmdMessage) Then
Return "FAIL"
End If
Retval = PollingReceiveData(500)
If InStr(1, Retval, ",") > 0 Then
Return Retval
Else
Return "NULL"
End If
End Function
Private Function ShotReg(shot As Integer) As String
Const Commander As String = "shotconf"
Dim retval As String
tmpCmdMessage = "[" & Commander & " " & shot & "]" + vbCrLf
If SendData(tmpCmdMessage) Then
Return False
End If
retval = PollingReceiveData(1000)
If retval = shot.ToString Then
Return True
End If
Return False
End Function
Private Function ShotSearch() As String
Const Commander As String = "shotconf"
Dim RetVal As String = "-1"
tmpCmdMessage = "[" & Commander & "]" + vbCrLf
If SendData(tmpCmdMessage) Then
Return "False"
End If
RetVal = PollingReceiveData(1500)
Return RetVal
End Function
Private Function PollingReceiveData(RdTimeout As Long) As String
Try
rxMessage = ""
If PortSerial.IsOpen = True Then
PortSerial.ReadTimeout = RdTimeout
rxMessage = PortSerial.ReadLine()
Return ParsingData(False)
Else
ThreadSwitch = False
MsgBox("통신 포트가 열리지 않았습니다.", vbCritical)
Return True
End If
Catch ex As Exception
Return Err.Description
End Try
End Function
Private Function ParsingData(CmdInclude As Boolean) As String
Dim cmdStr As String
Dim cmdVal(0 To 6) As String
Dim i As Integer
Try
cmdStr = "0"
If rxMessage <> "" Then
cmdMessage = ""
If Mid(rxMessage, 1, 1) = "[" Then
cmdMessage = Mid(rxMessage, 2, Len(rxMessage))
cmdStr = Mid(cmdMessage, 1, (InStr(rxMessage, " ") - 2))
cmdMessage = Mid(rxMessage, InStr(rxMessage, " ") + 1, Len(cmdMessage))
For i = 1 To 5
If InStr(cmdMessage, ",") <> 0 Then
cmdVal(i) = Mid(cmdMessage, 1, InStr(cmdMessage, ",") - 1)
cmdMessage = Mid(cmdMessage, InStr(cmdMessage, ",") + 1, Len(cmdMessage))
ElseIf InStr(cmdMessage, "]") <> 0 Then
cmdVal(i) = Mid(cmdMessage, 1, InStr(cmdMessage, "]") - 1)
Else
Exit For
End If
Next i
rxMessage = ""
Select Case cmdStr
Case "dsfwver"
cmdStr = cmdVal(1)
Return cmdStr
Case "freqconf"
cmdStr = cmdVal(1)
Return cmdStr
Case "settdcnf"
cmdStr = (cmdVal(1) & "," & cmdVal(2))
Return cmdStr
Case "wrsconf1"
cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5)
Return cmdStr
Case "settdsn"
cmdStr = cmdVal(1)
Return cmdStr
Case "resetinf"
cmdStr = cmdVal(1)
Return cmdStr
Case "rdsconf1"
cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5)
Return cmdStr
Case "shotconf"
cmdStr = cmdVal(1)
Return cmdStr
Case "setdepth"
cmdStr = cmdVal(1)
Return cmdStr
Case "setmotor"
cmdStr = cmdVal(1) & "," & cmdVal(2) & "," & cmdVal(3) & "," & cmdVal(4) & "," & cmdVal(5)
Return cmdStr
Case Else
Return "Else"
rxMessage = ""
End Select
End If
rxMessage = ""
Return True
Else
Return False
End If
Catch ex As Exception
rxMessage = ""
Return Err.Description
End Try
End Function
Private Function SendData(SendMessage As String) As Boolean
Try
If PortSerial.IsOpen = True Then
PortSerial.DiscardInBuffer()
PortSerial.DiscardOutBuffer()
If PortSerial.BytesToRead Then
PortSerial.DiscardInBuffer()
End If
PortSerial.WriteTimeout = -1
PortSerial.WriteLine(SendMessage)
Else
ThreadSwitch = False
MsgBox("통신 포트가 열리지 않았습니다.")
Return True
End If
Catch ex As Exception
Return True
End Try
Return False
End Function
Private Sub TDRecycleFunc(sender As Object, e As EventArgs, SearchData As String)
DataReset()
SerialNum = String.Empty
If SearchData.Length > TDMaxLength Or SearchData.Length < TDMinLength Then
MsgBox("잘못된 TD 번호입니다. 인쇄된 번호를 확인하여 주십시오.", vbExclamation)
GoTo FailFunc
End If
If TDExist(SearchData) Then
MsgBox("TD 데이터가 존재하지 않습니다. 확인하여 주십시오.", vbExclamation)
GoTo FailFunc
End If
If TDSearch(SearchData) Then
GoTo FailFunc
End If
For i = SearchList.TestStep To SearchList.maxList - 1
If i = SearchList.TestStep Then
TDDataTxb(i).Text = TestStepParsing()
If TDDataTxb(i).Text = "NULL" Then
TDDataTxb(i).BackColor = Color.Red
Else
TDDataTxb(i).BackColor = Color.Green
End If
Else
TDDataTxb(i).Text = TDData(i)
End If
Next
SerialNum = SearchData
If ckbAutoFunc.Checked = True Then
btnReDel_Click(sender, e)
Else
RunStateFunc("성 공", Color.Green)
End If
Exit Sub
FailFunc:
RunStateFunc("실 패", Color.Red)
End Sub
Private Function TDSearch(SearchData As String) As Boolean
Try
DBCmd = "SELECT TestStep,Ct_Power,Ct_Motor_Lv,PV_SN,PV_Date,PV_Frequency,QC_Date,QC_Capacitor,QC_Grade FROM " & ApplyCartDB & " WHERE PV_SN = '" & SearchData & "'"
If DBQueryReader(DBCmd) Then
For i = SearchList.TestStep To SearchList.maxList - 1
TDData(i) = sqlDataQuery(i)
Next
Else
MsgBox("TD 데이터가 존재하지 않습니다.", vbExclamation)
Return True
End If
Return False
Catch ex As Exception
MsgBox("TD 데이터를 불러오는 도중 오류가 발생하였습니다. :: " & vbCrLf & ex.Message, vbCritical)
Return True
End Try
End Function
Private Function TDExist(SearchData As String) As Boolean
Try
If TDUseCompare = True Then
DBCmd = "SELECT COUNT(NUMBER) FROM " & ApplyCartDB & " WHERE PV_SN = '" & SearchData & "'"
Else
DBCmd = "SELECT COUNT(NUMBER) FROM " & ApplyNonTDDB & " WHERE PV_SN = '" & SearchData & "'"
End If
Dim DataExist As Int16 = DBQueryScalar(DBCmd)
If DataExist = 1 Then
Return False
Else
Return True
End If
Catch ex As Exception
MsgBox("TD 데이터 확인 중 오류가 발생하였습니다. :: " & vbCrLf & ex.Message, vbCritical)
Return True
End Try
End Function
Private Sub StepReset()
For i = SearchList.TestStep To SearchList.maxList - 1
TDData(i) = String.Empty
With TDDataTxb(i)
.Text = "대기"
.BackColor = Color.White
End With
Next
With txbPDNum
.Text = "대기"
.Font = New Font("함초롱바탕", 48, FontStyle.Bold)
.ForeColor = Color.Black
End With
End Sub
Private Sub DataReset()
StepReset()
If NowMode = ModeList.Prod_Input Then
With txbPDModel
.Text = "대기"
.BackColor = Color.White
.ForeColor = Color.Black
End With
With txbPDType
.Text = "대기"
.BackColor = Color.White
.ForeColor = Color.Black
End With
With txbPDCC
.Text = "대기"
.BackColor = Color.White
.ForeColor = Color.Black
End With
With txbPDAgency
.Text = "대기"
.BackColor = Color.White
.ForeColor = Color.Black
End With
With txbPDCP
.Text = "대기"
.BackColor = Color.White
.ForeColor = Color.Black
End With
With txbPDColor
.Text = "대기"
.BackColor = Color.White
.ForeColor = Color.Black
End With
cboPDInfo.SelectedIndex = -1
cboPDInfo.Text = "SELECT!"
End If
End Sub
Private Function TestStepParsing() As String
Select Case TDData(SearchList.TestStep)
Case "11"
Return "TD 검사 합격"
Case "12"
Return "TD 검사 불합격"
Case "13"
Return "TD 검사 재측정 합격"
Case "14"
Return "TD 검사 재측정 불합격"
Case "15"
Return "재사용 TD"
Case "16"
Return "납땜 합격"
Case "17"
Return "납땜 불합격"
Case "18"
Return "납땜 재측정 합격"
Case "19"
Return "납땜 재측정 불합격"
Case "21"
Return "HIFU 합격"
Case "22"
Return "HIFU 불합격"
Case "23"
Return "파형검사 합격"
Case "24"
Return "파형검사 불합격"
Case "25"
Return "HIFU 재측정 합격"
Case "26"
Return "HIFU 재측정 불합격"
Case "27"
Return "파형검사 재측정 합격"
Case "28"
Return "파형검사 재측정 불합격"
Case "30"
Return "정보 입력 불합격"
Case "31"
Return "양산 합격"
Case "32"
Return "양산 합격"
Case "41"
Return "반품 진행"
Case Else
Return "NULL"
End Select
End Function
Private Sub btnReDel_Click(sender As Object, e As EventArgs) Handles btnReDel.Click
NowDate = Format(Now, "yyyy-MM-dd")
NowTime = Format(Now, "HH:mm:ss")
If SerialNum = String.Empty Then
MsgBox("삭제할 데이터가 존재하지 않습니다. TD 데이터를 검색하여 주십시오.", vbExclamation)
GoTo FailFunc
End If
If TestDelete(ApplyHFTestDB) Then
MsgBox("삭제 도중 문제가 발생했습니다.", vbCritical)
GoTo FailFunc
End If
If TestDelete(ApplyRFTestDB) Then
MsgBox("삭제 도중 문제가 발생했습니다.", vbCritical)
GoTo FailFunc
End If
If DeleteData() Then
MsgBox("삭제 도중 문제가 발생했습니다.", vbCritical)
GoTo FailFunc
End If
If TDData(SearchList.TestStep) <> "15" Then
If TodayCountSet(True) Then
GoTo FailFunc
End If
End If
txbPVSN.Enabled = False
txbPVSN.Text = "삭제 성공"
txbPVSN.BackColor = Color.Green
txbPVSN.Enabled = True
txbPVSN.Focus()
Exit Sub
FailFunc:
RunStateFunc("삭제 실패", Color.Red)
End Sub
Private Function TestDelete(DBTable As String) As Boolean
DBCmd = "SELECT COUNT(PV_SN) FROM " & DBTable & " WHERE PV_SN = '" & SerialNum & "'"
Dim DBResult As Int16 = DBQueryScalar(DBCmd)
If DBResult > 0 Then
DBCmd = "DELETE FROM " & DBTable & " WHERE PV_SN = '" & SerialNum & "' "
If DBCommand(DBCmd) = False Then
Return True
End If
End If
Return False
End Function
Private Function DeleteData() As String
DBCmd = "UPDATE " & ApplyCartDB & " SET TestStep = '15', Product_SN = NULL, Ct_Manufacture_Name = NULL, Ct_Manufacture_Year = NULL, Ct_Manufacture_Month = NULL, Ct_SN = NULL, Ct_Abroad = NULL, Ct_Agency = NULL, Ct_Frequency = NULL, Ct_Max_ShotCnt = NULL, Ct_Remain_ShotCnt = NULL, P0_Date = NULL, P0_Time = NULL, P0_Model = NULL, P0_Type = NULL, P1_Date = NULL, P1_Time = NULL, P1_Model = NULL, P1_CartType = NULL, P1_Frequency = NULL, P3_DateTime = NULL, LastQC_Date = NULL,LastQC_Time = NULL, Delete_Date = '" & NowDate & "', Delete_Time = '" & NowTime & "', Delete_TestStep = '" & TDData(SearchList.TestStep) & "' WHERE PV_SN = '" & SerialNum & "'"
If DBCommand(DBCmd) Then
Return False
Else
Return True
End If
End Function
Private Function TodayCountUpdate() As Boolean
Select Case NowMode
Case ModeList.Prod_Input
If ModelCode = 3 Then
DBCmd = "UPDATE " & ApplyPD1CntDB & " SET PD1_InfoTotalCnt = '" & CountSelect(CountList.Total) & "', PD1_InfoMaxOk = '" & CountSelect(CountList.Success) & "', PD1_InfoMaxNg = '" & CountSelect(CountList.Fail) & "' WHERE PD1_Date = '" & NowDate & "'"
ElseIf ModelCode = 5 Then
DBCmd = "UPDATE " & ApplyPD1CntDB & " SET PD1_InfoTotalCnt = '" & CountSelect(CountList.Total) & "', PD1_InfoAltoOk = '" & CountSelect(CountList.Success) & "', PD1_InfoAltoNg = '" & CountSelect(CountList.Fail) & "' WHERE PD1_Date = '" & NowDate & "'"
ElseIf ModelCode = 6 Then
DBCmd = "UPDATE " & ApplyPD1CntDB & " SET PD1_InfoTotalCnt = '" & CountSelect(CountList.Total) & "', PD1_InfoEffectOk = '" & CountSelect(CountList.Success) & "', PD1_InfoEffectNg = '" & CountSelect(CountList.Fail) & "' WHERE PD1_Date = '" & NowDate & "'"
2025-07-16 10:39:32 +09:00
ElseIf ModelCode = 7 Then
DBCmd = "UPDATE " & ApplyPD1CntDB & " SET PD1_InfoTotalCnt = '" & CountSelect(CountList.Total) & "', PD1_InfoMaxAlphaOk = '" & CountSelect(CountList.Success) & "', PD1_InfoMaxAlphaNg = '" & CountSelect(CountList.Fail) & "' WHERE PD1_Date = '" & NowDate & "'"
2025-06-25 11:19:00 +09:00
Else
MsgBox("수량 업데이트, 잘못된 경로입니다.", vbCritical)
Return True
End If
Case ModeList.TDRecycle
DBCmd = "UPDATE " & ApplyPD1CntDB & " SET PD1_RecycleCnt = '" & CountSelect(CountList.Total) & "' WHERE PD1_Date = '" & NowDate & "'"
Case Else
MsgBox("수량 업데이트, 잘못된 경로입니다.", vbCritical)
Return True
End Select
If DBCommand(DBCmd) Then
Return False
Else
Return True
End If
End Function
Private Function TodayCountLoad() As Boolean
Select Case NowMode
Case ModeList.Prod_Input
If ModelCode = "3" Then
DBCmd = "SELECT PD1_InfoTotalCnt,PD1_InfoMaxOk,PD1_InfoMaxNg FROM " & ApplyPD1CntDB & " WHERE PD1_Date = '" & NowDate & "'"
ElseIf ModelCode = "5" Then
DBCmd = "SELECT PD1_InfoTotalCnt,PD1_InfoAltoOk,PD1_InfoAltoNg FROM " & ApplyPD1CntDB & " WHERE PD1_Date = '" & NowDate & "'"
ElseIf ModelCode = "6" Then
DBCmd = "SELECT PD1_InfoTotalCnt,PD1_InfoEffectOk,PD1_InfoEffectNg FROM " & ApplyPD1CntDB & " WHERE PD1_Date = '" & NowDate & "'"
2025-07-16 10:39:32 +09:00
ElseIf ModelCode = "7" Then
DBCmd = "SELECT PD1_InfoTotalCnt,PD1_InfoMaxAlphaOk,PD1_InfoMaxAlphaNg FROM " & ApplyPD1CntDB & " WHERE PD1_Date = '" & NowDate & "'"
2025-06-25 11:19:00 +09:00
Else
MsgBox("수량 카운터 잘못된 경로입니다.", vbCritical)
Return True
End If
Case ModeList.TDRecycle
DBCmd = "SELECT PD1_RecycleCnt,'0','0' FROM " & ApplyPD1CntDB & " WHERE PD1_Date = '" & NowDate & "'"
Case Else
MsgBox("수량 카운터 잘못된 경로입니다.", vbCritical)
Return True
End Select
If DBQueryReader(DBCmd) Then
For i = 0 To CountList.maxCount - 1
CountSelect(i) = sqlDataQuery(i)
Next
Else
Return True
End If
Return False
End Function
Private Function TodayCountCreate() As Boolean
DBCmd = "SELECT COUNT(NUMBER) FROM " & ApplyPD1CntDB & " WHERE PD1_Date = '" & NowDate & "'"
If DBQueryScalar(DBCmd) = 0 Then
DBCmd = "INSERT INTO " & ApplyPD1CntDB & "(PD1_Date) VALUES('" & NowDate & "')"
If DBCommand(DBCmd) = False Then
Return True
End If
End If
Return False
End Function
Private Sub RunStateFunc(OutputText As String, ApplyColor As Color)
txbPVSN.Enabled = False
txbPVSN.Text = OutputText
txbPVSN.BackColor = ApplyColor
txbPVSN.Enabled = True
txbPVSN.Focus()
End Sub
Private Sub txbReFreq_GotFocus(sender As Object, e As EventArgs) Handles txbReFreq.GotFocus, txbReSerial.GotFocus, txbReCValue.GotFocus, txbReGrade.GotFocus, txbRePower.GotFocus, txbReMotor.GotFocus, txbReInput.GotFocus, txbReTest.GotFocus, txbReOrder.GotFocus, txbDayCount.GotFocus, txbTDNum.GotFocus, txbTDFreq.GotFocus, txbTDGrade.GotFocus, txbTDPower.GotFocus, txbTDDepth.GotFocus, txbTDIDate.GotFocus, txbTDStep.GotFocus, txbPDNum.GotFocus, txbPDModel.GotFocus, txbPDType.GotFocus, txbPDCC.GotFocus, txbPDAgency.GotFocus, txbPDCP.GotFocus, txbPDVersion.GotFocus, txbAllCount.GotFocus, txbSucCount.GotFocus, txbFailCount.GotFocus
txbPVSN.Focus()
txbPVSN.Select(txbPVSN.Text.Length, 0)
End Sub
Private Sub btnOption_Click(sender As Object, e As EventArgs) Handles btnOption.Click, btnOpExit.Click
TimerFalse()
If pnMain.Visible = True Then
pnMain.Visible = False
pnMain.Enabled = False
pnOption.Visible = True
pnOption.Enabled = True
pnOption.Location = New Point(0, 0)
pnMain.Location = New Point(1920, 0)
btnPtRefresh_Click(sender, e)
Else
If OptionChange = True Then
If MsgBox("변경된 설정이 존재합니다. 저장하시겠습니까?", vbOKCancel + vbExclamation) = MsgBoxResult.Ok Then
btnOpSave_Click(sender, e)
End If
End If
Print_Activate()
pnMain.Visible = True
pnMain.Enabled = True
pnOption.Visible = False
pnOption.Enabled = False
pnMain.Location = New Point(0, 0)
pnOption.Location = New Point(1920, 0)
End If
txbPVSN.Focus()
End Sub
Private Sub LoadExitReset()
TimerFalse()
ModelCode = String.Empty
TypeCode = String.Empty
ColorCode = String.Empty
ClassCode = String.Empty
TDUseCompare = False
cboPDInfo.SelectedIndex = -1
cboPDInfo.Text = "SELECT!"
With txbPDModel
.Text = "대기"
.Font = New Font("함초롱바탕", 26)
.ForeColor = Color.Black
End With
With txbPDType
.Text = "대기"
.Font = New Font("함초롱바탕", 26)
.ForeColor = Color.Black
End With
With txbPDCC
.Text = "대기"
.Font = New Font("함초롱바탕", 26)
.ForeColor = Color.Black
End With
With txbPDAgency
.Text = "대기"
.Font = New Font("함초롱바탕", 26)
.ForeColor = Color.Black
End With
With txbPDCP
.Text = "대기"
.Font = New Font("함초롱바탕", 26)
.ForeColor = Color.Black
End With
With txbPDColor
.Text = "대기"
.Font = New Font("함초롱바탕", 26)
.ForeColor = Color.Black
End With
With txbPDNum
.Text = "대기"
.Font = New Font("함초롱바탕", 48)
.ForeColor = Color.Black
End With
End Sub
Private Sub cboPDInfo_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboPDInfo.SelectedIndexChanged
Dim SelectData As String = cboPDInfo.SelectedIndex
TimerFalse()
If dgvDataSet.Rows(SelectData).Cells(0).Value = "" Or dgvDataSet.Rows(SelectData).Cells(1).Value = "" Or dgvDataSet.Rows(SelectData).Cells(2).Value = "" Or dgvDataSet.Rows(SelectData).Cells(3).Value = "" Or dgvDataSet.Rows(SelectData).Cells(4).Value = "" Then
MsgBox("존재하지 않는 데이터가 존재합니다. 설정에서 확인하여 주십시오.", vbCritical)
Exit Sub
End If
If ColorSet(SelectData) Then
MsgBox("잘못된 데이터를 불러왔습니다. 설정에서 확인하여 주십시오.", vbCritical)
Exit Sub
End If
ClassCode = dgvDataSet.Rows(SelectData).Cells(6).Value
With txbPDModel
.Text = dgvDataSet.Rows(SelectData).Cells(1).Value
.Font = New Font("함초롱바탕", 26, FontStyle.Bold)
.ForeColor = Color.Blue
End With
With txbPDType
.Text = dgvDataSet.Rows(SelectData).Cells(2).Value
.Font = New Font("함초롱바탕", 26, FontStyle.Bold)
.ForeColor = Color.Blue
End With
With txbPDCC
.Text = dgvDataSet.Rows(SelectData).Cells(3).Value
.Font = New Font("함초롱바탕", 26, FontStyle.Bold)
.ForeColor = Color.Blue
End With
With txbPDAgency
.Text = dgvDataSet.Rows(SelectData).Cells(4).Value
.Font = New Font("함초롱바탕", 26, FontStyle.Bold)
.ForeColor = Color.Blue
End With
With txbPDCP
.Text = txbOpCompany.Text
.Font = New Font("함초롱바탕", 26, FontStyle.Bold)
.ForeColor = Color.Blue
End With
With txbPDColor
.Text = dgvDataSet.Rows(SelectData).Cells(5).Value
.Font = New Font("함초롱바탕", 26, FontStyle.Bold)
.ForeColor = Color.Blue
End With
With txbPDNum
.Text = ClassCode
.Font = New Font("함초롱바탕", 48, FontStyle.Bold)
.ForeColor = Color.Black
End With
txbPVSN.Focus()
End Sub
Private Sub Print_Activate()
For i = PrintList.BoxCode To PrintList.maxPrint - 1
If PrintUseCkb(i).Checked = True Then
PrintActive(i) = True
Else
PrintActive(i) = False
End If
PrintName(i) = PrintUseTxb(i).Text
PrintAddress(i) = PrintUseZip(i).Text
Next
PrintUseCode(PrintList.BoxCode) = txbPtBox_Val1.Text
PrintUseCode(PrintList.ProdLabel) = txbPtProd_Val1.Text
PrintUseText(PrintList.BoxCode) = txbPtBox_Val2.Text
PrintUseText(PrintList.Warranty) = txbPtWar_Val1.Text
PrintUseText(PrintList.ProdLabel) = txbPtProd_Val2.Text
PrintUseDate = txbPtProd_Date.Text
End Sub
Private Sub btnRegReset_Click(sender As Object, e As EventArgs) Handles btnRegReset.Click
txbRegName.Text = String.Empty
txbRegCountry.Text = String.Empty
txbRegAgency.Text = String.Empty
cboClear()
End Sub
Private Sub cboClear()
cboRegModel.SelectedIndex = -1
cboRegModel.Text = "SELECT!"
cboRegType.SelectedIndex = -1
cboRegType.Text = "SELECT!"
cboRegColor.SelectedIndex = -1
cboRegColor.Text = "SELECT!"
cboRegClass.SelectedIndex = -1
cboRegClass.Text = "SELECT!"
End Sub
Private Sub btnRegOK_Click(sender As Object, e As EventArgs) Handles btnRegOK.Click
If txbRegName.Text = "" Then
MsgBox("구분명을 입력하지 않으셨습니다. 확인하여 주십시오.", vbExclamation)
txbRegName.Focus()
Else
If cboRegModel.SelectedIndex = -1 Then
MsgBox("모델명을 선택하지 않으셨습니다. 확인하여 주십시오.", vbExclamation)
cboRegModel.Focus()
Else
If cboRegType.SelectedIndex = -1 Then
MsgBox("타입명을 선택하지 않으셨습니다. 확인하여 주십시오.", vbExclamation)
cboRegType.Focus()
Else
If cboRegColor.SelectedIndex = -1 Then
MsgBox("색상명을 선택하지 않으셨습니다. 확인하여 주십시오.", vbExclamation)
cboRegColor.Focus()
Else
If cboRegClass.SelectedIndex = -1 Then
MsgBox("분류명을 선택하지 않으셨습니다. 확인하여 주십시오.", vbExclamation)
cboRegClass.Focus()
Else
If txbRegCountry.Text = "" Then
MsgBox("국가코드를 입력하지 않으셨습니다. 확인하여 주십시오.", vbExclamation)
txbRegCountry.Focus()
Else
If txbRegAgency.Text = "" Then
MsgBox("대리점코드를 입력하지 않으셨습니다. 확인하여 주십시오.", vbExclamation)
txbRegAgency.Focus()
Else
dgvDataSet.Rows.Add(txbRegName.Text, cboRegModel.SelectedItem, cboRegType.SelectedItem, txbRegCountry.Text, txbRegAgency.Text, cboRegColor.SelectedItem, ClassNumber(cboRegClass.SelectedIndex))
txbRegName.Text = String.Empty
txbRegCountry.Text = String.Empty
txbRegAgency.Text = String.Empty
OptionChange = True
End If
End If
End If
End If
End If
End If
End If
End Sub
Private Sub txbRegCountry_KeyPress(sender As Object, e As KeyPressEventArgs) Handles txbRegCountry.KeyPress, txbRegAgency.KeyPress
If Not Char.IsDigit(e.KeyChar) And Not Char.IsControl(e.KeyChar) Then
e.Handled = True
End If
End Sub
Private Sub btnRegDel_Click(sender As Object, e As EventArgs) Handles btnRegDel.Click
Dim rowNum As Integer = dgvDataSet.SelectedCells(0).RowIndex
dgvDataSet.Rows.RemoveAt(rowNum)
OptionChange = True
End Sub
Private Sub btnRegADel_Click(sender As Object, e As EventArgs) Handles btnRegADel.Click
If MsgBox("모든 행을 삭제하시겠습니까?", vbOKCancel + vbExclamation) = MsgBoxResult.Ok Then
dgvDataSet.Rows.Clear()
OptionChange = True
End If
End Sub
Private Sub btnOpSave_Click(sender As Object, e As EventArgs) Handles btnOpSave.Click
For i = SaveList.Info To SaveList.MaxSave - 1
If OptionSave(i) Then
OptionLoad(i)
End If
Next
MsgBox("저장완료", vbInformation)
OptionChange = False
End Sub
Private Function OptionSave(SaveType As Int16) As Boolean
Try
Dim SaveData As String = String.Empty
Dim FilePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\Config"
If Dir(FilePath, vbDirectory) = "" Then
MkDir(FilePath)
End If
Dim FileName As String = FilePath & "\" & SaveName(SaveType) & ".ini"
Select Case SaveType
Case SaveList.Info
For i = 0 To dgvDataSet.Rows.Count - 2
Dim RowData As String = dgvDataSet.Rows(i).Cells(0).Value.ToString & "|" & dgvDataSet.Rows(i).Cells(1).Value.ToString & "|" & dgvDataSet.Rows(i).Cells(2).Value.ToString & "|" & dgvDataSet.Rows(i).Cells(3).Value.ToString & "|" & dgvDataSet.Rows(i).Cells(4).Value.ToString & "|" & dgvDataSet.Rows(i).Cells(5).Value.ToString & "|" & dgvDataSet.Rows(i).Cells(6).Value.ToString & "|@"
SaveData = SaveData & RowData
Next
Case SaveList.Config
SaveData = txbOpCompany.Text & "|" & nudPtCount.Value & "|" & cboComPort.SelectedItem & "|" & NowMode & "|" & ckbOpAlto.Checked & "|" & nudTray.Value & "|" & nudSerialCheck.Value & "|"
Case SaveList.Print
SaveData = txbPtBox_Name.Text & "|" & txbPtBox_Label.Text & "|" & txbPtBox_Val1.Text & "|" & txbPtBox_Val2.Text & "|" & txbPtWar_Name.Text & "|" & txbPtWar_Label.Text & "|" & txbPtWar_Val1.Text & "|" & txbPtProd_Name.Text & "|" & txbPtProd_Label.Text & "|" & txbPtProd_Val1.Text & "|" & txbPtProd_Val2.Text & "|" & txbPtProd_Date.Text & "|"
Case Else
MsgBox("잘못된 저장 데이터입니다.", vbCritical)
Return False
End Select
If File.Exists(FileName) = True Then
File.Delete(FileName)
End If
File.WriteAllText(FileName, SaveData, Encoding.UTF8)
Return True
Catch ex As Exception
MsgBox("저장 도중 오류가 발생하였습니다." & vbCrLf & ex.Message, vbCritical)
Return False
End Try
End Function
Private Sub OptionLoad(LoadType As Int16)
Try
Dim ReadData As String = String.Empty
Dim FilePath As String = System.AppDomain.CurrentDomain.BaseDirectory & "\Config"
If Dir(FilePath, vbDirectory) = "" Then
MkDir(FilePath)
End If
Dim FileName As String = FilePath & "\" & SaveName(LoadType) & ".ini"
If File.Exists(FileName) Then
ReadData = File.ReadAllText(FileName, Encoding.UTF8)
If ReadData <> "" Then
Select Case LoadType
Case SaveList.Info
dgvDataSet.Rows.Clear()
For i = UBound(Split(ReadData, "@")) - 1 To 0 Step -1
Dim MdfData As String = Mid(ReadData, 1, InStr(ReadData, "@") - 1)
Dim InfoList(UBound(Split(MdfData, "|")) - 1)
ReadData = Mid(ReadData, InStr(ReadData, "@") + 1, ReadData.Length)
For cnt = 0 To UBound(Split(MdfData, "|")) - 1
InfoList(cnt) = Mid(MdfData, 1, InStr(MdfData, "|") - 1)
MdfData = Mid(MdfData, InStr(MdfData, "|") + 1, MdfData.Length)
Next
dgvDataSet.Rows.Add(InfoList)
Next
cboPDInfo.Items.Clear()
If dgvDataSet.Rows.Count - 2 <> -1 Then
For i = 0 To dgvDataSet.Rows.Count - 2
cboPDInfo.Items.Add(dgvDataSet.Rows(i).Cells(0).Value.ToString)
Next
LoadExitReset()
End If
Case SaveList.Config
For i = 0 To UBound(Split(ReadData, "|")) - 1
Dim MdfData As String = Mid(ReadData, 1, InStr(ReadData, "|") - 1)
ReadData = Mid(ReadData, InStr(ReadData, "|") + 1, ReadData.Length)
Select Case i
Case 0
txbOpCompany.Text = MdfData
Case 1
If IsNumeric(MdfData) Then
If MdfData < 4 And MdfData > 0 Then
nudPtCount.Value = MdfData
Else
MsgBox("인쇄 수량 범위와 맞지 않습니다.", vbCritical)
End If
Else
MsgBox("잘못된 인쇄 수량입니다.", vbCritical)
End If
Case 2
LoadComportName()
Dim RunSwitch As Boolean = False
For cnt = 0 To cboComPort.Items.Count - 1
cboComPort.SelectedIndex = cnt
If MdfData = cboComPort.SelectedItem Then
RunSwitch = True
OpenSerial(MdfData)
Exit For
End If
Next
If RunSwitch = False Then
cboComPort.SelectedIndex = -1
cboComPort.Text = "SELECT!"
End If
Case 3
Select Case MdfData
Case ModeList.Prod_Input
rdbPD2.Checked = True
Case ModeList.TDRecycle
rdbRecycle.Checked = True
Case Else
MsgBox("Mode Load, 잘못된 경로입니다.", vbCritical)
End Select
Case 4
ckbOpAlto.Checked = MdfData
Case 5
If IsNumeric(MdfData) Then
If MdfData < 13 And MdfData > 4 Then
nudTray.Value = MdfData
ReDim RegNumber(nudTray.Value - 1)
Else
MsgBox("Tray 수량 범위와 맞지 않습니다.", vbCritical)
End If
Else
MsgBox("잘못된 Tray 수량입니다.", vbCritical)
End If
Case 6
If IsNumeric(MdfData) Then
If MdfData < 21 And MdfData > 0 Then
nudTray.Value = MdfData
Else
MsgBox("Serial 확인 횟수에 대한 데이터가 맞지 않습니다.", vbCritical)
End If
Else
MsgBox("잘못된 Serial 확인 횟수입니다.", vbCritical)
End If
Case Else
MsgBox("불필요한 데이터가 존재합니다. 저장 내용을 확인하여 주십시오.", vbCritical)
GoTo FailLoad
End Select
Next
Case SaveList.Print
For i = 0 To UBound(Split(ReadData, "|")) - 1
Dim MdfData As String = Mid(ReadData, 1, InStr(ReadData, "|") - 1)
ReadData = Mid(ReadData, InStr(ReadData, "|") + 1, ReadData.Length)
Select Case i
Case 0
txbPtBox_Name.Text = MdfData
Case 1
txbPtBox_Label.Text = MdfData
Case 2
txbPtBox_Val1.Text = MdfData
Case 3
txbPtBox_Val2.Text = MdfData
Case 4
txbPtWar_Name.Text = MdfData
Case 5
txbPtWar_Label.Text = MdfData
Case 6
txbPtWar_Val1.Text = MdfData
Case 7
txbPtProd_Name.Text = MdfData
Case 8
txbPtProd_Label.Text = MdfData
Case 9
txbPtProd_Val1.Text = MdfData
Case 10
txbPtProd_Val2.Text = MdfData
Case 11
txbPtProd_Date.Text = MdfData
Case Else
MsgBox("불필요한 데이터가 존재합니다. 저장 내용을 확인하여 주십시오.", vbCritical)
GoTo FailLoad
End Select
Next
Case Else
MsgBox("잘못된 데이터가 존재합니다. 저장 내용을 확인하여 주십시오.", vbCritical)
GoTo FailLoad
End Select
End If
End If
Exit Sub
Catch ex As Exception
MsgBox("불러오는 도중 오류가 발생하였습니다." & vbCrLf & ex.Message, vbCritical)
GoTo FailLoad
End Try
FailLoad:
End Sub
Private Sub rdbAllPnt_CheckedChanged(sender As Object, e As EventArgs) Handles rdbAllPnt.CheckedChanged, rdbEachPnt.CheckedChanged
If rdbAllPnt.Checked = True Then
gbPrintEach.Enabled = False
ckbBoxPnt.Checked = True
ckbWarPnt.Checked = True
ckbProdPnt.Checked = True
Else
gbPrintEach.Enabled = True
ckbBoxPnt.Checked = False
ckbWarPnt.Checked = False
ckbProdPnt.Checked = False
End If
End Sub
Private Sub btnPtBox_Ch1_Click(sender As Object, e As EventArgs) Handles btnPtBox_Ch1.Click, btnPtWar_Ch1.Click, btnPtProd_Ch1.Click
If dgvPrinter.Rows.Count - 2 = -1 Then
MsgBox("연결된 프린터 항목을 알 수 없습니다." & vbCrLf & " 연결을 확인하여 주십시오.", vbCritical)
Exit Sub
End If
Dim SelectRow As DataGridViewRow = dgvPrinter.SelectedRows(0)
Dim PrintName As String = SelectRow.Cells(0).Value.ToString
Dim NowButton As String = CType(sender, Button).Name
Select Case NowButton
Case "btnPtBox_Ch1"
txbPtBox_Name.Text = PrintName
Case "btnPtWar_Ch1"
txbPtWar_Name.Text = PrintName
Case "btnPtProd_Ch1"
txbPtProd_Name.Text = PrintName
Case Else
MsgBox("잘못된 경로입니다.", vbCritical)
End Select
End Sub
Private Sub btnPtBox_Ch2_Click(sender As Object, e As EventArgs) Handles btnPtBox_Ch2.Click, btnPtWar_Ch2.Click, btnPtProd_Ch2.Click
Dim FileAddress As String = OpenFile()
If FileAddress <> "fail" Then
Dim NowButton As String = CType(sender, Button).Name
Select Case NowButton
Case "btnPtBox_Ch2"
txbPtBox_Label.Text = FileAddress
Case "btnPtWar_Ch2"
txbPtWar_Label.Text = FileAddress
Case "btnPtProd_Ch2"
txbPtProd_Label.Text = FileAddress
Case Else
MsgBox("잘못된 경로입니다.", vbCritical)
End Select
End If
End Sub
Private Function OpenFile() As String
Dim ofd As OpenFileDialog = New OpenFileDialog
ofd.Title = "라벨 파일 주소 불러오기"
ofd.FileName = ""
ofd.Filter = "라벨 파일(*.lbx) | *.lbx"
Dim dr As DialogResult = ofd.ShowDialog
If dr = DialogResult.OK Then
Return ofd.FileName
End If
Return "fail"
End Function
Private Function TodayCountSet(OkNg As Boolean) As Boolean
If TodayCountCreate() Then
MsgBox("수량 카운터를 생성하는 도중 오류가 발생하였습니다.", vbCritical)
Return True
End If
If TodayCountLoad() Then
MsgBox("수량 카운터를 불러오는 도중 오류가 발생하였습니다.", vbCritical)
Return True
End If
CountUpdate(OkNg)
If TodayCountUpdate() Then
MsgBox("수량 카운터를 업데이트하는 도중 오류가 발생하였습니다.", vbCritical)
Return True
End If
CountSetting()
Return False
End Function
Private Sub CountUpdate(OkNg)
Select Case NowMode
Case ModeList.Prod_Input
CountSelect(CountList.Total) += 1
If OkNg = True Then
If TDData(SearchList.TestStep) = "30" Then
CountSelect(CountList.Fail) -= 1
End If
CountSelect(CountList.Success) += 1
Else
CountSelect(CountList.Fail) += 1
End If
Case ModeList.TDRecycle
If OkNg = True Then
CountSelect(CountList.Total) += 1
End If
Case Else
MsgBox("수량 카운터 출력 잘못된 경로입니다.", vbCritical)
End Select
End Sub
Private Sub CountSetting()
Select Case NowMode
Case ModeList.Prod_Input
txbAllCount.Text = CountSelect(CountList.Total)
txbSucCount.Text = CountSelect(CountList.Success)
txbFailCount.Text = CountSelect(CountList.Fail)
Case ModeList.TDRecycle
txbDayCount.Text = CountSelect(CountList.Total)
Case Else
MsgBox("수량 카운터 출력 잘못된 경로입니다.", vbCritical)
End Select
End Sub
Private Sub NowRegCheck()
Try
Const LimitCheck As Int16 = 5
Const RowCount As Int16 = 3
dgvNowReg.Rows.Clear()
DBCmd = "SELECT Product_SN,DATE_FORMAT(P3_DateTime,'%Y-%m-%d') AS d, DATE_FORMAT(P3_DateTime,'%H:%i:%s') AS t FROM " & ApplyCartDB & " WHERE TestStep > '30' ORDER BY P3_DateTime DESC LIMIT " & LimitCheck & ""
If DBQueryReader(DBCmd) Then
Dim RunCount As Int32 = 0
Dim dgvData(RowCount - 1) As String
For i = 0 To sqlDataQuery.Length - 1
dgvData(i Mod RowCount) = sqlDataQuery(RunCount)
If i Mod RowCount = RowCount - 1 Then
dgvNowReg.Rows.Add(dgvData)
End If
RunCount += 1
Next
End If
Catch ex As Exception
MsgBox("등록 현황 오류 발생 ! " & vbCrLf & ex.Message)
End Try
End Sub
Private Sub btnPtRefresh_Click(sender As Object, e As EventArgs) Handles btnPtRefresh.Click
List_Refreash(dgvPrinter)
End Sub
Private Sub MainForm_Click(sender As Object, e As EventArgs) Handles MyBase.Click
txbPVSN.Focus()
End Sub
Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click
btnReset.Enabled = False
TimerFalse()
StepReset()
ValueReset()
txbPDNum.Text = ClassCode
txbPVSN.Text = ""
txbPVSN.BackColor = Color.White
NowRegCheck()
StartCountSetting()
btnReset.Enabled = True
End Sub
Private Sub TimerFalse()
RunTimer.Enabled = False
ThreadStop = True
End Sub
Private Sub txbPVSN_KeyDown(sender As Object, e As KeyEventArgs) Handles txbPVSN.KeyDown
If chbAutoMeasure.Checked = False Then
If e.KeyCode = Keys.Return Then
btnEnter_Click(sender, New System.EventArgs)
End If
End If
End Sub
Private Sub ckbDBServer_CheckedChanged(sender As Object, e As EventArgs) Handles ckbDBServer.CheckedChanged
ServerChanger(ckbDBServer.Checked)
End Sub
Private Sub TraySerialSetting()
Dim NewData As Boolean = False
Dim NowYear As Int16 = Format(Now, "yy")
Dim NowMonth As Int16 = Format(Now, "MM")
TrayDataReset()
If BeforeTrayData(NowYear, NowMonth) Then
If BeforeTrayLoad(NowYear, NowMonth) Then
If BeforeTrayState() Then
NewData = False
Else
NewData = True
End If
Else
NewData = True
End If
Else
If NewInfoRegData(NowYear, NowMonth) Then
MsgBox("데이터베이스에 데이터를 생성할 수 없습니다.", vbCritical)
Exit Sub
End If
NewData = True
End If
If NewData = True Then
Dim MinResult As String = SerialMaxSearch(NowYear, NowMonth)
If MinResult = "0" Then
Dim CtMax As String = CtNumMaxSearch(NowYear, NowMonth)
If CtMax = "NULL" Then
Exit Sub
End If
If CtMax = "0" Then
MinResult = ClassCode & ColorCode & "0000"
Else
MinResult = CtMax
End If
End If
MinResult = Val(MinResult) + 1
If MAXResultSetting(MinResult, NowYear, NowMonth) Then
Exit Sub
End If
End If
TrayNowState()
End Sub
Private Sub TrayDataReset()
txbTrayMax.Text = String.Empty
txbTrayMin.Text = String.Empty
txbNowNum.Text = String.Empty
End Sub
Private Function CtNumMaxSearch(NowYear As Int16, NowMonth As Int16) As String
If TDUseCompare = True Then
DBCmd = "SELECT IFNULL(max(Ct_SN),0) FROM " & ApplyCartDB & " WHERE Ct_Manufacture_Year = '" & NowYear & "' AND Ct_Manufacture_Month = '" & NowMonth & "' AND Ct_SN LIKE '" & ClassCode & ColorCode & "%' AND Ct_Model = '" & txbPDModel.Text & "' AND Ct_SN > 100000 AND (Ct_Type = '" & txbPDType.Text & "' OR Ct_Type = 'SET')"
Else
DBCmd = "SELECT IFNULL(max(Ct_SN),0) FROM " & ApplyNonTDDB & " WHERE Ct_Manufacture_Year = '" & NowYear & "' AND Ct_Manufacture_Month = '" & NowMonth & "' AND Ct_SN LIKE '" & ClassCode & ColorCode & "%' AND Ct_Model = '" & txbPDModel.Text & "' AND Ct_SN > 100000 AND (Ct_Type = '" & txbPDType.Text & "' OR Ct_Type = 'SET')"
End If
Dim CtMaxResult As String = DBQueryScalar(DBCmd)
If CtMaxResult = "False" Then
MsgBox("최대값을 불러올 수 없습니다.", vbCritical)
Return "NULL"
End If
If CtMaxResult = "" Then
Return "0"
Else
Return CtMaxResult
End If
End Function
Private Function NewInfoRegData(NowYear As Int16, NowMonth As Int16) As Boolean
DBCmd = "INSERT INTO " & InfoRegStateDB & "(UserID,ModelNum,TypeNum,ColorNum,UsageNum,CreateYear,CreateMonth) VALUES('" & IDName & "','" & ModelCode & "','" & TypeCode & "','" & ColorCode & "','" & ClassCode & "','" & NowYear & "','" & NowMonth & "')"
If DBCommand(DBCmd) Then
Return False
Else
Return True
End If
End Function
Private Function MAXResultSetting(MinResult As String, NowYear As Int16, NowMonth As Int16) As Boolean
Dim CheckOkNg As Boolean
Dim RunCount As Int32 = nudTray.Value - 1
Dim SearchYear As String = Format(Now, "yy")
Dim SearchDate As String = Format(Now, "MM")
ReDim TrayData(TrayDataList.State, RunCount)
If ResetTrayData(NowYear, NowMonth) Then
Return True
End If
For tay = 0 To RunCount
CheckOkNg = False
'For chk = 0 To nudSerialCheck.Value - 1
' DBCmd = "SELECT COUNT(Ct_SN) FROM " & ApplyCartDB & " WHERE Ct_Manufacture_Year = '" & SearchYear & "' AND Ct_Manufacture_Month = '" & SearchDate & "' and Ct_SN = '" & MinResult & "' AND Ct_Model = '" & txbPDModel.Text & "' AND Ct_Type = '" & txbPDType.Text & "'"
' Dim CtCount As String = DBQueryScalar(DBCmd)
' If CtCount = "False" Then
' MsgBox("시리얼 번호를 등록할 수 없습니다.", vbCritical)
' Return True
' End If
' If CtCount > 0 Then
' MinResult += 1
' Else
' TrayData(TrayDataList.NumData, tay) = MinResult
' TrayData(TrayDataList.State, tay) = "0"
' If TrayDataUpdate(tay) Then
' MsgBox("Tray Data를 입력하는 도중 오류가 발생하였습니다.", vbCritical)
' Return True
' End If
' CheckOkNg = True
' Exit For
' End If
'Next
'If CheckOkNg = False Then
' MsgBox("Serial Number 를 DB에 입력하지 못했습니다.", vbCritical)
' Return True
'End If
TrayData(TrayDataList.NumData, tay) = MinResult
TrayData(TrayDataList.State, tay) = "0"
If TrayDataUpdate(tay, NowYear, NowMonth) Then
MsgBox("Tray Data를 입력하는 도중 오류가 발생하였습니다.", vbCritical)
Return True
End If
If tay = RunCount Then
If TrayMaxUpdate(tay, NowYear, NowMonth) Then
Return False
Else
MsgBox("Serial Number 를 DB에 입력하지 못했습니다.", vbCritical)
Return True
End If
End If
MinResult += 1
Next
MsgBox("Data를 전부 다 처리하지 못했습니다.", vbCritical)
Return True
End Function
Private Function TrayMaxUpdate(TrayNumber As Int32, NowYear As Int16, NowMonth As Int16) As Boolean
DBCmd = "UPDATE " & InfoRegStateDB & " SET MaxNum = '" & TrayData(TrayDataList.NumData, TrayNumber) & "' WHERE UserID = '" & IDName & "' AND ModelNum = '" & ModelCode & "' AND TypeNum = '" & TypeCode & "' AND ColorNum = '" & ColorCode & "' AND UsageNum = '" & ClassCode & "' AND CreateYear = '" & NowYear & "' AND CreateMonth = '" & NowMonth & "'"
If DBCommand(DBCmd) Then
Return True
Else
Return False
End If
End Function
Private Function TrayDataUpdate(UpdateData As Int16, NowYear As Int16, NowMonth As Int16) As Boolean
Dim DBUpdateCnt As String = UpdateData + 1
Dim UpdateCmd As String = "Tray" & DBUpdateCnt & "Num = '" & TrayData(TrayDataList.NumData, UpdateData) & "', Tray" & DBUpdateCnt & "State = '" & TrayData(TrayDataList.State, UpdateData) & "'"
DBCmd = "UPDATE " & InfoRegStateDB & " SET " & UpdateCmd & " WHERE UserID = '" & IDName & "' AND ModelNum = '" & ModelCode & "' AND TypeNum = '" & TypeCode & "' AND ColorNum = '" & ColorCode & "' AND UsageNum = '" & ClassCode & "' AND CreateYear = '" & NowYear & "' AND CreateMonth = '" & NowMonth & "'"
If DBCommand(DBCmd) Then
Return False
Else
Return True
End If
End Function
Private Function ResetTrayData(NowYear As Int16, NowMonth As Int16) As Boolean
DBCmd = "UPDATE " & InfoRegStateDB & " SET MaxNum = 0, Tray1Num = 0, Tray1State = 0, Tray2Num = 0, Tray2State = 0, Tray3Num = 0, Tray3State = 0, Tray4Num = 0, Tray4State = 0, Tray5Num = 0, Tray5State = 0, Tray6Num = 0, Tray6State = 0, Tray7Num = 0, Tray7State = 0, Tray8Num = 0, Tray8State = 0, Tray9Num = 0, Tray9State = 0, Tray10Num = 0, Tray10State = 0, Tray11Num = 0, Tray11State = 0, Tray12Num = 0, Tray12State = 0 WHERE UserID = '" & IDName & "' AND ModelNum = '" & ModelCode & "' AND TypeNum = '" & TypeCode & "' AND ColorNum = '" & ColorCode & "' AND UsageNum = '" & ClassCode & "' AND CreateYear = '" & NowYear & "' AND CreateMonth = '" & NowMonth & "'"
If DBCommand(DBCmd) Then
Return False
Else
Return True
End If
End Function
Private Function SerialMaxSearch(NowYear As Int16, NowMonth As Int16) As String
DBCmd = "SELECT ifnull(max(MaxNum),0) FROM " & InfoRegStateDB & " WHERE ModelNum = '" & ModelCode & "' AND TypeNum = '" & TypeCode & "' AND ColorNum = '" & ColorCode & "' AND UsageNum = '" & ClassCode & "' AND CreateYear = '" & NowYear & "' AND CreateMonth = '" & NowMonth & "'"
Return DBQueryScalar(DBCmd)
End Function
Private Sub TrayNowState()
txbTrayMin.Text = TrayData(TrayDataList.NumData, 0)
txbTrayMax.Text = TrayData(TrayDataList.NumData, TrayData.GetLength(1) - 1)
For c = 0 To TrayData.GetLength(1) - 1
If TrayData(TrayDataList.State, c) = 0 Then
txbNowNum.Text = TrayData(TrayDataList.NumData, c)
txbNowNum.BackColor = Color.White
txbNowNum.Refresh()
Exit Sub
End If
Next
txbNowNum.Text = "완료"
txbNowNum.BackColor = Color.Green
txbNowNum.Refresh()
End Sub
Private Function BeforeTrayState() As Boolean
For i = 0 To TrayData.GetLength(1) - 1
If TrayData(TrayDataList.NumData, i) = 0 Then
Return False '' 시리얼 번호가 0번일 시 신규 생성
End If
If TrayData(TrayDataList.State, i) = 0 Then
Return True '' 한 개라도 처리 안 한 제품이 있을 시
End If
Next
Return False '' 모두 처리 했을 경우
End Function
Private Function BeforeTrayLoad(NowYear As Int16, NowMonth As Int16) As Boolean
BeforeTrayDBCmd(NowYear, NowMonth)
If DBQueryReader(DBCmd) Then
Dim DataCount As Integer = 0
Dim RowData As Integer = (sqlDataQuery.Length / TrayDataList.maxList) - 1
ReDim TrayData(TrayDataList.State, RowData)
For c = 0 To RowData
For r = 0 To TrayDataList.State
TrayData(r, c) = sqlDataQuery(DataCount)
DataCount += 1
Next
Next
Return True '' 데이터가 있을 경우
Else
Return False '' 데이터가 없을 경우
End If
End Function
Private Sub BeforeTrayDBCmd(NowYear As Int16, NowMonth As Int16)
DBCmd = String.Empty
For i = nudTray.Value To 1 Step -1
If i = 1 Then
DBCmd = "Tray" & i & "Num,Tray" & i & "State" & DBCmd
Else
DBCmd = ",Tray" & i & "Num,Tray" & i & "State" & DBCmd
End If
Next
DBCmd = "SELECT " & DBCmd & " FROM " & InfoRegStateDB & " WHERE UserID= '" & IDName & "' AND ModelNum = '" & ModelCode & "' AND TypeNum = '" & TypeCode & "' AND ColorNum = '" & ColorCode & "' AND UsageNum = '" & ClassCode & "' AND CreateYear = '" & NowYear & "' AND CreateMonth = '" & NowMonth & "'"
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
TraySerialSetting()
End Sub
Private Sub ckbManager_CheckedChanged(sender As Object, e As EventArgs) Handles ckbManager.CheckedChanged
If ckbManager.Checked = True Then
RichTextBox1.Visible = True
Button1.Visible = True
Button2.Visible = True
Else
RichTextBox1.Visible = False
Button1.Visible = False
Button2.Visible = False
End If
End Sub
Private Sub ckbAutoFunc_CheckedChanged(sender As Object, e As EventArgs) Handles ckbAutoFunc.CheckedChanged
If ckbAutoFunc.Checked = True Then
btnTrayEnd.Enabled = True
Else
btnTrayEnd.Enabled = False
End If
txbPVSN.Focus()
End Sub
Private Sub TrayEndUpdate(NowYear As Int16, NowMonth As Int16)
DBCmd = String.Empty
For i = nudTray.Value To 1 Step -1
If i = 1 Then
DBCmd = "Tray" & i & "State = '1'" & DBCmd
Else
DBCmd = ",Tray" & i & "State = '1'" & DBCmd
End If
Next
DBCmd = "UPDATE " & InfoRegStateDB & " SET " & DBCmd & " WHERE UserID= '" & IDName & "' AND ModelNum = '" & ModelCode & "' AND TypeNum = '" & TypeCode & "' AND ColorNum = '" & ColorCode & "' AND UsageNum = '" & ClassCode & "' AND CreateYear = '" & NowYear & "' AND CreateMonth = '" & NowMonth & "'"
End Sub
Private Sub btnTrayEnd_Click(sender As Object, e As EventArgs) Handles btnTrayEnd.Click
Dim NowDate As String = Format(Now, "yy")
Dim NowTime As String = Format(Now, "MM")
If BeforeTrayData(NowDate, NowTime) Then
TrayEndUpdate(NowDate, NowTime)
End If
End Sub
Private Function BeforeTrayData(NowYear As Int16, NowMonth As Int16) As Boolean
DBCmd = "SELECT COUNT(UserID) FROM " & InfoRegStateDB & " WHERE UserID= '" & IDName & "' AND ModelNum = '" & ModelCode & "' AND TypeNum = '" & TypeCode & "' AND ColorNum = '" & ColorCode & "' AND UsageNum = '" & ClassCode & "' AND CreateYear = '" & NowYear & "' AND CreateMonth = '" & NowMonth & "'"
Dim BeforeData As String = DBQueryScalar(DBCmd)
2025-07-25 11:10:07 +09:00
If BeforeData > "False" Then
2025-06-25 11:19:00 +09:00
Return True ''있을 경우
Else
Return False '' 없을 경우
End If
End Function
End Class