2025-12-08 09:40:00 +09:00
Imports System . ComponentModel
2025-09-25 14:36:27 +09:00
Imports System . IO . Ports
2025-09-18 09:13:29 +09:00
Imports Microsoft . Office . Core
2025-07-08 15:33:46 +09:00
Imports Excel = Microsoft . Office . Interop . Excel
Public Class frmMySqlTest
2025-12-08 09:40:00 +09:00
Private Enum basic_info
'packing info
2025-07-08 15:33:46 +09:00
packcode
pack_date
2025-09-25 14:36:27 +09:00
pack_note
2025-12-08 09:40:00 +09:00
'order info
2025-07-08 15:33:46 +09:00
ordercode
order_name
phone
ship_date
invoice
2025-09-25 14:36:27 +09:00
order_note
2025-07-08 15:33:46 +09:00
End Enum
2025-12-08 09:40:00 +09:00
Private basic_info_max_index As Integer = [ Enum ] . GetNames ( GetType ( basic_info ) ) . Length - 1
Private basic_data_select ( basic_info_max_index ) As String
Structure item_info
Dim item_type As String 'P:Product / C:Component
Dim prod_code As String
Dim sales_packing_cnt_col_nm As String
Dim sales_packing_serial_col_nm As String
2025-12-10 17:44:14 +09:00
Dim cnt As Integer
2025-12-08 09:40:00 +09:00
Dim serial As String
End Structure
2025-12-10 17:44:14 +09:00
Private item_product_list ( ) As item_info
Private item_component_list ( ) As item_info
Public item_product_max_index As Integer
Public item_component_max_index As Integer
2025-07-08 15:33:46 +09:00
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 "
2025-09-18 09:13:29 +09:00
Private prod_table As String = " jomtTesterDB.jomtProdList "
Private component_table As String = " jomtTesterDB.jomtComponentTbl "
2025-07-08 15:33:46 +09:00
Private order_db As String = order_table
Private sales_db As String = sales_table
2025-09-18 09:13:29 +09:00
Private prod_db As String = prod_table
Private component_db As String = component_table
2025-07-08 15:33:46 +09:00
Private clear_switch As Boolean = False
Public InputCnt As Long
Public InputCntVal As Integer = 10
2025-12-08 09:40:00 +09:00
Public OldSerialNumberLength As Integer = 12
Public NewSerialNumberLength As Integer = 16
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
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 )
2025-12-08 09:40:00 +09:00
Private query_product As String
Private query_component As String
2025-09-25 14:36:27 +09:00
2025-07-08 15:33:46 +09:00
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
2025-12-08 09:40:00 +09:00
setItemData ( )
2025-07-08 15:33:46 +09:00
txb_clear ( )
' DataGridView를 선택하면 전체 한줄이 선택되게 됩니다.
dgv_pack_item . SelectionMode = DataGridViewSelectionMode . FullRowSelect
txbPacking . Focus ( )
End Sub
2025-12-08 09:40:00 +09:00
Private Sub setItemData ( )
2025-12-10 17:44:14 +09:00
dbcmd = " SELECT CAST(MAX(ProdCode) AS CHAR) FROM " & prod_table & " ; "
If DBQueryReader ( dbcmd ) Then
item_product_max_index = sqlDataQuery ( 0 )
ReDim item_product_list ( item_product_max_index )
End If
'제품 ProdCode는 1부터 시작하며, ProSet(1),LuxSet(2)는 같은 컬럼을 사용하고 있어 중복되기 때문에 2부터 조회
dbcmd = " SELECT CAST(ProdCode AS CHAR), SalesPackingCntColNm, SalesPackingSerialColNm FROM " & prod_table & " WHERE ProdCode > 1 GROUP BY ProdCode ORDER BY ProdCode ASC; "
2025-12-08 09:40:00 +09:00
If DBQueryReader ( dbcmd ) Then
Dim RowCount As Int16 = ( sqlDataQuery . Length / 3 ) - 1
Dim dataSetCount As Int32 = 0
Dim item_data As item_info
For row = 0 To RowCount
item_data . item_type = " P "
For col = 0 To 2
If col = 0 Then
item_data . prod_code = sqlDataQuery ( dataSetCount )
ElseIf col = 1 Then
item_data . sales_packing_cnt_col_nm = sqlDataQuery ( dataSetCount )
ElseIf col = 2 Then
item_data . sales_packing_serial_col_nm = sqlDataQuery ( dataSetCount )
End If
dataSetCount += 1
Next
2025-12-10 17:44:14 +09:00
item_product_list ( item_data . prod_code ) = item_data
2025-12-08 09:40:00 +09:00
Next
End If
2025-07-08 15:33:46 +09:00
2025-12-10 17:44:14 +09:00
dbcmd = " SELECT CAST(MAX(ProdCode) AS CHAR) FROM " & component_table & " ; "
If DBQueryReader ( dbcmd ) Then
item_component_max_index = sqlDataQuery ( 0 )
ReDim item_component_list ( item_component_max_index )
End If
2025-12-08 09:40:00 +09:00
dbcmd = " SELECT CAST(ProdCode AS CHAR), SalesPackingCntColNm FROM " & component_table & " GROUP BY ProdCode ORDER BY ProdCode asc; "
If DBQueryReader ( dbcmd ) Then
Dim RowCount As Int16 = ( sqlDataQuery . Length / 2 ) - 1
Dim dataSetCount As Int32 = 0
Dim item_data As item_info
For row = 0 To RowCount
item_data . item_type = " C "
For col = 0 To 1
If col = 0 Then
item_data . prod_code = sqlDataQuery ( dataSetCount )
ElseIf col = 1 Then
item_data . sales_packing_cnt_col_nm = sqlDataQuery ( dataSetCount )
End If
dataSetCount += 1
Next
2025-12-10 17:44:14 +09:00
item_component_list ( item_data . prod_code ) = item_data
2025-12-08 09:40:00 +09:00
Next
End If
2025-07-08 15:33:46 +09:00
2025-12-08 09:40:00 +09:00
'제품 정보 조회 쿼리 생성
2025-12-11 13:39:15 +09:00
'item_product_list 에 index (2)부터 등록되어 있기에 (2)부터 조회
2025-12-08 09:40:00 +09:00
query_product = Nothing
2025-12-11 13:39:15 +09:00
For i = 2 To item_product_max_index
If query_product = Nothing Then
query_product = " IFNULL( " & item_product_list ( i ) . sales_packing_serial_col_nm & " ,'NULL'), IFNULL( " & item_product_list ( i ) . sales_packing_cnt_col_nm & " ,'0') "
Else
query_product = query_product & " , IFNULL( " & item_product_list ( i ) . sales_packing_serial_col_nm & " ,'NULL'), IFNULL( " & item_product_list ( i ) . sales_packing_cnt_col_nm & " ,'0') "
2025-12-08 09:40:00 +09:00
End If
Next
2025-07-08 15:33:46 +09:00
2025-12-08 09:40:00 +09:00
'구성품 정보 조회 쿼리 생성
query_component = Nothing
2025-12-10 17:44:14 +09:00
For i = 0 To item_component_max_index
2025-12-11 13:39:15 +09:00
'구성품 중 ProdCode는 있으나 품목이 없는 경우가 있기에 NULL 체크 필요
2025-12-10 17:44:14 +09:00
If item_component_list ( i ) . sales_packing_cnt_col_nm <> Nothing Then
2025-12-08 09:40:00 +09:00
If query_component = Nothing Then
2025-12-10 17:44:14 +09:00
query_component = " IFNULL( " & item_component_list ( i ) . sales_packing_cnt_col_nm & " ,'0') "
2025-12-08 09:40:00 +09:00
Else
2025-12-10 17:44:14 +09:00
query_component = query_component & " , IFNULL( " & item_component_list ( i ) . sales_packing_cnt_col_nm & " ,'0') "
End If
Else
If query_component = Nothing Then
query_component = " '0' "
Else
query_component = query_component & " , '0' "
2025-12-08 09:40:00 +09:00
End If
End If
Next
End Sub
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
Private Sub clearVariable ( )
command_serial = Nothing
command_count = Nothing
product_serial_type = Nothing
all_serial_list . Clear ( )
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
clear_switch = True
txb_clear ( )
dgv_pack_item . Rows . Clear ( )
dgv_pack_item . Refresh ( )
2025-12-08 09:40:00 +09:00
For i = 0 To basic_info_max_index
basic_data_select ( i ) = " NULL "
2025-09-25 14:36:27 +09:00
Next
2025-12-10 17:44:14 +09:00
For i = 0 To item_product_max_index
item_product_list ( i ) . cnt = 0
item_product_list ( i ) . serial = Nothing
Next
For i = 0 To item_component_max_index
item_component_list ( i ) . cnt = 0
2025-09-25 14:36:27 +09:00
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 )
2025-12-08 09:40:00 +09:00
If serial . Length = OldSerialNumberLength Then
modelNum = Mid ( serial , 1 , 1 )
typeNum = Mid ( serial , 2 , 1 )
Else
modelNum = Mid ( serial , 1 , 2 )
typeNum = Mid ( serial , 15 , 1 )
End If
2025-09-25 14:36:27 +09:00
2025-12-08 09:40:00 +09:00
dbcmd = " SELECT SalesPackingSerialColNm, SalesPackingCntColNm, CAST(ProdCode AS CHAR) FROM " & prod_table & " WHERE ModelNum = " & modelNum & " AND TypeNum = " & typeNum & " LIMIT 1; "
If DBQueryReader ( dbcmd ) Then
command_serial = sqlDataQuery ( 0 )
command_count = sqlDataQuery ( 1 )
2025-12-11 13:39:15 +09:00
'제품 ProSet(1),LuxSet(2)는 같은 컬럼을 사용하고 있어 중복되기 때문에 item_product_list는 2부터 등록되어 있기에 ProSet(1)도 "2"에 조회하여야 함
If sqlDataQuery ( 2 ) = " 1 " Then '
product_serial_type = " 2 "
Else
product_serial_type = sqlDataQuery ( 2 )
End If
2025-12-08 09:40:00 +09:00
dbcmd = " SELECT PackingCode FROM " & sales_table & " WHERE " & command_serial & " LIKE '% " & serial & " %' "
2025-09-25 14:36:27 +09:00
If DBQueryReader ( dbcmd ) Then
Return sqlDataQuery ( 0 )
End If
End If
Return Nothing
End Function
2025-07-08 15:33:46 +09:00
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
2025-09-25 14:36:27 +09:00
Dim packing_code As String = txbPacking . Text
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
clearVariable ( )
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
'시리얼번호를 포함하고 있는 패킹코드 검색
2025-12-08 09:40:00 +09:00
If Len ( txbPacking . Text ) = OldSerialNumberLength Or Len ( txbPacking . Text ) = NewSerialNumberLength Then
2025-09-25 14:36:27 +09:00
packing_code = select_packingCode ( txbPacking . Text )
End If
2025-12-08 09:40:00 +09:00
If packing_code <> Nothing And db_select ( packing_code ) Then
2025-07-08 15:33:46 +09:00
If item_out ( ) Then
2025-12-08 09:40:00 +09:00
txb_pack_code . Text = basic_data_select ( basic_info . packcode )
txb_pack_date . Text = basic_data_select ( basic_info . pack_date )
txb_state_code . Text = basic_data_select ( basic_info . ordercode )
txb_state_date . Text = basic_data_select ( basic_info . ship_date )
txb_state_name . Text = basic_data_select ( basic_info . order_name )
txb_invoice . Text = basic_data_select ( basic_info . invoice )
2025-07-08 15:33:46 +09:00
End If
2025-09-25 14:36:27 +09:00
If all_serial_list . Count > 1 Then
MsgBox ( txbPacking . Text & " 는 패킹코드 " & packing_code & " 에 포함된 시리얼번호입니다 " )
End If
2025-07-08 15:33:46 +09:00
Else
txbPacking . BackColor = Color . Red
MsgBox ( " 등록되지 않은 데이터 입니다. 패킹 코드를 확인하여 주십시오. " , vbCritical )
End If
End If
txbPacking . Focus ( )
End Sub
2025-09-25 14:36:27 +09:00
Private Function db_select ( packing_code As String ) As Boolean
2025-12-08 09:40:00 +09:00
'패킹, 주문 기본정보 조회
2025-09-18 09:13:29 +09:00
dbcmd = " SELECT IFNULL(sale.PackingCode,'NULL')
, IFNULL ( sale . ` Data ` , 'NULL')
2025-09-25 14:36:27 +09:00
, IFNULL ( sale . note , '')
2025-09-18 09:13:29 +09:00
, 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')
2025-09-25 14:36:27 +09:00
, IFNULL ( otb . note , '')
2025-09-18 09:13:29 +09:00
FROM " & sales_db & " AS sale LEFT JOIN " & order_db & " AS otb ON sale . PackingCode = otb . Packing_Code
2025-12-08 09:40:00 +09:00
WHERE sale . PackingCode = '" & packing_code & "' GROUP BY sale.PackingCode"
2025-07-08 15:33:46 +09:00
If DBQueryReader ( dbcmd ) Then
2025-12-08 09:40:00 +09:00
For i = 0 To basic_info_max_index
basic_data_select ( i ) = sqlDataQuery ( i )
2025-09-18 09:13:29 +09:00
Next
2025-12-08 09:40:00 +09:00
Else
Return False
End If
2025-07-08 15:33:46 +09:00
2025-12-08 09:40:00 +09:00
'제품 정보 조회
dbcmd = " SELECT " & query_product & " FROM " & sales_db & " WHERE PackingCode = ' " & packing_code & " ' "
If DBQueryReader ( dbcmd ) Then
Dim dataSetCount As Int32 = 0
2025-12-11 13:39:15 +09:00
'query_product가 ProdCode = 2부터 생성되었기에 (2)부터 조회
For i = 2 To item_product_max_index
2025-12-10 17:44:14 +09:00
For col = 0 To 1
2025-12-08 09:40:00 +09:00
If col = 0 Then
2025-12-11 13:39:15 +09:00
item_product_list ( i ) . serial = sqlDataQuery ( dataSetCount )
2025-12-08 09:40:00 +09:00
ElseIf col = 1 Then
2025-12-11 13:39:15 +09:00
item_product_list ( i ) . cnt = sqlDataQuery ( dataSetCount )
2025-12-08 09:40:00 +09:00
End If
dataSetCount += 1
Next
2025-12-10 17:44:14 +09:00
'모든 제품의 시리얼번호를 검색
2025-12-11 13:39:15 +09:00
If item_product_list ( i ) . serial <> " NULL " Then
Dim serial_array ( ) As String = item_product_list ( i ) . serial . Split ( " / " )
2025-12-10 17:44:14 +09:00
For j = 0 To serial_array . Length - 1
If Len ( serial_array ( j ) ) <> 0 Then
all_serial_list . Add ( serial_array ( j ) )
2025-09-25 14:36:27 +09:00
End If
2025-12-10 17:44:14 +09:00
Next
End If
2025-09-18 09:13:29 +09:00
Next
2025-12-08 09:40:00 +09:00
End If
2025-09-18 09:13:29 +09:00
2025-12-08 09:40:00 +09:00
'구성품 정보 조회
dbcmd = " SELECT " & query_component & " FROM " & sales_db & " WHERE PackingCode = ' " & packing_code & " ' "
If DBQueryReader ( dbcmd ) Then
2025-12-10 17:44:14 +09:00
For i = 0 To sqlDataQuery . Length - 1
item_component_list ( i ) . cnt = sqlDataQuery ( i )
2025-12-08 09:40:00 +09:00
Next
2025-07-08 15:33:46 +09:00
End If
2025-12-08 09:40:00 +09:00
Return True
2025-07-08 15:33:46 +09:00
End Function
Private Function item_out ( ) As Boolean
2025-12-08 09:40:00 +09:00
Dim item_name As String
2025-07-08 15:33:46 +09:00
Dim dgv_switch As Boolean
Try
2025-12-11 13:39:15 +09:00
'item_product_list 에 index (2)부터 등록되어 있기에 (2)부터 조회
For i = 2 To item_product_max_index
2025-07-08 15:33:46 +09:00
dgv_switch = False
item_name = Nothing
2025-12-10 17:44:14 +09:00
If item_product_list ( i ) . cnt > 0 Then
2025-12-11 13:39:15 +09:00
If i = 2 Then 'Pro_Set, Lux_Set
2025-12-10 17:44:14 +09:00
If Mid ( item_product_list ( i ) . serial , 1 , 2 ) = " 10 " Then
2025-09-18 09:13:29 +09:00
item_name = " DUALSONIC Pro 1Set (KR) "
Else
item_name = " DUALSONIC Lux 1Set (KR) "
End If
Else
2025-12-10 17:44:14 +09:00
dbcmd = " SELECT ItemName FROM " & prod_db & " WHERE ProdCode = ' " & i & " ' AND ItemName NOT LIKE '%체험%' LIMIT 1 "
2025-09-18 09:13:29 +09:00
If DBQueryReader ( dbcmd ) Then
item_name = sqlDataQuery ( 0 )
End If
End If
2025-07-08 15:33:46 +09:00
2025-09-18 09:13:29 +09:00
dgv_switch = True
2025-07-08 15:33:46 +09:00
End If
If dgv_switch = True Then
2025-12-10 17:44:14 +09:00
dgv_pack_item . Rows . Add ( item_name , item_product_list ( i ) . cnt , item_product_list ( i ) . serial )
End If
Next
For i = 0 To item_component_max_index
dgv_switch = False
item_name = Nothing
If item_component_list ( i ) . cnt > 0 Then
dbcmd = " SELECT ItemName FROM " & component_db & " WHERE ProdCode = ' " & i & " ' LIMIT 1 "
If DBQueryReader ( dbcmd ) Then
item_name = sqlDataQuery ( 0 )
End If
dgv_switch = True
End If
If dgv_switch = True Then
dgv_pack_item . Rows . Add ( item_name , item_component_list ( i ) . cnt , item_component_list ( i ) . serial )
2025-07-08 15:33:46 +09:00
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 . Return Then
btnReadDB_Click ( sender , EventArgs . Empty )
End If
End Sub
2025-09-25 14:36:27 +09:00
Private Sub delete_packingCode ( )
2025-07-08 15:33:46 +09:00
Dim msg_cnt As Int16
Dim serial_data As String
2025-09-25 14:36:27 +09:00
msg_cnt = MsgBox ( " 해당 패킹 및 전표 데이터를 삭제하시겠습니까? " , vbExclamation + vbOKCancel )
If msg_cnt = 1 Then
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
serial_data = delete_sales ( )
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
If txb_pack_code . Text <> " NULL " Then
If pack_delete ( serial_data ) Then
2025-07-08 15:33:46 +09:00
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
2025-09-25 14:36:27 +09:00
txbPacking . BackColor = Color . Green
clear_switch = True
txb_clear ( )
dgv_pack_item . Rows . Clear ( )
MsgBox ( " 데이터 삭제가 완료되었습니다. " , vbInformation )
2025-07-08 15:33:46 +09:00
End If
Else
2025-09-25 14:36:27 +09:00
txbPacking . BackColor = Color . Red
MsgBox ( " 데이터베이스 안에 패킹 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오. " , vbCritical )
2025-07-08 15:33:46 +09:00
End If
2025-09-25 14:36:27 +09:00
End If
Else
MsgBox ( " 삭제가 취소되었습니다. " , vbInformation )
End If
End Sub
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
Private Sub delete_serial ( )
Dim msg_cnt As Int16
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
msg_cnt = MsgBox ( " 패킹에 포함된 시리얼번호를 삭제하시겠습니까? " , vbExclamation + vbOKCancel )
If msg_cnt = 1 Then
'STEP_01 : jomtTesterDB.jomtSalesPackingTbl 테이블 시리얼번호 삭제
2025-12-10 17:44:14 +09:00
Dim remain_serial_data ( ) As String = item_product_list ( product_serial_type ) . serial . Replace ( txbPacking . Text , " " ) . Split ( " / " )
2025-09-25 14:36:27 +09:00
Dim update_serial_str As String = " "
Dim update_serial_cnt As UInt16 = 0
2025-12-08 09:40:00 +09:00
Dim update_note_str As String = basic_data_select ( basic_info . pack_note )
2025-09-25 14:36:27 +09:00
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
2025-07-08 15:33:46 +09:00
Else
2025-09-25 14:36:27 +09:00
update_note_str = update_note_str & " , " & txbPacking . Text
End If
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
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 & " ' "
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
If DBCommand ( dbcmd ) Then
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
'STEP_02 : jomtOrderDB.jomtOrderTbl 테이블 시리얼번호 삭제
If txb_state_code . Text <> " NULL " Then
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
dbcmd = " SELECT IFNULL(Serial_Number, '') FROM " & order_db &
" WHERE Order_Code = ' " & txb_state_code . Text & " ' AND Serial_Number LIKE '% " & txbPacking . Text & " %' "
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
If DBQueryReader ( dbcmd ) Then
remain_serial_data = sqlDataQuery ( 0 ) . Replace ( txbPacking . Text , " " ) . Split ( " / " )
update_serial_str = " "
update_serial_cnt = 0
2025-12-08 09:40:00 +09:00
update_note_str = basic_data_select ( basic_info . order_note )
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
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 )
2025-07-08 15:33:46 +09:00
Else
2025-09-25 14:36:27 +09:00
update_serial_str = update_serial_str & " / " & remain_serial_data ( i )
2025-07-08 15:33:46 +09:00
End If
2025-09-25 14:36:27 +09:00
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 & " %' "
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
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
2025-07-08 15:33:46 +09:00
End If
2025-09-25 14:36:27 +09:00
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
2025-07-08 15:33:46 +09:00
2025-09-25 14:36:27 +09:00
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 )
2025-07-08 15:33:46 +09:00
Else
txbPacking . BackColor = Color . Red
2025-09-25 14:36:27 +09:00
MsgBox ( " 데이터베이스 안에 전표 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오. " , vbCritical )
2025-07-08 15:33:46 +09:00
End If
2025-09-25 14:36:27 +09:00
Else
txbPacking . BackColor = Color . Red
MsgBox ( " 데이터베이스 안에 전표 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오. " , vbCritical )
2025-07-08 15:33:46 +09:00
End If
Else
MsgBox ( " 삭제가 취소되었습니다. " , vbInformation )
End If
2025-09-25 14:36:27 +09:00
Else
If all_serial_list . Count > 1 Then
delete_serial ( )
Else
delete_packingCode ( )
End If
2025-07-08 15:33:46 +09:00
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
2025-09-18 09:13:29 +09:00
dbcmd = " UPDATE " & sales_db &
" SET PackingCode = 'null_ " & txb_pack_code . Text & " '
2025-12-08 09:40:00 +09:00
, " & command_serial & " = NULL
2025-09-18 09:13:29 +09:00
, note = '" & serial & "'
2025-12-08 09:40:00 +09:00
WHERE PackingCode = '" & txb_pack_code.Text & "'"
2025-07-08 15:33:46 +09:00
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
2025-12-08 09:40:00 +09:00
If Len ( basic_data_select ( basic_info . pack_note ) ) > 0 Then
serial_data = basic_data_select ( basic_info . pack_note ) & " , " & serial_data
2025-09-25 14:36:27 +09:00
End If
2025-07-08 15:33:46 +09:00
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