From 5dddf073265938825612b496a8dc66cd1b802712 Mon Sep 17 00:00:00 2001 From: KwakJooYoung Date: Thu, 25 Sep 2025 14:36:27 +0900 Subject: [PATCH] =?UTF-8?q?=EC=9E=85=EB=A0=A5=ED=95=9C=20=ED=8C=A8?= =?UTF-8?q?=ED=82=B9=EC=BD=94=EB=93=9C=EA=B0=80=20=EC=8B=9C=EB=A6=AC?= =?UTF-8?q?=EC=96=BC=EB=B2=88=ED=98=B8=EA=B0=80=20=EC=97=AC=EB=9F=AC?= =?UTF-8?q?=EA=B0=9C=20=EC=9E=88=EB=8A=94=20=ED=8C=A8=ED=82=B9=EC=97=90=20?= =?UTF-8?q?=ED=8F=AC=ED=95=A8=EB=90=9C=20=EC=8B=9C=EB=A6=AC=EC=96=BC?= =?UTF-8?q?=EB=B2=88=ED=98=B8=EC=9D=B4=EB=A9=B4,=20=ED=95=B4=EB=8B=B9=20?= =?UTF-8?q?=EC=8B=9C=EB=A6=AC=EC=96=BC=EB=B2=88=ED=98=B8=EB=A7=8C=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frmMySqlTest.vb | 435 ++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 383 insertions(+), 52 deletions(-) diff --git a/frmMySqlTest.vb b/frmMySqlTest.vb index 9c7800c..0812622 100644 --- a/frmMySqlTest.vb +++ b/frmMySqlTest.vb @@ -1,11 +1,30 @@ 'Imports System.Data.OleDb 'Imports System.Reflection Imports System.ComponentModel +Imports System.IO.Ports Imports Microsoft.Office.Core Imports Excel = Microsoft.Office.Interop.Excel ''Imports Microsoft.Office.Interop Public Class frmMySqlTest + Private Enum typeList + prodset_V1 + prodface_V2 + prodeye + prodbody + '신규제품추가 : 제품 시리얼 번호 두번째 자리와 동일하도록 업데이트 + End Enum + + Private Enum modelList + PRO = 1 + LUX + MAXIMUM + ALPHA + ALTO + EFFECT + MAXIMUM_ALPHA + '신규제품추가 : 제품 시리얼 번호 첫번째 자리와 동일하도록 업데이트 + End Enum Private Enum data_set packcode pack_date @@ -27,12 +46,14 @@ Public Class frmMySqlTest EffectV3_Serial MAXIMUM_ALPHA_Serial '신규제품추가 : 추가하는 품목의 변수 추가 + pack_note ordercode order_name phone ship_date invoice + order_note End Enum Private data_set_max_index As Integer = [Enum].GetNames(GetType(data_set)).Length - 1 Private data_select(data_set_max_index) As String @@ -183,6 +204,11 @@ Public Class frmMySqlTest Public InputCnt As Long Public InputCntVal As Integer = 10 + Private command_serial As String + Private command_count As String + Private product_serial_type As String + Private all_serial_list As New List(Of String) + Private Sub SetInputCnt() InputCnt = InputCntVal timer_barcode.Enabled = True @@ -258,7 +284,145 @@ Public Class frmMySqlTest ' Me.Refresh() 'End Sub + Private Sub clearVariable() + command_serial = Nothing + command_count = Nothing + product_serial_type = Nothing + all_serial_list.Clear() + clear_switch = True + txb_clear() + dgv_pack_item.Rows.Clear() + dgv_pack_item.Refresh() + + For i = 0 To data_set_max_index + data_select(i) = "NULL" + Next + + For i = 0 To data_count_max_index + data_cnt(i) = "0" + Next + End Sub + + Private Function select_packingCode(serial As String) As String + Dim modelNum As String = Mid(serial, 1, 1) + Dim typeNum As String = Mid(serial, 2, 1) + + Select Case modelNum + Case modelList.PRO + Select Case typeNum + Case typeList.prodset_V1 + command_serial = "Main_Product_SN" + command_count = "Set_Cnt" + product_serial_type = data_set.set_serial + Case typeList.prodface_V2 + command_serial = "Pro_Face_Serial" + command_count = "Pro_CT_FaceCnt" + product_serial_type = data_set.pro_fa_serial + Case typeList.prodeye + command_serial = "Pro_Eye_Serial" + command_count = "Pro_CT_EYE_Cnt" + product_serial_type = data_set.pro_ey_serial + Case typeList.prodbody + command_serial = "Pro_Body_Serial" + command_count = "Pro_CT_BodyCnt" + product_serial_type = data_set.pro_bo_serial + End Select + + Case modelList.LUX + Select Case typeNum + Case typeList.prodset_V1 + command_serial = "Main_Product_SN" + command_count = "Set_Cnt" + product_serial_type = data_set.set_serial + Case typeList.prodface_V2 + command_serial = "Lux_Face_Serial" + command_count = "Lux_CT_FaceCnt" + product_serial_type = data_set.lux_fa_serial + Case typeList.prodeye + command_serial = "Lux_Eye_Serial" + command_count = "Lux_CT_EYE_Cnt" + product_serial_type = data_set.lux_ey_serial + Case typeList.prodbody + command_serial = "Lux_Body_Serial" + command_count = "Lux_CT_BodyCnt" + product_serial_type = data_set.lux_bo_serial + End Select + + Case modelList.MAXIMUM + Select Case typeNum + Case typeList.prodset_V1 + command_serial = "MAXIMUM_SN" + command_count = "MAXIMUM_Cnt" + product_serial_type = data_set.MAXIMUM_serial + Case typeList.prodface_V2 + command_serial = "MAXIMUM_SN" + command_count = "MAXIMUM_Cnt" + product_serial_type = data_set.MAXIMUM_serial + End Select + + Case modelList.ALPHA + Select Case typeNum + Case typeList.prodset_V1 + command_serial = "Alpha_Set_Serial" + command_count = "Alpha_Set_Cnt" + product_serial_type = data_set.Alpha_Serial + Case typeList.prodface_V2 + command_serial = "Alpha_Face_Serial" + command_count = "Alpha_Face_Cnt" + product_serial_type = data_set.Alpha_fa_Serial + Case typeList.prodeye + command_serial = "Alpha_Eye_Serial" + command_count = "Alpha_Eye_Cnt" + product_serial_type = data_set.Alpha_ey_Serial + Case typeList.prodbody + command_serial = "Alpha_Body_Serial" + command_count = "Alpha_Body_Cnt" + product_serial_type = data_set.Alpha_bo_Serial + End Select + + Case modelList.ALTO + Select Case typeNum + Case typeList.prodset_V1 + command_serial = "Alto_Serial" + command_count = "Alto_Cnt" + product_serial_type = data_set.Alto_Serial + End Select + + Case modelList.EFFECT + Select Case typeNum + Case typeList.prodset_V1 + command_serial = "Effect_Serial" + command_count = "Effect_Cnt" + product_serial_type = data_set.Effect_Serial + Case typeList.prodbody + command_serial = "EffectV3_Serial" + command_count = "EffectV3_Cnt" + product_serial_type = data_set.EffectV3_Serial + End Select + + Case modelList.MAXIMUM_ALPHA + Select Case typeNum + Case typeList.prodset_V1 + command_serial = "MAXIMUM_ALPHA_SN" + command_count = "MAXIMUM_ALPHA_Cnt" + product_serial_type = data_set.MAXIMUM_ALPHA_Serial + End Select + '신규제품추가 : 추가한 제품의 case 문 업데이트 + + End Select + + If command_serial <> Nothing Then + dbcmd = "SELECT PackingCode FROM " & sales_table & " WHERE " & command_serial & " LIKE '%" & serial & "%'" + + If DBQueryReader(dbcmd) Then + Return sqlDataQuery(0) + End If + + End If + + Return Nothing + End Function Private Sub btnReadDB_Click(sender As Object, e As EventArgs) Handles btnReadDB.Click @@ -273,10 +437,16 @@ Public Class frmMySqlTest Else - dgv_pack_item.Rows.Clear() + Dim packing_code As String = txbPacking.Text - If db_select(txbPacking.Text) Then + clearVariable() + '시리얼번호를 포함하고 있는 패킹코드 검색 + If Len(txbPacking.Text) = 12 Then + packing_code = select_packingCode(txbPacking.Text) + End If + + If db_select(packing_code) Then If item_out() Then txb_pack_code.Text = data_select(data_set.packcode) txb_pack_date.Text = data_select(data_set.pack_date) @@ -286,6 +456,9 @@ Public Class frmMySqlTest txb_invoice.Text = data_select(data_set.invoice) End If + If all_serial_list.Count > 1 Then + MsgBox(txbPacking.Text & " 는 패킹코드 " & packing_code & "에 포함된 시리얼번호입니다") + End If Else txbPacking.BackColor = Color.Red MsgBox("등록되지 않은 데이터 입니다. 패킹 코드를 확인하여 주십시오.", vbCritical) @@ -296,7 +469,7 @@ Public Class frmMySqlTest txbPacking.Focus() End Sub - Private Function db_select(serial As String) As Boolean + Private Function db_select(packing_code As String) As Boolean dbcmd = "SELECT IFNULL(sale.PackingCode,'NULL') , IFNULL(sale.`Data`,'NULL') @@ -317,12 +490,14 @@ Public Class frmMySqlTest , IFNULL(sale.Effect_Serial,'NULL') , IFNULL(sale.EffectV3_Serial,'NULL') , IFNULL(sale.MAXIMUM_ALPHA_SN,'NULL') + , IFNULL(sale.note, '') , IFNULL(otb.Order_Code,'NULL') , IFNULL(otb.Orderer_Name,'NULL') , IFNULL(otb.Phone_Number,'NULL') , IFNULL(otb.Shipment_Date,'NULL') , IFNULL(otb.Invoice_Number,'NULL') + , IFNULL(otb.note,'') , IFNULL(sale.Set_Cnt,'0') , '0' @@ -442,7 +617,7 @@ Public Class frmMySqlTest , IFNULL(sale.BeautykitMirrorLCnt,'0') FROM " & sales_db & " AS sale LEFT JOIN " & order_db & " AS otb ON sale.PackingCode = otb.Packing_Code - WHERE sale.PackingCode = '" & serial & "' GROUP BY sale.PackingCode" '신규제품추가/신규구성품추가 : 추가하는 품목의 시리얼, 개수 조회 추가 + WHERE sale.PackingCode = '" & packing_code & "' GROUP BY sale.PackingCode" '신규제품추가/신규구성품추가 : 추가하는 품목의 시리얼, 개수 조회 추가 If DBQueryReader(dbcmd) Then @@ -454,20 +629,22 @@ Public Class frmMySqlTest data_cnt(i) = sqlDataQuery(data_set_max_index + i) Next + '모든 제품의 시리얼번호를 검색 + For i = data_set.set_serial To data_set.pack_note - 1 + If data_select(i) <> "NULL" Then + Dim serial_array() As String = data_select(i).Split("/") + For j = 0 To serial_array.Length - 1 + If Len(serial_array(j)) <> 0 Then + all_serial_list.Add(serial_array(j)) + End If + Next + End If + Next + Return True Else - - For i = 0 To data_set_max_index - data_select(i) = "NULL" - Next - - For i = 0 To data_count_max_index - data_cnt(i) = "0" - Next - Return False - End If End Function @@ -544,6 +721,191 @@ Public Class frmMySqlTest End If End Sub + Private Sub delete_packingCode() + Dim msg_cnt As Int16 + Dim serial_data As String + + msg_cnt = MsgBox("해당 패킹 및 전표 데이터를 삭제하시겠습니까?", vbExclamation + vbOKCancel) + If msg_cnt = 1 Then + + serial_data = delete_sales() + + If txb_pack_code.Text <> "NULL" Then + If pack_delete(serial_data) Then + + If txb_state_code.Text <> "NULL" Then + + If state_delete(serial_data) Then + txbPacking.BackColor = Color.Green + clear_switch = True + txb_clear() + dgv_pack_item.Rows.Clear() + MsgBox("데이터 삭제가 완료되었습니다.", vbInformation) + Else + txbPacking.BackColor = Color.Red + MsgBox("데이터베이스 안에 전표 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbCritical) + End If + + Else + txbPacking.BackColor = Color.Green + clear_switch = True + txb_clear() + dgv_pack_item.Rows.Clear() + MsgBox("데이터 삭제가 완료되었습니다.", vbInformation) + + End If + + Else + txbPacking.BackColor = Color.Red + MsgBox("데이터베이스 안에 패킹 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbCritical) + End If + End If + + Else + MsgBox("삭제가 취소되었습니다.", vbInformation) + End If + + End Sub + + Private Sub delete_serial() + Dim msg_cnt As Int16 + + msg_cnt = MsgBox("패킹에 포함된 시리얼번호를 삭제하시겠습니까?", vbExclamation + vbOKCancel) + If msg_cnt = 1 Then + + 'STEP_01 : jomtTesterDB.jomtSalesPackingTbl 테이블 시리얼번호 삭제 + Dim remain_serial_data() As String = data_select(product_serial_type).Replace(txbPacking.Text, "").Split("/") + Dim update_serial_str As String = "" + Dim update_serial_cnt As UInt16 = 0 + Dim update_note_str As String = data_select(data_set.pack_note) + + For i = 0 To remain_serial_data.Length - 1 + If Len(remain_serial_data(i)) <> 0 Then + If update_serial_str = "" Then + update_serial_str = remain_serial_data(i) + Else + update_serial_str = update_serial_str & "/" & remain_serial_data(i) + End If + + update_serial_cnt += 1 + End If + Next + + If Len(update_note_str) = 0 Then + update_note_str = txbPacking.Text + Else + update_note_str = update_note_str & "," & txbPacking.Text + End If + + dbcmd = "UPDATE " & sales_db & + " SET " & command_serial & " = '" & update_serial_str & "'" & + ", " & command_count & " = " & update_serial_cnt & + ", note = '" & update_note_str & "'" & + " WHERE PackingCode = '" & txb_pack_code.Text & "'" + + If DBCommand(dbcmd) Then + + 'STEP_02 : jomtOrderDB.jomtOrderTbl 테이블 시리얼번호 삭제 + If txb_state_code.Text <> "NULL" Then + + dbcmd = "SELECT IFNULL(Serial_Number, '') FROM " & order_db & + " WHERE Order_Code = '" & txb_state_code.Text & "' AND Serial_Number LIKE '%" & txbPacking.Text & "%'" + + If DBQueryReader(dbcmd) Then + remain_serial_data = sqlDataQuery(0).Replace(txbPacking.Text, "").Split("/") + update_serial_str = "" + update_serial_cnt = 0 + update_note_str = data_select(data_set.order_note) + + For i = 0 To remain_serial_data.Length - 1 + If Len(remain_serial_data(i)) <> 0 Then + If update_serial_str = "" Then + update_serial_str = remain_serial_data(i) + Else + update_serial_str = update_serial_str & "/" & remain_serial_data(i) + End If + + update_serial_cnt += 1 + End If + Next + + If Len(update_note_str) = 0 Then + update_note_str = txbPacking.Text + Else + update_note_str = update_note_str & "," & txbPacking.Text + End If + + 'STEP_02-1 : jomtOrderDB.jomtOrderTbl 테이블 시리얼번호, 개수 업데이트 + dbcmd = "UPDATE " & order_db & + " SET Serial_Number = '" & update_serial_str & "'" & + ", Item_Count = " & update_serial_cnt & + " WHERE Order_Code = '" & txb_state_code.Text & "' AND Serial_Number LIKE '%" & txbPacking.Text & "%'" + + If DBCommand(dbcmd) Then + + 'STEP_02-2 : jomtOrderDB.jomtOrderTbl 테이블 note에 삭제된 시리얼번호 업데이트 + dbcmd = "UPDATE " & order_db & + " SET note = '" & update_note_str & "'" & + " WHERE Order_Code = '" & txb_state_code.Text & "'" + + If DBCommand(dbcmd) = False Then + txbPacking.BackColor = Color.Red + MsgBox("Order 테이블 시리얼번호 삭제(2) 중 오류가 발생하였습니다.", vbCritical) + Exit Sub + End If + Else + txbPacking.BackColor = Color.Red + MsgBox("Order 테이블 시리얼번호 삭제(1) 중 오류가 발생하였습니다.", vbCritical) + Exit Sub + End If + End If + End If + + Else + txbPacking.BackColor = Color.Red + MsgBox("SalesPacking 테이블 시리얼번호 삭제 중 오류가 발생하였습니다.", vbCritical) + Exit Sub + End If + + '삭제하는 시리얼번호가 패킹코드이면 패킹코드를 다시 설정 + If txbPacking.Text = txb_pack_code.Text Then + all_serial_list.Remove(txbPacking.Text) + all_serial_list.Sort() + + dbcmd = "UPDATE " & sales_db & + " SET PackingCode = '" & all_serial_list(0) & "'" & + " WHERE PackingCode = '" & txb_pack_code.Text & "'" + + If DBCommand(dbcmd) Then + dbcmd = "UPDATE " & order_db & + " SET Packing_Code = '" & all_serial_list(0) & "'" & + " WHERE Order_Code = '" & txb_state_code.Text & "' AND Packing_Code = '" & txb_pack_code.Text & "'" + + If DBCommand(dbcmd) = False Then + txbPacking.BackColor = Color.Red + MsgBox("Order 테이블 패킹코드 업데이트에 오류가 발생하였습니다.", vbCritical) + Exit Sub + End If + + Else + txbPacking.BackColor = Color.Red + MsgBox("SalesPacking 테이블 패킹코드 업데이트에 오류가 발생하였습니다.", vbCritical) + Exit Sub + End If + + End If + + txbPacking.BackColor = Color.Green + clear_switch = True + txb_clear() + dgv_pack_item.Rows.Clear() + MsgBox("데이터 삭제가 완료되었습니다.", vbInformation) + + End If + + End Sub + + Private Sub btn_delete_Click(sender As Object, e As EventArgs) Handles btn_delete.Click Dim msg_cnt As Int16 Dim serial_data As String @@ -585,45 +947,10 @@ Public Class frmMySqlTest Else - msg_cnt = MsgBox("해당 패킹 및 전표 데이터를 삭제하시겠습니까?", vbExclamation + vbOKCancel) - - If msg_cnt = 1 Then - - serial_data = delete_sales() - - If txb_pack_code.Text <> "NULL" Then - If pack_delete(serial_data) Then - - If txb_state_code.Text <> "NULL" Then - - If state_delete(serial_data) Then - txbPacking.BackColor = Color.Green - clear_switch = True - txb_clear() - dgv_pack_item.Rows.Clear() - MsgBox("데이터 삭제가 완료되었습니다.", vbInformation) - Else - txbPacking.BackColor = Color.Red - MsgBox("데이터베이스 안에 전표 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbCritical) - End If - - Else - txbPacking.BackColor = Color.Green - clear_switch = True - txb_clear() - dgv_pack_item.Rows.Clear() - MsgBox("데이터 삭제가 완료되었습니다.", vbInformation) - - End If - - Else - txbPacking.BackColor = Color.Red - MsgBox("데이터베이스 안에 패킹 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbCritical) - End If - End If - + If all_serial_list.Count > 1 Then + delete_serial() Else - MsgBox("삭제가 취소되었습니다.", vbInformation) + delete_packingCode() End If End If @@ -699,6 +1026,10 @@ Public Class frmMySqlTest End If Next + If Len(data_select(data_set.pack_note)) > 0 Then + serial_data = data_select(data_set.pack_note) & "," & serial_data + End If + Return serial_data End Function