Q. 하위 개념? 그게 뭔가요?
여러가지로 사용되거나 다양한 사례들이 있지만, 거두 절미하고 컴팩트하게 포스트에서 연재하는 내용만 다루겠습니다.
우리는 '고객'테이블 외에 '고객담당자'라는 테이블을 만들어 놨습니다.
고객 테이블에 필드를 추가해서 사용할 수 있지만, 담당자가 몇명까지 늘어날지 아무도 모르죠.
필드를 미리 2명정도 생각해서 만들어 두더라도, 2명이상 계속 증가 할 수도 있습니다.
이런 점을 보완하기 위해서 독립 테이블을 만들어 사용하면 나중에 고객 테이블을 따로 수정을 안해도 계속 사용 할 수 있습니다.
이런식으로 고객ID를 가지고 코딩으로 연결해서 사용할 예정입니다. 관계설정에서 직접 연결해서 사용하기도 하지만, 우리는 지금 unbound로 만들어 사용중이니 열쇠가 될만한 녀석을 다른 테이블에 심어 놓고 그걸 가져다 쓰는걸 해볼 요량입니다. 이렇게 된다면 unbound로 한번에 두개 이상의 테이블을 사용해서 작업이 가능해집니다.
폼 디자인에서 고려해서 선택해야 할 부분이 있습니다.
1. 고객 폼에는 직접적인 영향을 안줘도 되는 부분이라 따로 팝업되는 폼을 만든다.
2. '따로 팝업하는건 폼 낭비다.' 그냥 하나의 폼에 오브젝트를 추가해서 만들겠다.
선택은 개발자 몫입니다. 정답이 없는 선택사항이니 편하신 대로 하면 됩니다.
저는 튜토리얼을 위해서 팝업을 시키겠습니다.
우선 기본 포맷은 고객 폼과 비슷해서 고객폼을 선택후 ctrl+c, ctrl+v를 눌러 복사하고 이름을 고객담당자로 변경해서 저장하겠습니다.
복사후에는 모든 코드를 지워주시고, 앞서 했던 방식대로
디자인 변경 > 오브젝트 이름 변경까지 해주고 코딩을 시작합니다.
물론 담당자 리스트의 열 개수, 열 너비 부분도 싹 지워 주세요.
열개수는 4
열너비는 0;0;3 으로 만들겠습니다. (리스트의 너비는 6cm 정도 잡았습니다.)
대략 이런 형태로 만들었고, (공간 디자인은 알아서 잘, 마음껏 하시길... ^^;)
이벤트가 발생하는 click(): 버저장, 버삭제, 버초기화, afterupdate(): 리스트 에 코드 삽입을 할 준비를 해줍니다.
그 다음 고객ID부분을 콤보상자로 바꿔줍니다.
오브젝트 클릭후 속성시트 > 행원본 >... 클릭
'고객' 테이블 더블 클릭후 '닫기'
'ID', '업체명' 넣고 '닫기'
예
속성시트에 행원본이 추가됐습니다.
디자인 모드에서 열개수와 열너비를 조정합니다.
폼 보기에서 콤보상자를 누르면 아래와 같이 목록이 나옵니다.
앞서 만들었던대로, 초기화 버튼을 먼저 작성하고, 버초기화_click 코드를 저장 삭제 버튼에 삽입을 해봅니다.
Option Compare Database
Private Sub 담당자리스트_AfterUpdate()
End Sub
Private Sub 버삭제_Click()
버초기화_Click
End Sub
Private Sub 버저장_Click()
버초기화_Click
End Sub
Private Sub 버초기화_Click()
ID = Null
고객ID = Null
담당자명 = Null
담당자전화 = Null
End Sub
코드 삽입후 초기화 버튼을 클릭해보면 정상작동하는걸 보실 수 있습니다.
각 폼의 코딩 순서는 반복된다고 보시면 됩니다.
초기화 코드 > 저장 코드 > 수정 코드 > 삭제 코드
저장코드를 완성한후, 리스트 리쿼리 코드까지 작성하겠습니다. (저장코드를 하나 넣고, 그 다음에 리스트 리쿼리 코드를 작성후 실행을 해보면, 저장과 리스트 리쿼리가 잘 작동하는 지 확인 할 수 있습니다.)
저장코드는 수정과 같이 사용을 위해서 앞서 했던대로 if 문을 사용해서 시작합니다.
이번 포스트에서는 저장 코드의 확장 순서를 보여드리면서 진행해보겠습니다.
저장코드의 확장
1. if문과 초기화 코드 넣기
Private Sub 버저장_Click()
If Nz(ID, 0) = 0 Then
Else
End If
버초기화_Click
End Sub
2. 새 레코드 추가 부분에 입력 틀 넣기
Private Sub 버저장_Click()
If Nz(ID, 0) = 0 Then
CurrentDb.Execute "", dbSeeChanges
Else
End If
버초기화_Click
End Sub
3. 새 레코드 추가 부분 코딩
Private Sub 버저장_Click()
If Nz(ID, 0) = 0 Then
CurrentDb.Execute "insert into 고객담당자() values()", dbSeeChanges
Else
End If
버초기화_Click
End Sub
4. 새 레코드 추가 부분 완성하기(테이블 부분 필드명 입력)
Private Sub 버저장_Click()
If Nz(ID, 0) = 0 Then
CurrentDb.Execute "insert into 고객담당자(고객ID,담당자명,담당자전화) values()", dbSeeChanges
Else
End If
버초기화_Click
End Sub
5. 새 레코드 추가 부분 완성하기(오브젝트 부분 오브젝트명 입력 with 데이터형식의 부호주의)
Private Sub 버저장_Click()
If Nz(ID, 0) = 0 Then
CurrentDb.Execute "insert into 고객담당자(고객ID,담당자명,담당자전화) values(" & 고객ID & ",'" & 담당자명 & "','" & 담당자전화 & "')", dbSeeChanges
Else
End If
버초기화_Click
End Sub
일단 새 레코드 추가 코드가 완성됐으니, 레코드 한개를 추가해봅니다.
위와 같이 기입하고 저장 버튼을 눌러보겠습니다.
리스트에는 안나오지만, 테이블에 레코드 입력이 잘된것을 볼 수 있습니다.
고객 ID의 After Update에 코드삽입을 해줍니다.
담당자는 고객ID에 따라서 종속되는 데이터이므로, 각 업체별 담당자만 보면 되기 때문에 구지 모든 업체의 담당자를 불필요하게 전부 볼 필요는 없습니다.
Private Sub 고객ID_AfterUpdate()
Dim strSQL As String
strSQL = "select * from 고객담당자 where 고객ID = " & 고객ID & ""
담당자리스트.RowSource = strSQL
담당자리스트.Requery
End Sub
위와 같이 처음처럼을 선택하면 안보입니다. 아래와 같이 바보코딩을 선택하면 우리가 입력했던 담당자 정보를 볼 수 있습니다.
이제 리스트의 After Update() 에 각 정보를 오브젝트에 뿌려주는 코드를 진행합니다.
Private Sub 담당자리스트_AfterUpdate()
ID = 담당자리스트
고객ID = 담당자리스트.Column(1)
담당자명 = 담당자리스트.Column(2)
담당자전화 = 담당자리스트.Column(3)
End Sub
이번 포스트의 코드는 아래와 같습니다. 다음 포스트에서는 수정부분과 삭제부분을 완성하고, 고객등록폼과 고객담당자 폼과 연결하는 방법을 완성해보겠습니다.
Option Compare Database
Private Sub 고객ID_AfterUpdate()
Dim strSQL As String
strSQL = "select * from 고객담당자 where 고객ID = " & 고객ID & ""
담당자리스트.RowSource = strSQL
담당자리스트.Requery
End Sub
Private Sub 담당자리스트_AfterUpdate()
ID = 담당자리스트
고객ID = 담당자리스트.Column(1)
담당자명 = 담당자리스트.Column(2)
담당자전화 = 담당자리스트.Column(3)
End Sub
Private Sub 버삭제_Click()
버초기화_Click
End Sub
Private Sub 버저장_Click()
If Nz(ID, 0) = 0 Then
CurrentDb.Execute "insert into 고객담당자(고객ID,담당자명,담당자전화) values(" & 고객ID & ",'" & 담당자명 & "','" & 담당자전화 & "')", dbSeeChanges
Else
End If
버초기화_Click
End Sub
Private Sub 버초기화_Click()
ID = Null
고객ID = Null
담당자명 = Null
담당자전화 = Null
End Sub
[이전 글]: 바코2://#15. 기초 코딩, 폼 다듬기 2 - 메세지 박스와 삭제
[다음 글]: 바코2://#17. 하위 개념 사용해보기(2)
'바보처럼 코딩하기 > 바보처럼 코딩하기 ver.2' 카테고리의 다른 글
바코2://#18. 하위 개념 사용해보기(3) (0) | 2021.12.27 |
---|---|
바코2://#17. 하위 개념 사용해보기(2) (0) | 2021.12.27 |
바코2://#15. 기초 코딩, 폼 다듬기 2 - 메세지 박스와 삭제 (0) | 2021.12.23 |
바코2://#14. 기초 코딩, 폼 다듬기 (0) | 2021.12.23 |
바코2://#13. 기초 코딩, 버튼에 코딩삽입(5) - 수정2 (0) | 2021.12.23 |