'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 set_serial pro_fa_serial lux_fa_serial pro_ey_serial lux_ey_serial pro_bo_serial lux_bo_serial MAXIMUM_serial Alpha_Serial Alpha_fa_Serial Alpha_ey_Serial Alpha_bo_Serial Alto_Serial Effect_Serial 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 Private Enum data_count 'product dummy_0 set_cnt = 1 ' Pro_Set, Lux_Set dummy_2 proface_cnt = 3 luxface_cnt proeye_cnt luxeye_cnt probody_cnt luxbody_cnt maximum_cnt alphaSet_cnt alphaFace_cnt alphaEye_cnt alphaBody_cnt alto_cnt effect_cnt effectV3_cnt maximumAlpha_cnt '신규제품추가 : 추가하는 품목의 변수 추가 'component mask5 mask10 hairband gel minigel ample cream umb fen charger cable toner problack probeige prored propink maxblack maxapr maxmint maxbeige soothing car0 car1 car2 car3 car4 car5 car6 bag cosbag dustbag maxPurple proSnakeBlack kollagen kollagenset kollagen_P kollagenset_P cleansingWater tonerPad maxSaffianoBK hologram1 hologram3 hologram5 caseSaffianoPp maxYellow Kollagen_Pe1 Kollagen_Pe3 Kollagen_Pe5 ATCircleCase APSquareCase maxPeach massageSoothing maxSMint meshpouch firmingAmp hyaluronicAmp nightshot morningshot casemaxwoodi Elicolltoner Elicollamp Elicollcream Elihyaltoner Elihyalamp Elihyalcream Dayshot Beautyshopbag Gummy Stickjelly Newyearbag Emsbelt Beltbag Dayshot2 Elixir Elixirpremium Emsbeltcontrollset FabricBag Goldshopbag MorNigshotset CTBox ElesqLiftingToner ElesqLiftingCeam ElesqLiftingECream ElesqLiftingAmp ElesqAquaToner ElesqAquaCeam ElesqAquaECream ElesqAquaAmp car8 keyring DoenaLiftingToner DoenaLiftingAmp DoenaLiftingCream FirmingCollagenGel keyringSally beautykitHairband beautykitMirrorS beautykitMirrorL '신규구성품추가 : 추가하는 품목의 변수 추가 End Enum Private data_count_max_index As Integer = [Enum].GetNames(GetType(data_count)).Length - 1 Private data_cnt(data_count_max_index) As String Private cmd As String Private dbcmd As String Private order_table As String = "jomtOrderDB.jomtOrderTbl" Private sales_table As String = "jomtTesterDB.jomtSalesPackingTbl" Private order_test As String = "jomtOrderTestDB.jomtTesterOrderTbl" Private sales_test As String = "jomtTesterServerDB.jomtSalesPackingTbl" Private prod_table As String = "jomtTesterDB.jomtProdList" Private component_table As String = "jomtTesterDB.jomtComponentTbl" Private order_db As String = order_table Private sales_db As String = sales_table Private prod_db As String = prod_table Private component_db As String = component_table Private clear_switch As Boolean = False 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 End Sub Private Sub timer_barcode_Tick(sender As Object, e As EventArgs) Handles timer_barcode.Tick If InputCnt Then InputCnt -= 1 Else timer_barcode.Enabled = False If ckb_barcode.Checked Then btnReadDB_Click(sender, e) Else txbPacking.Focus() txbPacking.Refresh() End If End If End Sub Private Sub txb_clear() If clear_switch = False Then txbPacking.Clear() End If clear_switch = False txb_pack_code.Clear() txb_pack_date.Clear() txb_state_code.Clear() txb_state_date.Clear() txb_state_name.Clear() txb_invoice.Clear() txbPacking.Refresh() txb_pack_code.Refresh() txb_pack_date.Refresh() txb_state_code.Refresh() txb_state_date.Refresh() txb_state_name.Refresh() txb_invoice.Refresh() End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load txb_clear() ' DataGridView를 선택하면 전체 한줄이 선택되게 됩니다. dgv_pack_item.SelectionMode = DataGridViewSelectionMode.FullRowSelect txbPacking.Focus() End Sub 'Private Sub size_est() ' Dim width, height As Integer ' Me.Hide() ' Me.WindowState = FormWindowState.Maximized ' width = Val(Me.Width) ' height = Val(Me.Height) ' Me.MaximumSize = New Size(width, height) ' Me.Width = width ' Me.Height = height ' Me.Show() ' 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 If txbPacking.Text = "" Then If ckb_state.Checked = True Then MsgBox("전표코드를 입력하여 주십시오.", vbExclamation) Else MsgBox("패킹코드를 입력하여 주십시오.", vbExclamation) End If Else Dim packing_code As String = txbPacking.Text 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) txb_state_code.Text = data_select(data_set.ordercode) txb_state_date.Text = data_select(data_set.ship_date) txb_state_name.Text = data_select(data_set.order_name) 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) End If End If txbPacking.Focus() End Sub Private Function db_select(packing_code As String) As Boolean dbcmd = "SELECT IFNULL(sale.PackingCode,'NULL') , IFNULL(sale.`Data`,'NULL') , IFNULL(sale.Main_Product_SN,'NULL') , IFNULL(sale.Pro_Face_Serial,'NULL') , IFNULL(sale.Lux_Face_Serial,'NULL') , IFNULL(sale.Pro_Eye_Serial,'NULL') , IFNULL(sale.Lux_Eye_Serial,'NULL') , IFNULL(sale.Pro_Body_Serial,'NULL') , IFNULL(sale.Lux_Body_Serial,'NULL') , IFNULL(sale.MAXIMUM_SN,'NULL') , IFNULL(sale.Alpha_Set_Serial,'NULL') , IFNULL(sale.Alpha_Face_Serial,'NULL') , IFNULL(sale.Alpha_Eye_Serial,'NULL') , IFNULL(sale.Alpha_Body_Serial,'NULL') , IFNULL(sale.Alto_Serial,'NULL') , 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' , IFNULL(sale.Pro_CT_FaceCnt,'0') , IFNULL(sale.Lux_CT_FaceCnt,'0') , IFNULL(sale.Pro_CT_EYE_Cnt,'0') , IFNULL(sale.Lux_CT_EYE_Cnt,'0') , IFNULL(sale.Pro_CT_BodyCnt,'0') , IFNULL(sale.Lux_CT_BodyCnt,'0') , IFNULL(sale.MAXIMUM_Cnt,'0') , IFNULL(sale.Alpha_Set_Cnt,'0') , IFNULL(sale.Alpha_Face_Cnt,'0') , IFNULL(sale.Alpha_Eye_Cnt,'0') , IFNULL(sale.Alpha_Body_Cnt,'0') , IFNULL(sale.Alto_Cnt,'0') , IFNULL(sale.Effect_Cnt,'0') , IFNULL(sale.EffectV3_Cnt,'0') , IFNULL(sale.MAXIMUM_ALPHA_Cnt,'0') , IFNULL(sale.Mask5Cnt,'0') , IFNULL(sale.Mask10Cnt,'0') , IFNULL(sale.HairBandCnt,'0') , IFNULL(sale.GelCnt,'0') , IFNULL(sale.MiniGelCnt,'0') , IFNULL(sale.AmpleCnt,'0') , IFNULL(sale.CreamCnt,'0') , IFNULL(sale.UmbrellaCnt,'0') , IFNULL(sale.FenCnt,'0') , IFNULL(sale.ChargerCnt,'0') , IFNULL(sale.CableCnt,'0') , IFNULL(sale.TonerCnt,'0') , IFNULL(sale.Case_PRO_Black,'0') , IFNULL(sale.Case_PRO_Beige,'0') , IFNULL(sale.Case_PRO_Red,'0') , IFNULL(sale.Case_PRO_Pink,'0') , IFNULL(sale.Case_MAX_Black,'0') , IFNULL(sale.Case_MAX_Apr,'0') , IFNULL(sale.Case_MAX_Mint,'0') , IFNULL(sale.Case_MAX_Beige,'0') , IFNULL(sale.SoothingGelCnt,'0') , IFNULL(sale.Carton0_Cnt,'0') , IFNULL(sale.Carton1_Cnt,'0') , IFNULL(sale.Carton2_Cnt,'0') , IFNULL(sale.Carton3_Cnt,'0') , IFNULL(sale.Carton4_Cnt,'0') , IFNULL(sale.Carton5_Cnt,'0') , IFNULL(sale.Carton6_Cnt,'0') , IFNULL(sale.Shopbag_Cnt,'0') , IFNULL(sale.CosShopbag_Cnt,'0') , IFNULL(sale.DustBagCnt,'0') , IFNULL(sale.Case_MAX_Purple,'0') , IFNULL(sale.Case_PRO_SnakeBlakc,'0') , IFNULL(sale.KollagenCnt,'0') , IFNULL(sale.KollagenSetCnt,'0') , IFNULL(sale.Kollagen_PCnt,'0') , IFNULL(sale.KollagenSet_PCnt,'0') , IFNULL(sale.CleansingWaterCnt,'0') , IFNULL(sale.TonerPadCnt,'0') , IFNULL(sale.Case_MAX_SafBK_Cnt,'0') , IFNULL(sale.Hologram_1Cnt,'0') , IFNULL(sale.Hologram_3Cnt,'0') , IFNULL(sale.Hologram_5Cnt,'0') , IFNULL(sale.Case_MAX_SafPp_Cnt,'0') , IFNULL(sale.Case_MAX_Yellow,'0') , IFNULL(sale.Kollagen_Pe1Cnt,'0') , IFNULL(sale.Kollagen_Pe3Cnt,'0') , IFNULL(sale.Kollagen_Pe5Cnt,'0') , IFNULL(sale.ATCircleCaseCnt,'0') , IFNULL(sale.APSquareCaseCnt,'0') , IFNULL(sale.Case_MAX_Peach,'0') , IFNULL(sale.MasSoothingCnt,'0') , IFNULL(sale.Case_MAX_SMintCnt,'0') , IFNULL(sale.MeshPouchCnt,'0') , IFNULL(sale.FirmingAmpCnt,'0') , IFNULL(sale.HyaluronicAmpCnt,'0') , IFNULL(sale.nightshotcnt,'0') , IFNULL(sale.morningshotcnt,'0') , IFNULL(sale.casemaxwoodicnt,'0') , IFNULL(sale.Elicolltonercnt,'0') , IFNULL(sale.Elicollampcnt,'0') , IFNULL(sale.Elicollcreamcnt,'0') , IFNULL(sale.Elihyaltonercnt,'0') , IFNULL(sale.Elihyalampcnt,'0') , IFNULL(sale.Elihyalcreamcnt,'0') , IFNULL(sale.Dayshotcnt,'0') , IFNULL(sale.Beautyshopbagcnt,'0') , IFNULL(sale.Gummycnt,'0') , IFNULL(sale.stickjellycnt,'0') , IFNULL(sale.Newyearbagcnt,'0') , IFNULL(sale.Emsbeltcnt,'0') , IFNULL(sale.Beltbagcnt,'0') , IFNULL(sale.Dayshot2cnt,'0') , IFNULL(sale.Elixircnt,'0') , IFNULL(sale.Elixirpremiumcnt,'0') , IFNULL(sale.Emsbeltcontrollsetcnt,'0') , IFNULL(sale.FabricBagcnt,'0') , IFNULL(sale.Goldshopbagcnt,'0') , IFNULL(sale.MorNigshotsetcnt,'0') , IFNULL(sale.CTBoxcnt,'0') , IFNULL(sale.ElesqLiftingTonercnt,'0') , IFNULL(sale.ElesqLiftingCeamcnt,'0') , IFNULL(sale.ElesqLiftingECreamcnt,'0') , IFNULL(sale.ElesqLiftingAmpcnt,'0') , IFNULL(sale.ElesqAquaTonercnt,'0') , IFNULL(sale.ElesqAquaCeamcnt,'0') , IFNULL(sale.ElesqAquaECreamcnt,'0') , IFNULL(sale.ElesqAquaAmpcnt,'0') , IFNULL(sale.Carton8_Cnt,'0') , IFNULL(sale.KeyringCnt,'0') , IFNULL(sale.DoenaLiftingTonercnt,'0') , IFNULL(sale.DoenaLiftingAmpcnt,'0') , IFNULL(sale.DoenaLiftingCreamcnt,'0') , IFNULL(sale.FirmingCollagenGelcnt,'0') , IFNULL(sale.KeyringSallyCnt,'0') , IFNULL(sale.BeautykitHairbandCnt,'0') , IFNULL(sale.BeautykitMirrorSCnt,'0') , IFNULL(sale.BeautykitMirrorLCnt,'0') FROM " & sales_db & " AS sale LEFT JOIN " & order_db & " AS otb ON sale.PackingCode = otb.Packing_Code WHERE sale.PackingCode = '" & packing_code & "' GROUP BY sale.PackingCode" '신규제품추가/신규구성품추가 : 추가하는 품목의 시리얼, 개수 조회 추가 If DBQueryReader(dbcmd) Then For i = 0 To data_set_max_index data_select(i) = sqlDataQuery(i) Next For i = 1 To data_count_max_index 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 Return False End If End Function Private Function item_out() As Boolean Dim item_name, item_serial As String Dim dgv_switch As Boolean Try For i = 0 To data_count_max_index dgv_switch = False item_name = Nothing item_serial = Nothing If data_cnt(i) > 0 Then If i = data_count.set_cnt Then 'Pro_Set, Lux_Set If Mid(data_select(data_set.set_serial), 1, 2) = "10" Then item_name = "DUALSONIC Pro 1Set (KR)" Else item_name = "DUALSONIC Lux 1Set (KR)" End If item_serial = data_select(data_set.set_serial) ElseIf i < data_count.mask5 Then dbcmd = "SELECT ItemName FROM " & prod_db & " WHERE ProdCode = '" & i & "' AND ItemName NOT LIKE '%체험%' LIMIT 1" If DBQueryReader(dbcmd) Then item_name = sqlDataQuery(0) End If item_serial = data_select(i) Else dbcmd = "SELECT ItemName FROM " & component_db & " WHERE ProdCode = '" & (i - data_count.mask5) & "' LIMIT 1" If DBQueryReader(dbcmd) Then item_name = sqlDataQuery(0) End If End If dgv_switch = True End If If dgv_switch = True Then dgv_pack_item.Rows.Add(item_name, data_cnt(i), item_serial) End If Next Return True Catch ex As Exception MsgBox(Err.Description, vbCritical) Return False End Try End Function Private Sub txbPacking_Click(sender As Object, e As EventArgs) Handles txbPacking.Click txbPacking.Text = "" txbPacking.BackColor = Color.White End Sub ' Private Sub txbPacking_KeyDown(ByVal sender As Object, e As KeyEventArgs) Handles txbPacking.KeyDown 'If e.KeyCode = Keys.KeyCode.Return Then ' btnReadDB_Click(sender, e) ' End If ' End Sub Private Sub txbPacking_KeyDown(ByVal sender As Object, e As KeyEventArgs) Handles txbPacking.KeyDown If e.KeyCode = Keys.Return Then btnReadDB_Click(sender, EventArgs.Empty) 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 If dgv_pack_item.Rows.Count <> 1 Then If ckb_state.Checked = True Then msg_cnt = MsgBox("해당 패킹 번호의 전표 데이터만 삭제하시겠습니까?", vbExclamation + vbOKCancel) If msg_cnt = 1 Then serial_data = delete_sales() 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.Red MsgBox("데이터베이스 안에 전표 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbCritical) End If Else MsgBox("삭제가 취소되었습니다.", vbInformation) End If Else If all_serial_list.Count > 1 Then delete_serial() Else delete_packingCode() End If End If Else txbPacking.BackColor = Color.Red MsgBox("삭제할 데이터가 존재하지 않습니다.", vbExclamation) End If txbPacking.Focus() End Sub Private Function state_delete(serial As String) As Boolean If txb_invoice.Text <> "NULL" Then serial = txb_invoice.Text & "," & serial End If dbcmd = "UPDATE " & order_db & " SET Invoice_Number = NULL, Packing_Code = NULL, Serial_Number = NULL, Buy_Type = NULL, release_state = NULL, note = '" & serial & "' WHERE Order_Code = '" & txb_state_code.Text & "'" If DBCommand(dbcmd) Then Return True End If Return False End Function Private Function pack_delete(serial As String) As Boolean dbcmd = "UPDATE " & sales_db & " SET PackingCode = 'null_" & txb_pack_code.Text & "' , Main_Product_SN = NULL , Main_FACE_SN = NULL , Main_EYE_SN = NULL , Pro_Face_Serial = NULL , Pro_Eye_Serial = NULL , Pro_Body_Serial = NULL , Lux_Face_Serial = NULL , Lux_Eye_Serial = NULL , Lux_Body_Serial = NULL , MAXIMUM_SN = NULL , Alpha_Set_Serial = NULL , Alpha_Face_Serial = NULL , Alpha_Eye_Serial = NULL , Alpha_Body_Serial = NULL , Alto_Serial = NULL , Effect_Serial = NULL , EffectV3_Serial = NULL , MAXIMUM_ALPHA_SN = NULL , note = '" & serial & "' WHERE PackingCode = '" & txb_pack_code.Text & "'" '신규제품추가 : 추가하는 품목의 변수 추가 If DBCommand(dbcmd) Then Return True End If Return False End Function Private Function delete_sales() As String Dim serial_data As String = "" For i = 0 To dgv_pack_item.Rows.Count - 2 If dgv_pack_item.Rows(i).Cells(2).Value IsNot Nothing AndAlso dgv_pack_item.Rows(i).Cells(2).Value.ToString() <> "" Then If serial_data = "" Then serial_data = dgv_pack_item.Rows(i).Cells(2).Value Else serial_data = serial_data & "," & dgv_pack_item.Rows(i).Cells(2).Value End If 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 Private Sub txbPacking_TextChanged(sender As Object, e As EventArgs) Handles txbPacking.TextChanged Dim tmpStr As String If InputCnt = 0 And ckb_barcode.Checked = True Then tmpStr = txbPacking.Text If (Len(tmpStr) > 1) Then tmpStr = Mid(tmpStr, Len(tmpStr), 1) txbPacking.Clear() txbPacking.AppendText(tmpStr) End If SetInputCnt() End If End Sub Private Sub txb_pack_code_Click(sender As Object, e As EventArgs) Handles txb_pack_code.Click, txb_invoice.Click, txb_pack_date.Click, txb_state_code.Click, txb_state_date.Click, txb_state_name.Click, dgv_pack_item.Click, ckb_state.CheckedChanged, ckb_barcode.CheckedChanged txbPacking.Focus() End Sub End Class