755 lines
29 KiB
VB.net
755 lines
29 KiB
VB.net
Imports System.ComponentModel
|
|
Imports System.IO.Ports
|
|
Imports Microsoft.Office.Core
|
|
Imports Excel = Microsoft.Office.Interop.Excel
|
|
Public Class frmMySqlTest
|
|
Private Enum basic_info
|
|
'packing info
|
|
packcode
|
|
pack_date
|
|
pack_note
|
|
'order info
|
|
ordercode
|
|
order_name
|
|
phone
|
|
ship_date
|
|
invoice
|
|
order_note
|
|
End Enum
|
|
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
|
|
Dim cnt As Integer
|
|
Dim serial As String
|
|
End Structure
|
|
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
|
|
|
|
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
|
|
Public OldSerialNumberLength As Integer = 12
|
|
Public NewSerialNumberLength As Integer = 16
|
|
|
|
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 query_product As String
|
|
Private query_component As 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
|
|
setItemData()
|
|
txb_clear()
|
|
|
|
' DataGridView를 선택하면 전체 한줄이 선택되게 됩니다.
|
|
dgv_pack_item.SelectionMode = DataGridViewSelectionMode.FullRowSelect
|
|
txbPacking.Focus()
|
|
End Sub
|
|
|
|
Private Sub setItemData()
|
|
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;"
|
|
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
|
|
item_product_list(item_data.prod_code) = item_data
|
|
Next
|
|
End If
|
|
|
|
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
|
|
|
|
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
|
|
item_component_list(item_data.prod_code) = item_data
|
|
Next
|
|
End If
|
|
|
|
'제품 정보 조회 쿼리 생성
|
|
'item_product_list 에 index (2)부터 등록되어 있기에 (2)부터 조회
|
|
query_product = Nothing
|
|
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')"
|
|
End If
|
|
Next
|
|
|
|
'구성품 정보 조회 쿼리 생성
|
|
query_component = Nothing
|
|
For i = 0 To item_component_max_index
|
|
'구성품 중 ProdCode는 있으나 품목이 없는 경우가 있기에 NULL 체크 필요
|
|
If item_component_list(i).sales_packing_cnt_col_nm <> Nothing Then
|
|
If query_component = Nothing Then
|
|
query_component = "IFNULL(" & item_component_list(i).sales_packing_cnt_col_nm & ",'0')"
|
|
Else
|
|
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'"
|
|
End If
|
|
End If
|
|
Next
|
|
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 basic_info_max_index
|
|
basic_data_select(i) = "NULL"
|
|
Next
|
|
|
|
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
|
|
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)
|
|
|
|
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
|
|
|
|
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)
|
|
'제품 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
|
|
|
|
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) = OldSerialNumberLength Or Len(txbPacking.Text) = NewSerialNumberLength Then
|
|
packing_code = select_packingCode(txbPacking.Text)
|
|
End If
|
|
|
|
If packing_code <> Nothing And db_select(packing_code) Then
|
|
If item_out() Then
|
|
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)
|
|
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.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,'')
|
|
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 basic_info_max_index
|
|
basic_data_select(i) = sqlDataQuery(i)
|
|
Next
|
|
Else
|
|
Return False
|
|
End If
|
|
|
|
'제품 정보 조회
|
|
dbcmd = "SELECT " & query_product & " FROM " & sales_db & " WHERE PackingCode = '" & packing_code & "'"
|
|
If DBQueryReader(dbcmd) Then
|
|
Dim dataSetCount As Int32 = 0
|
|
|
|
'query_product가 ProdCode = 2부터 생성되었기에 (2)부터 조회
|
|
For i = 2 To item_product_max_index
|
|
For col = 0 To 1
|
|
If col = 0 Then
|
|
item_product_list(i).serial = sqlDataQuery(dataSetCount)
|
|
ElseIf col = 1 Then
|
|
item_product_list(i).cnt = sqlDataQuery(dataSetCount)
|
|
End If
|
|
dataSetCount += 1
|
|
Next
|
|
|
|
'모든 제품의 시리얼번호를 검색
|
|
If item_product_list(i).serial <> "NULL" Then
|
|
Dim serial_array() As String = item_product_list(i).serial.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
|
|
End If
|
|
|
|
'구성품 정보 조회
|
|
dbcmd = "SELECT " & query_component & " FROM " & sales_db & " WHERE PackingCode = '" & packing_code & "'"
|
|
If DBQueryReader(dbcmd) Then
|
|
For i = 0 To sqlDataQuery.Length - 1
|
|
item_component_list(i).cnt = sqlDataQuery(i)
|
|
Next
|
|
End If
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Function item_out() As Boolean
|
|
Dim item_name As String
|
|
Dim dgv_switch As Boolean
|
|
|
|
Try
|
|
'item_product_list 에 index (2)부터 등록되어 있기에 (2)부터 조회
|
|
For i = 2 To item_product_max_index
|
|
dgv_switch = False
|
|
item_name = Nothing
|
|
|
|
If item_product_list(i).cnt > 0 Then
|
|
If i = 2 Then 'Pro_Set, Lux_Set
|
|
If Mid(item_product_list(i).serial, 1, 2) = "10" Then
|
|
item_name = "DUALSONIC Pro 1Set (KR)"
|
|
Else
|
|
item_name = "DUALSONIC Lux 1Set (KR)"
|
|
End If
|
|
Else
|
|
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
|
|
End If
|
|
|
|
dgv_switch = True
|
|
End If
|
|
|
|
If dgv_switch = True Then
|
|
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)
|
|
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
|
|
|
|
Private Sub delete_packingCode()
|
|
Dim msg_cnt As Int16
|
|
Dim serial_data As String = Nothing
|
|
|
|
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 = item_product_list(product_serial_type).serial.Replace(txbPacking.Text, "").Split("/")
|
|
Dim update_serial_str As String = ""
|
|
Dim update_serial_cnt As UInt16 = 0
|
|
Dim update_note_str As String = basic_data_select(basic_info.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 = basic_data_select(basic_info.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
|
|
|
|
If serial <> Nothing Then
|
|
dbcmd = "UPDATE " & sales_db &
|
|
" SET PackingCode = 'null_" & txb_pack_code.Text & "'
|
|
, " & command_serial & " = NULL
|
|
, note = '" & serial & "'
|
|
WHERE PackingCode = '" & txb_pack_code.Text & "'"
|
|
Else
|
|
dbcmd = "UPDATE " & sales_db & " SET PackingCode = 'null_" & txb_pack_code.Text & "' WHERE PackingCode = '" & txb_pack_code.Text & "'"
|
|
End If
|
|
|
|
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(basic_data_select(basic_info.pack_note)) > 0 Then
|
|
serial_data = basic_data_select(basic_info.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
|