허용되야 할것과 허용되지 말아야 할것들
이제 허용되지 말아야 할것은
- 공급자 저장 버튼을 반복해서 눌렀을 때 반응을 하지 못하게 할것
- 공급자 명을 바꾸지 못하게 할것
그리고 허용되야 할것은
-배송지 변경
-배송지 담당자 변경
-공급자담당자 변경
입니다.
역순으로 허용되야 할 것들 부터 코딩을 해주겠습니다.
Private Sub 배송지_AfterUpdate()
CurrentDb.Execute "update 발주 set 배송지주소 = '" & 배송지 & "' where 발주번호 = " & 발주번호 & "", dbSeeChanges
End Sub
Private Sub 배송지담당자_AfterUpdate()
CurrentDb.Execute "update 발주 set 배송지담당자 = '" & 배송지담당자 & "' where 발주번호 = " & 발주번호 & "", dbSeeChanges
End Sub
뒤에 1을 붙여보고 마지막 숫자를 4로 바꿔봤는데, 잘 적용됐습니다.
아래와 같이 코드를 수정해주고, 공급자명을 업데이트 하면
Private Sub 공급자명_AfterUpdate()
'--[공급자명(ID) 변경확인]
'기존에 공급자가 있는지 확인, 수정이 (x)안되고, 새로 발행하게 유도함.
If DLookup("공급자ID", "발주", "발주번호 = " & 발주번호 & "") <> 0 Then
'같은 발주번호에 공급자ID가 있다면, 공급자ID의 기본값은 항상 0
MsgBox "이미 등록되어 있는 공급자 ID가 있습니다. 발주서를 취소하시고 새로 발행하세요"
'수정이 가능하게 하는 방법도 많습니다만, 다양한 기능을 가능하게 하다가 전산이 엉망이 되기도 합니다.
'튜토리얼 진행상 깔끔하게 기록을 유지하도록, 공급자 변경은 불가능하게 만들겠습니다.
Exit Sub
Else
'--[공급자담당자]
공급자담당자 = Null
공급자담당자.RowSource = "select ID, 담당자명, 담당자전화 from 공급담당자 where 공급자ID = " & 공급자명 & ""
'--[모델명]
모델코드 = Null
모델코드.RowSource = "select ID, 모델코드, 아이템명, 색상명, 공급단가 from 아이템 where 공급자ID = " & 공급자명 & ""
End If
End Sub
위와 같은 메시지가 작동합니다.
공급 담당자의 경우 한 회사의 담당자가 2명이상 있을경우도 있기 때문에 변경할수 있게 코드를 넣겠습니다.
Private Sub 공급자담당자_AfterUpdate()
CurrentDb.Execute "update 발주 set 공급담당자='" & 공급자담당자.Column(1) & "' " & _
",공급담당연락처='" & 공급자담당자.Column(2) & "' where 발주번호 = " & 발주번호 & "", dbSeeChanges
End Sub
스댕가위 회사에 담당자를 한명 더 추가해줍니다.
이스댕 과장, 010-9999-9999
처음에는 김스댕 대리로 저장을 해주고, 그 다음엔 이스댕 과장으로 변경하겠습니다.
정상적으로 바뀌었습니다.
이제 반복되는 공급자 저장 버튼에 대한 허용 금지 코드입니다.
일부 수정 가능한 것들은 각 오브젝트에 넣어주었기 때문에 "공급자 저장"버튼은 처음 발주서 발행에 시작의 의미 정도로만 사용하려고 합니다.
* 다른 방법으로는 업체를 미리 선정해서 폼 로딩시 미리 준비가 되게 하는 방법도 있습니다. 뒤로 숨기는 코딩 보다는 가급적 노출을 해서 이벤트를 분절해서 보여드리는게 튜토리얼의 목적이니, 이 튜토리얼의 코딩은 경제성의 원칙에 맞춰 있지는 않다는 점을 알려드립니다. 필요하시다면 변경해서 본인의 목적에 맞춰서 코딩해주시기 바랍니다.
!코드 수정!
Private Sub 버공급자저장_Click()
If Nz(공급자명, 0) = 0 Or Nz(공급자담당자, 0) = 0 Or Nz(배송지, "") = "" Or Nz(배송지담당자, "") = "" Then
MsgBox "필수 필드를 작성해주세요."
Exit Sub
End If
Dim 판단 As Long
판단 = Nz(DLookup("공급자ID", "발주", "발주번호 = " & 발주번호 & ""), 0)
If 판단 <> 0 Then
MsgBox "기발행 발주서입니다."
Exit Sub
End If
CurrentDb.Execute "update 발주 set 공급자ID=" & 공급자명 & ",공급자명='" & 공급자명.Column(1) & "',공급담당자='" & 공급자담당자.Column(1) & "' " & _
",공급담당연락처='" & 공급자담당자.Column(2) & "',배송지주소='" & 배송지 & "',배송지담당자='" & 배송지담당자 & "' " & _
" where 발주번호 = " & 발주번호 & " ", dbSeeChanges
MsgBox "발주서가 생성됐습니다. 내용을 입력해주세요."
End Sub
코드 수정을 하시고 처음 '버공급자저장'을 누르면
그리고 다시 한번 누르면
이렇게 출력합니다.
이제 발주서 상부내용은 어지간히 끝난것 같네요. 다음 포스트에서 하부 내용을 이어가겠습니다.
[이전 글]: 바코2://#27. 아이템, 재고 관련 (6) 공급주문 폼 - 폼 구성
[다음 글]: 바코2://#29. 아이템, 재고 관련 (8) 공급주문 폼 - 폼 구성
'바보처럼 코딩하기 > 바보처럼 코딩하기 ver.2' 카테고리의 다른 글
바코2://#30. 아이템, 재고 관련 (9) 공급주문 폼 - 폼 구성 (0) | 2022.02.10 |
---|---|
바코2://#29. 아이템, 재고 관련 (8) 공급주문 폼 - 폼 구성 (0) | 2022.02.07 |
바코2://#27. 아이템, 재고 관련 (6) 공급주문 폼 - 폼 구성 (0) | 2022.01.13 |
바코2://#26. 아이템, 재고 관련 (5) 공급주문 폼 - 폼 구성 (1) | 2022.01.12 |
바코2://#25. 아이템, 재고 관련 (4) 공급주문 폼 - 주문 번호 생성하기 (0) | 2022.01.10 |