1. 리스트 수정
리스트의 활용을 여러모로 설명하며 많이 돌아왔습니다. 이제 또 다른 숙제가 남아있네요. 저 같은 경우에는 애당초 몇건이 되던 일주일(7일) 또는 보름(15일간)의 내역을 바로 보는게 조금 더 편하더라구요.
그럼 다시 select 문은 변경하면 되겠지요? 구글 검색어는 "날짜 조건의 select 문"입니다.
Private Sub 버최근기록보기_Click()
Dim strSQL As String
strSQL = "select top 20 * from 발주 order by 발주번호 desc"
발주리스트.RowSource = strSQL
End Sub
Private Sub 공급자명_AfterUpdate() ; 의 한부분
Dim strSQL As String
strSQL = "select top 10 * from 발주 where 공급자ID = " & 공급자명 & " order by 발주번호 desc"
발주리스트.RowSource = strSQL
End Sub
위의 2가지를 수정을 해야겠습니다. 조건은 "15일 기준으로 검색"을 한다 입니다.
2. 날짜 조건에 대한 로직+활용도를 생각해보기.
업무를 보는데, 조작을 최대한 적게 하고, 원하는 결과를 보면서 바로바로 작업하기 위한 환경을 만드는 프로그램은
사용자입장에서 업무에 소비되는 시간을 효율적으로 사용하는데 큰 도움을 줍니다.
항상 이런 특이 옵션을 주면, 이외의 상황에서 해결해야할 상황들이 별도로 생기게 됩니다.
지금과 같이 날짜를 가지고 핸들링을 해야하는 경우는 부차적으로 날짜기준으로 검색이 별도로 가능하게 만들어줘야, 이외의 상황에서 원하는 결과를 바로 찾을 수 있습니다.
3. 오브젝트 생성
최초의 조건은 최근 15일 기준으로 검색해서 출력하고, 이외의 상황이 발생했을때, 해당 기간동안의 거래내역을 출력할수 있게끔 폼을 구성하겠습니다.
그림과 같이 오브젝트 3개를 추가해줍니다.
각각의 이름은 시작일(텍스트박스), 종료일(텍스트박스), 버날짜검색(버튼) 지정하고
시작일과 종료일은 형식을 간단한 날짜로 지정해줍니다.
날짜 형태로 형식을 지정해주면
클릭을 하면 우측 동그라미와 같이 달력 모양 표가 나와서 달력으로 날짜를 입력할수 있습니다.
직접 써 넣어도 입력이 됩니다. 어느 쪽을 사용해도 무방합니다.
*달력을 클릭해서 선택하는 경우
* 직접 써 넣은 경우
4. 위에서 하려는 2가지 기능의 구조 설계. (+ 단순화)
1) 시작일과 종료일에 날짜가 입력된다.
2) 검색해서 출력한다.
A 버튼: 종료일은 오늘날짜를 입력한다. 시작일은 오늘-15일의 날짜를 입력한다.
B 버튼: 지정된 날짜에 따른 검색을 한다.
이외의 상황: 시작일 또는 종료일에 날짜가 비어 있을때 어떻게 처리 할것인가?
필요한 것들을 나열해보고, 먼저 만들것 부터 찾아봅시다.
5. 코딩하기 (구분동작 예시코딩)
B 버튼: 지정된 날짜에 따른 검색을 한다. (버날짜검색 버튼)
이걸 먼저 시작하겠습니다.
Private Sub 버날짜검색_Click()
Dim strSQL As String
strSQL = "select * from 발주 where 발주일 between #" & 시작일 & "# and #" & 종료일 & "# order by 발주번호 desc "
발주리스트.RowSource = strSQL
End Sub
*참고 설명
where 발주일 between #" & 시작일 & "# and #" & 종료일 & "#
1) 조건절에 A와 B 사이 (Between A and B)
between 0 and 2; 0과 2를 포함하는 0에서 2까지
2) 날짜형에 맞는 부호 넣기
숫자형: "& 내용 &"
문자형: ' "& 내용 & " ' ('과"는 붙여쓰시면 됩니다. 보이기 위해서 일부러 띄워썼습니다.)
날짜형: #"& 내용 &"#
우선 잘 나오는 군요.
이번엔 A버튼을 코딩해야겠네요.
A 버튼: 종료일은 오늘날짜를 입력한다. 시작일은 오늘-15일의 날짜를 입력한다.
Private Sub 버최근기록보기_Click()
Dim strSQL As String
strSQL = "select top 20 * from 발주 order by 발주번호 desc"
발주리스트.RowSource = strSQL
End Sub
버최근기록보기 버튼을 수정해서 작성해보겠습니다.
Private Sub 버최근기록보기_Click()
'Dim strSQL As String
'strSQL = "select top 20 * from 발주 order by 발주번호 desc"
'발주리스트.RowSource = strSQL
종료일 = Date
시작일 = Date - 15
버날짜검색_Click
End Sub
종료일 = Date
시작일 = Date - 15
버날짜검색_Click
종료일과 시작일을 지정해줍니다. 그리고 버날짜검색_click() 코드를 적용하면 아래와 같이 검색 결과가 나옵니다.
리스트의 너비를 조금 더 벌리고 아래와 같이 열너비를 수정하면 공급자명까지 볼수 있습니다.
0cm;3cm;3cm;0cm;3cm;0cm;0cm;0cm;0cm;1.503cm;0cm;0cm;1.503cm
6. 코딩 수정 및 적용
최근 기록 버튼에 삽입한 버튼은 추후에 2주짜리 기록을 바로 보시려거든 다시 사용하시면되고, 이제 그 안에 적어놓은 코드를 콤보상자(공급자명)에 수정 및 적용을 해야할때 입니다.
1) 1번재료
Private Sub 공급자명_AfterUpdate()
'상단의 코딩은 설명을 위해 생략 했습니다.
Dim strSQL As String
strSQL = "select top 10 * from 발주 where 공급자ID = " & 공급자명 & " order by 발주번호 desc"
발주리스트.RowSource = strSQL
End Sub
2) 2번재료
Private Sub 버최근기록보기_Click()
종료일 = Date
시작일 = Date - 15
버날짜검색_Click
End Sub
3) 3번재료
Private Sub 버날짜검색_Click()
Dim strSQL As String
strSQL = "select * from 발주 where 발주일 between #" & 시작일 & "# and #" & 종료일 & "# order by 발주번호 desc "
발주리스트.RowSource = strSQL
End Sub
1~3번 재료를 섞어줄 차례입니다.
종료일 = date시작일 = date -15
Dim strSQL As String
strSQL = "select * from 발주 where 발주일 between #" & 시작일 & "# and #" & 종료일 & "# AND 공급자ID = " & 공급자명 & " order by 발주번호 desc "
발주리스트.RowSource = strSQL
공급자명_AfterUpdate() 하단부를 아래와 같이 변경합니다.
종료일 = Date
시작일 = Date - 15
Dim strSQL As String
strSQL = "select * from 발주 where 발주일 between #" & 시작일 & "# and #" & 종료일 & "# AND 공급자ID = " & 공급자명 & " order by 발주번호 desc "
발주리스트.RowSource = strSQL
업체명 콤보상자를 업데이트하면 아래와 같이 결과가 나옵니다.
데이터를 어떤 조건을 줄지 그리고 버튼을 어떻게 만들것인지는 작업환경에 따라서 많은 변수가 작용합니다. 필요하신 부분에 따라서 위의 예시들을 보시면서 수정하시면 될것 같습니다.
공급자명_AfterUpdate() 코드전문
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
'Dim strSQL As String
'strSQL = "select top 10 * from 발주 where 공급자ID = " & 공급자명 & " order by 발주번호 desc"
'발주리스트.RowSource = strSQL
종료일 = Date
시작일 = Date - 15
Dim strSQL As String
strSQL = "select * from 발주 where 발주일 between #" & 시작일 & "# and #" & 종료일 & "# AND 공급자ID = " & 공급자명 & " order by 발주번호 desc "
발주리스트.RowSource = strSQL
End Sub
[이전 글]: 바코2://#32. 아이템, 재고 관련 (11) 공급주문 폼 - 폼 구성
[다음 글]:
'바보처럼 코딩하기 > 바보처럼 코딩하기 ver.2' 카테고리의 다른 글
바코2://#32. 아이템, 재고 관련 (11) 공급주문 폼 - 폼 구성 (0) | 2022.02.18 |
---|---|
바코2://#31. 아이템, 재고 관련 (10) 공급주문 폼 - 폼 구성 (0) | 2022.02.11 |
바코2://#30. 아이템, 재고 관련 (9) 공급주문 폼 - 폼 구성 (0) | 2022.02.10 |
바코2://#29. 아이템, 재고 관련 (8) 공급주문 폼 - 폼 구성 (0) | 2022.02.07 |
바코2://#28. 아이템, 재고 관련 (7) 공급주문 폼 - 폼 구성 (0) | 2022.01.19 |