본문으로 바로가기
바코2://#29. 아이템, 재고 관련 (8) 공급주문 폼 - 폼 구성 - 바보처럼코딩하기

바코2://#29. 아이템, 재고 관련 (8) 공급주문 폼 - 폼 구성

반응형

오랜만에 다시 포스트를 이어가네요. 다들 명절과 연휴 잘 보내셨나요? 저도 간만에 아이들과 함께 시간을 보냈습니다. 아이들이 너무 좋아해서 아이들에게 많이 미안해지는 연휴였습니다. 앞으로도 애들한테 더 잘해야겠어요 ㅎㅎ.

 

아래의 시스템은 "공급자 저장"이라는 버튼이 눌러져야 새로운 발주서가 생성이 되고, 그 아래 내용을 채워가는 형식입니다. 실제 사용면에서는 "공급자 저장"버튼을 누르는게 지나치기 쉽고, 누르기도 번거롭습니다.
이를 해결하는 방법은
1) 시각적으로 트리거 기능의 폼을 하나 생성해서 발주서 생성 단계를 만들어서 상세페이지로 들어오거나,
2) 빨간줄 아래의 저장 버튼을 누르는 순간 판단해서 발주서를 생성하게 하는 방식을 사용하거나,
3) 공급자 명과 공급담당자가 선택이 되면 발주서코드가 생성되게 하는 방법등을 사용할 수 있습니다.

초보 분들의 접근성이 이 연재포스팅의 목적이기 때문에 아무래도 각각의 이어지는 코드를 분절해서 보여야 하는게 좋을것 같다는 판단을 해서 우선은 단계별로 적용이 되는 순서로 코딩과 설명을 진행하겠습니다.

 

발주서 작성관련해서 지난 시간까지 한 내용은 빨간 줄을 기준으로 위쪽에 해당하는 내용입니다.

 

아래와 같이 1~3까지 실행을 하면, 발주서가 생성됐다는 창이 나옵니다.

테이블에 잘 기입이 됐는지 확인을 해보겠습니다. 우리가 찾아봐야할 테이블은 두가지 입니다.

발주와 발주상세 테이블입니다.

 

발주테이블에서 위에서 실행시킨대로 입력이 잘됐고, 발주상세는 원하던대로 비어 있습니다.

 


이제 염두 해야할 부분이 순번, 수량 합계, 합계액입니다.

 

우선 발주서가 발급되면 순번이 채워지는 코드를 진행합니다.

테스트 버튼 하나를 만들고 실행을 해보면

Private Sub 버테스트_Click()
순번생성
End Sub

Private Sub 순번생성()
'(순번조회): 저장버튼에서도 사용예정 이후 (순번입력)의 순서로 진행됨.
'순번조회
Dim 마지막순번 As Integer
마지막순번 = Nz(DMax("순번", "발주상세", "발주번호 = " & 발주번호 & ""), 0) + 1
순번 = 마지막순번

End Sub

순번이 채워지는걸 볼수 있습니다. 발주번호 생성과 비슷합니다. 

공급자저장 버튼에 순번생성을 삽입해서, 실행을 시키면 이제 순번이 자동적으로 1로 채워집니다.


리스트에 rowsource 설정, 속성시트 수정


네가지 버튼에 대한 코딩을 시작합니다.

초기화, 복제, 삭제, 저장 순으로 진행합니다. 우선 직관적으로 보이는 코드들 먼저 작성을 합니다.

Private Sub 버초기화_Click()
모델코드 = Null
아이템명 = Null
색상명 = Null
수량 = Null
공급가 = Null
소계 = Null
순번 = Null
상세ID = Null


리스트 = Null
리스트.Requery
'추가 수정사항이 있을 예정

End Sub
Private Sub 버복제_Click()
상세ID = Null
순번 = Null
'추가/수정사항이 있을 예정
End Sub
Private Sub 버삭제_Click()
클릭방지

If Nz(상세ID, 0) = 0 Then
Exit Sub
Else
CurrentDb.Execute "delete * from 발주상세 where id = " & 상세ID & "", dbsechanges
MsgBox "삭제"
End If
'추가/수정사항 있을 예정

버초기화_Click
End Sub
Private Sub 버저장_Click()
클릭방지
'모델코드 수량이 없으면 저장이 안되게함
If Nz(모델코드, "") = "" Or Nz(수량, 0) = 0 Then
MsgBox "코드나 수량없음"
Exit Sub
End If


If Nz(상세ID, 0) = 0 Then '새로등록
CurrentDb.Execute "insert into 발주상세 (발주번호,발주일,공급자ID,순번,모델코드,아이템명,색상명,수량, " & _
"공급가,소계,부가세,합계액) " & _
"values(" & 발주번호 & ",#" & 발주일 & "#," & 공급자명 & "," & 순번 & ",'" & 모델코드.Column(1) & "','" & 아이템명 & "' , " & _
"'" & 색상명 & "', " & 수량 & ", " & 공급가 & ", " & 소계 & "," & 소계 * 0.1 & " ," & 소계 * 1.1 & ")", dbsechanges
MsgBox "등록"
Else '업데이트
CurrentDb.Execute "update 발주상세 set 발주번호 = " & 발주번호 & ", 발주일 = #" & 발주일 & "#, " & _
"공급자ID = " & 공급자ID & ",순번=" & 순번 & ",모델코드='" & 모델코드.Column(1) & "',아이템명='" & 아이템명 & "' " & _
",색상명='" & 색상명 & "', 수량=" & 수량 & ", 공급가 = " & 공급가 & ", 소계= " & 소계 & ",부가세=" & 소계 * 0.1 & " " & _
",합계액=" & 소계 * 1.1 & " where ID = " & 상세ID & "", dbsechanges


MsgBox "수정"
End If

버초기화_Click
'추가/수정사항이 있을예정

End Sub

위의 코드를 넣고, 발주서를 발행하고, 모델코드와 수량을 넣고 저장을 누르면 아래와 같은 결과가 나옵니다.

 

여기까지 하신뒤 결과를 살펴보면, 수량합계와 합계액, 그리고 순번이 자동으로 채워지지 않았습니다. 코드를 수정/첨가를 하겠습니다.

 

코드를 진행하기 전에 폼을 닫으시고, 발주 테이블과 발주 상세테이블을 직접 삭제해서 깨끗하게 비워주세요.

 


저장 버튼 하단에 순번생성을 넣어주시고,


합계계산을 위해 프로시저 하나를 생성합니다.

Private Sub 합계계산()
수량합계 = Nz(DSum("수량", "발주상세", "발주번호 = " & 발주번호 & ""), 0)
합계액 = Nz(DSum("합계액", "발주상세", "발주번호 = " & 발주번호 & ""), 0)

'부가세를 눈으로 확인하고 싶다면, 텍스트박스 오브젝트를 만들어서 같은 방법으로 사용하시면 됩니다.
'부가세 = Nz(DSum("부가세", "발주상세", "발주번호 = " & 발주번호 & ""), 0)

End Sub

저장버튼 하단 또는 초기화버튼 하단에 합계계산을 다시 적어 넣습니다.


수량합계, 합계액, 순번이 정상적으로 작동합니다. (아래의 합계액은 부가세가 포함된 금액입니다.)


다음 글에서는 리스트 클릭후 수정과, 최근 발주기록에서 이전 기록을 가져와서 수정하는 과정으로 진행하겠습니다.


[이전 글]: 바코2://#28. 아이템, 재고 관련 (7) 공급주문 폼 - 폼 구성

[다음 글]: 바코2://#30. 아이템, 재고 관련 (9) 공급주문 폼 - 폼 구성


 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유