이번 포스팅은 5개의 버튼 각각의 코드입니다.
버튼은 등록, 수정, 삭제, 초기화, 닫기 이렇게 5개입니다.
우선 등록 버튼은 매입처명, 구분, 발주구분을 입력한뒤 클릭시 DB에 저장(INSERT)하는 코드입니다.
'등록
Private Sub btnRegister_Click()
If txtPurchase.Value = "" Then
MsgBox "매입처명을 입력해 주세요.", vbCritical, "입력오류"
Exit Sub
End If
Call Connect_DB
'중복 매입처 체크
SQL = "SELECT * FROM purchase WHERE purchaseName LIKE '" & txtPurchase.Value & "'"
rs.CursorLocation = adUseClient '★★★★★★★★★★★★★★★RecordCount를 뽑아내기위해 반드시 필요함
rs.Open SQL, Cn, adOpenStatic, adLockReadOnly
If rs.RecordCount > 0 Then
MsgBox "이미 등록되어있는 매입처 입니다.", vbCritical, "오류"
rs.Close
Cn.Close
Exit Sub
Else
rs.Close
End If
'매입처 추가 SQL문
SQL = "INSERT INTO purchase (purchaseName, sortation, orderSortation) VALUES ('" & txtPurchase.Value & "', '" & txtSortation.Value & "', '" & txtOrdersort.Value & "')"
rs.Open SQL, Cn
Call Load_Purchase_DB
Cn.Close
End Sub
매입처명이 비어있을경우, 중복되는 매입처명이 있을경우에는 모듈을 종료합니다.
구분과 발주구분은 비워도 상관 없습니다.
수정 버튼은 선택한 매입처 데이터를 수정(UPDATE)하는 코드 입니다.
'수정
Private Sub btnEdit_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call Connect_DB
'매입처 수정 SQL문
SQL = "UPDATE purchase SET purchaseName = '" & Me.txtPurchase.Value & "'"
SQL = SQL + ", sortation = '" & Me.txtSortation.Value & "'"
SQL = SQL + ", orderSortation = '" & Me.txtOrdersort.Value & "'"
SQL = SQL + " WHERE idx = '" & Me.txtIdx.Value & "'"
rs.Open SQL, Cn
Call Load_Purchase_DB
Cn.Close
End Sub
삭제 버튼은 선택한 매입처 데이터를 삭제(DELETE)하는 코드 입니다.
'삭제
Private Sub btnDelete_Click()
Dim YN As VbMsgBoxResult
YN = MsgBox("선택하신 매입처 정보를 삭제하시겠습니까?", vbYesNo)
If YN = vbNo Then Exit Sub
Call Connect_DB
SQL = " DELETE FROM purchase WHERE idx = '" & Me.txtIdx.Value & "'"
rs.Open SQL, Cn
Call Load_Purchase_DB
Cn.Close
MsgBox "선택하신 품명 정보가 삭제되었습니다..", vbInformation
Call reset_Textbox
End Sub
초기화 버튼은 텍스트 박스를 비워주는 코드, 닫기 버튼은 유저폼을 닫아주는 코드 입니다.
'초기화
Private Sub btnReset_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Call reset_Textbox
End Sub
'닫기
Private Sub btnClose_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Unload Me
End Sub
Private Sub reset_Textbox()
With Me
.txtIdx.Value = ""
.txtPurchase = ""
.txtSortation = ""
.txtOrdersort = ""
End With
End Sub
그리고 리스트뷰에 추가되는 코드가 있는데, 리스트뷰를 클릭(선택)했을때 선택한 데이터를 각 텍스트박스로 뿌려주는 코드와 리스트뷰의 머리글을 클릭했을시 오름/내림 차순으로 정렬해주는 코드를 추가했습니다.
'listview 아이템 선택
Private Sub ListProduct_ItemClick(ByVal Item As MSComctlLib.ListItem)
With ListProduct.SelectedItem
Me.txtIdx = .Text
Me.txtPurchase = .SubItems(1)
Me.txtSortation = .SubItems(2)
Me.txtOrdersort = .SubItems(3)
End With
End Sub
'listview 머리글 영역 클릭시 실행
Private Sub ListProduct_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)
With ListProduct
.SortKey = ColumnHeader.Index - 1
.SortOrder = IIf(.SortOrder = lvwAscending, lvwDescending, lvwAscending)
.Sorted = True
End With
End Sub
매입처 관리폼은 이걸로 마무리가 되었습니다.
차후 수정될 가능성도 있지만 일단은 여기까지가 기본 기능은 다 넣었다고 생각됩니다.
마지막으로 idx 텍스트박스의 Visible 속성을 False로 변경해 주세요.
다음 포스팅은 매출처 관리폼을 다룰 예정입니다. 아마도 내용만 다를뿐 코드 자체는 거의 비슷하게 될거라 생각됩니다.
유저폼 파일 첨부합니다.
'엑셀 vba > 발주관리' 카테고리의 다른 글
매출처 관리 #2 매출처 관리 유저폼 만들기 (0) | 2021.02.17 |
---|---|
매출처 관리 #1 테이블 만들기 (0) | 2021.02.16 |
매입처 관리폼 #3 Listview 데이터 채우기 (0) | 2021.02.09 |
매입처 관리폼 #2 테이블 생성 (0) | 2021.02.09 |
매입처 관리폼 #1 라벨을 이용한 버튼 만들기 & Listview (0) | 2021.02.08 |