280 lines
9.4 KiB
VB.net
280 lines
9.4 KiB
VB.net
![]() |
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
|