280 lines
9.4 KiB
VB.net
Raw Normal View History

2025-05-12 09:27:02 +09:00
Imports Microsoft.Office.Interop.Excel
Public Class mainform
Private Const RowCount As Byte = 3
Private Const PKCodeCheck As String = "PK001"
Private Sub mainform_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Text = "DUALSONIC PK Code Register Program Ver 1.0.0"
End Sub
Private Sub txbop1_pk_KeyDown(sender As Object, e As KeyEventArgs) Handles txbop1_pk.KeyDown
If e.KeyCode = Keys.Return Then
btnop1_search_Click(sender, New System.EventArgs())
End If
End Sub
Private Sub btnop1_search_Click(sender As Object, e As EventArgs) Handles btnop1_search.Click
Dim UcaseText As String = UCase(txbop1_pk.Text)
PKCode_Search(UcaseText)
End Sub
Private Sub PKCode_Search(searchtxt As String)
dgvop1_data.Rows.Clear()
Dim DBCmd As String = "SELECT * FROM " & PKCodeDB & " WHERE PKCode = '" & searchtxt & "'"
Dim QueryCount As Byte = DBQueryReader(DBCmd)
Dim SearchCount As Byte = 0
If QueryCount Then
Dim ColListCount As Byte = RowCount - 1
Dim RowListCount As Byte = (QueryCount / RowCount) - 1
For i = 0 To RowListCount
Dim DataSearch(ColListCount) As String
For n = 0 To ColListCount
DataSearch(n) = sqlDataQuery(SearchCount)
SearchCount += 1
Next
dgvop1_data.Rows.Add(DataSearch)
Next
dgvop1_data.ClearSelection()
dgvop1_data.Rows(0).Selected = True
txbop1_pk.Text = String.Empty
Else
MsgBox("존재하는 PK코드가 존재하지 않습니다. 먼저 등록하여 주십시오.", vbExclamation)
End If
End Sub
Private Sub btnop1_del1_Click(sender As Object, e As EventArgs) Handles btnop1_del1.Click
If dgvop1_data.SelectedRows.Count > 0 Then
If MsgBox("선택한 행을 삭제하시겠습니까?", vbExclamation + vbOKCancel) = MsgBoxResult.Ok Then
PKCode_RowDel()
End If
Else
MsgBox("선택한 행이 없습니다.", vbExclamation)
End If
End Sub
Private Sub PKCode_RowDel()
Dim DBCmd As String = "DELETE FROM " & PKCodeDB & " WHERE PKCode = '" & dgvop1_data.SelectedRows(0).Cells(0).Value.ToString & "' AND ProdCode = '" & dgvop1_data.SelectedRows(0).Cells(1).Value.ToString & "'"
If DBCommand(DBCmd) Then
dgvop1_data.Rows.RemoveAt(dgvop1_data.CurrentCell.RowIndex)
MsgBox("데이터를 삭제하였습니다.", vbInformation)
Else
MsgBox("데이터를 삭제하지 못하였습니다.", vbCritical)
End If
End Sub
Private Sub btnop1_del2_Click(sender As Object, e As EventArgs) Handles btnop1_del2.Click
If dgvop1_data.SelectedRows.Count > 0 Then
If MsgBox("해당 코드 번호를 전체 삭제하시겠습니까?", vbExclamation + vbOKCancel) = MsgBoxResult.Ok Then
If MsgBox("정말 삭제하시겠습니까?", vbCritical + vbOKCancel) = MsgBoxResult.Ok Then
PKCode_AllDel()
End If
End If
Else
MsgBox("선택한 행이 없습니다.", vbExclamation)
End If
End Sub
Private Sub PKCode_AllDel()
Dim DBCmd As String = "DELETE FROM " & PKCodeDB & " WHERE PKCode = '" & dgvop1_data.SelectedRows(0).Cells(0).Value.ToString & "'"
If DBCommand(DBCmd) Then
dgvop1_data.Rows.Clear()
MsgBox("데이터를 삭제하였습니다.", vbInformation)
Else
MsgBox("데이터를 삭제하지 못하였습니다.", vbCritical)
End If
End Sub
Private Sub btnop1_reg_Click(sender As Object, e As EventArgs) Handles btnop1_reg.Click
If String.IsNullOrWhiteSpace(txbop1_regpk.Text) Or String.IsNullOrWhiteSpace(txbop1_regpd.Text) Or String.IsNullOrWhiteSpace(nudop1_regct.Text) Then
MsgBox("비어있는 칸이 존재합니다. 값을 입력해주세요.", vbCritical)
Exit Sub
Else
If Mid(txbop1_regpk.Text, 1, 5) = PKCodeCheck Then
PKCode_Register()
Else
MsgBox("PK 코드 양식에 맞지 않는 코드 번호입니다. PK 코드는 앞자리가 ""PK001"" 로 시작됩니다.", vbExclamation)
End If
End If
End Sub
Private Sub PKCode_Register()
Dim DBCmd As String = "INSERT INTO " & PKCodeDB & " VALUES ('" & txbop1_regpk.Text & "','" & txbop1_regpd.Text & "'," & nudop1_regct.Value & ")"
If DBCommand(DBCmd) Then
txbop1_regpk.Text = String.Empty
txbop1_regpd.Text = String.Empty
nudop1_regct.Value = 1
MsgBox("등록 완료하였습니다.", vbInformation)
Else
MsgBox("PK 코드를 등록하지 못했습니다.", vbCritical)
End If
End Sub
Private Sub btnop_reset_Click(sender As Object, e As EventArgs) Handles btnop_reset.Click
dgvop1_data.Rows.Clear()
txbop1_pk.Text = String.Empty
txbop1_regpk.Text = String.Empty
txbop1_regpd.Text = String.Empty
nudop1_regct.Text = String.Empty
txbop1_pk.Focus()
End Sub
Private Sub btnop1_load_Click(sender As Object, e As EventArgs) Handles btnop1_load.Click
Dim OfdExcel As New OpenFileDialog()
OfdExcel.Filter = "Excel Files|*.xls;*.xlsx"
OfdExcel.Title = "엑셀 파일 불러오기"
OfdExcel.Multiselect = False
If OfdExcel.ShowDialog() = DialogResult.OK Then
Dim filePath As String = OfdExcel.FileName
ExcelLoad(filePath)
MsgBox("불러오기 완료!", vbInformation)
End If
End Sub
Private Sub ExcelLoad(filePath As String)
Dim excelApp As New Application()
Dim workBook As Workbook = Nothing
Dim workSheet As Worksheet = Nothing
Try
workBook = excelApp.Workbooks.Open(filePath)
workSheet = CType(workBook.Sheets(1), Worksheet)
dgvop1_data.Rows.Clear()
Dim rowNum As Integer = 3
Do While workSheet.Range("D" & rowNum).Value IsNot Nothing
Dim setCode As String = workSheet.Range("D" & rowNum).Value.ToString
Dim colNum As Byte = 7
Dim dgvData(RowCount - 1)
For i = 0 To 7
Dim cellValue As String = workSheet.Cells(rowNum, colNum).Value
If Not String.IsNullOrEmpty(cellValue) Then
dgvData(0) = setCode.Replace(" ", "").Replace(vbTab, "")
dgvData(1) = workSheet.Cells(rowNum, colNum).Value.ToString.Replace(" ", "").Replace(vbTab, "")
dgvData(2) = workSheet.Cells(rowNum, colNum + 2).Value.ToString.Trim.Replace(" ", "").Replace(vbTab, "")
Else
Exit For
End If
dgvop1_data.Rows.Add(dgvData)
colNum += 3
Next
rowNum += 1
Loop
Catch ex As Exception
MsgBox("오류 발생: " & ex.Message, vbCritical)
Finally
workBook.Close(False)
excelApp.Quit()
ReleaseObject(workSheet)
ReleaseObject(workBook)
ReleaseObject(excelApp)
End Try
End Sub
Private Sub ReleaseObject(ByVal obj As Object)
Try
System.Runtime.InteropServices.Marshal.ReleaseComObject(obj)
obj = Nothing
Catch ex As Exception
obj = Nothing
Finally
GC.Collect()
End Try
End Sub
Private CheckBol As Boolean = False
Private CheckStr As String = String.Empty
Private Sub btnop1_save_Click(sender As Object, e As EventArgs) Handles btnop1_save.Click
For i = 0 To dgvop1_data.RowCount - 2
Dim setCode As String = dgvop1_data.Rows(i).Cells(0).Value
If setCode <> CheckStr Then
CheckStr = setCode
If PKCodeCompare(setCode) Then
CheckBol = True
Else
CheckBol = False
End If
End If
If CheckBol = True Then
If PKCode_ExcelSave(i) Then
Exit For
End If
dgvop1_data.Rows(i).DefaultCellStyle.BackColor = Color.Green
Else
dgvop1_data.Rows(i).DefaultCellStyle.BackColor = Color.Red
End If
Next
End Sub
Private Function PKCode_ExcelSave(n As Integer) As Boolean
Dim DBCmd As String = "INSERT INTO " & PKCodeDB & " VALUES ('" & dgvop1_data.Rows(n).Cells(0).Value & "','" & dgvop1_data.Rows(n).Cells(1).Value & "'," & dgvop1_data.Rows(n).Cells(2).Value & ")"
If DBCommand(DBCmd) = False Then
MsgBox("PK 코드를 등록하지 못했습니다.", vbCritical)
Return True
End If
Return False
End Function
Private Function PKCodeCompare(setCode As String) As Boolean
Dim DBCmd As String = "SELECT 1 FROM " & PKCodeDB & " WHERE PKCode = '" & setCode & "' LIMIT 1"
Dim dbResult As String = DBQueryScalar(DBCmd)
If String.IsNullOrWhiteSpace(dbResult) Then
Return True
Else
Return False
End If
End Function
End Class