하나도 몰라도 되는 - #10 (폼) - 내가 원하는 내용 구현하기 8
우리는 위와 같은 폼을 완성했습니다.
이제 리스트 조회를 입맛에 맞게 구현 해봐야겠네요~
Q. 리스트를 입맛에 맛게 만드는게 뭐가 다른가요?
A-1. 조회를 해서 원하는 조건에 맞는 내용을 검색할 수 있고,
A-2. 정렬을 통해서 원하는 순서대로 데이터를 나열할 수 있습니다.
예를 들어 상호를 가나다 순으로 보고 싶거나,
대표자이름을 가나다 순으로 보고 정렬을 해 놓으면
조금 더 쉽게 찾을 수 있겠지요?
기록한 데이터를 조회,정렬하는 것 = 시간을 절약하는 방법
앞서 말씀드렸던 DB의 중요한 기능중 하나 입니다.
* 여기서 잠깐 정규화에 대해서 설명하고 넘어갈게요~
DB의 정렬과 조회를 위해서 다양한 형식을 취해도
아래의 그림과 같이 일정 형식안에서
기록이 된다면 두가지 형식으로 기록이 됐어도 추가 코드를 통해 다시 풀어서 정렬이 가능하지만가급적이면 일정 형식을 유지해서 기록하는건 코드의 효율성을 높이는데 중요한 역할을 합니다.
이것을 정규화라고 합니다.
곧 정규화 대상은 정규화를 지키려고 노력하시길 바랍니다.
다시 진도를 나가겠습니다~
우선 사업자정보에 주소가 빠졌으므로, 주소를 넣고 나머지 코드들도 수정을 해주겠습니다.
(중간에 필드하나를 넣고 폼과 테이블을 수정하는 과정입니다.)
수정전 | 수정후 |
복사 붙여넣기로 주소 레이블과 텍스트 박스 생성 |
주소의 텍스트 박스 선택후 이름을 주소로 변경
리스트 선택후 열개수 10으로 변경
t사업자정보 테이블에 주소 필드 추가
초기화 버튼 코드에
주소 = Null
추가
Private Sub 초기화_Click()
ID = Null
상호 = Null
대표자 = Null
사업자등록번호 = Null
업태 = Null
업종 = Null
부가세이메일 = Null
전화 = Null
팩스 = Null
주소 = Null
Me.리스트.Requery
End Sub
저장 버튼에 주소 추가
Private Sub 저장_Click()
If Nz(상호, "") = "" Then
MsgBox "상호가 없습니다. 상호를 입력해주세요"
Exit Sub
Else
CurrentDb.Execute "insert into t사업자정보 (상호,대표자,사업자등록번호,업태,업종,부가세이메일,전화,팩스,주소) values ( " & _
"'" & 상호 & "','" & 대표자 & "','" & 사업자등록번호 & "','" & 업태 & "','" & 업종 & "','" & 부가세이메일 & "','" & 전화 & "','" & 팩스 & "','" & 주소 & "') ", dbSeeChanges
End If
초기화_Click
End Sub
수정 버튼에 주소 추가
Private Sub 수정_Click()
If Nz(ID, "") = "" Then
MsgBox "수정할 업체를 선택하지 않았습니다. 수정할 업체를 선택해주세요."
Exit Sub
Else
CurrentDb.Execute "update t사업자정보 set 상호 = '" & 상호 & "',대표자 = '" & 대표자 & "',사업자등록번호 = '" & 사업자등록번호 & "' " & _
",업태 = '" & 업태 & "',업종 = '" & 업종 & "',부가세이메일 = '" & 부가세이메일 & "',전화 = '" & 전화 & "',팩스 = '" & 팩스 & "', 주소 = '" & 주소 & "' where id = " & ID & " ", dbSeeChanges
End If
초기화_Click
End Sub
리스트 에프터 업데이트에 주소 추가
Private Sub 리스트_AfterUpdate()
Me.ID = 리스트
Me.상호 = DLookup("상호", "t사업자정보", "id = " & ID & "")
Me.대표자 = DLookup("대표자", "t사업자정보", "id = " & ID & "")
Me.사업자등록번호 = DLookup("사업자등록번호", "t사업자정보", "id = " & ID & "")
Me.업태 = DLookup("업태", "t사업자정보", "id = " & ID & "")
Me.업종 = DLookup("업종", "t사업자정보", "id = " & ID & "")
Me.부가세이메일 = DLookup("부가세이메일", "t사업자정보", "id = " & ID & "")
Me.전화 = DLookup("전화", "t사업자정보", "id = " & ID & "")
Me.팩스 = DLookup("팩스", "t사업자정보", "id = " & ID & "")
Me.주소 = DLookup("주소", "t사업자정보", "id = " & ID & "")
End Sub
다시 폼을 열면 아래 그림과 같은 모습으로 나옵니다.
정렬을 좀 해야하니, 주소도 넣고 2개 정도 업체를 넣어보겠습니다.
대충 이렇게 업체를 4개를 만들었는데,
저장과 수정 버튼을 합쳐서, 행동을 조금 단순화 시켜보겠습니다.
Private Sub 저장_Click()
If Nz(상호, "") = "" Then
MsgBox "상호가 없습니다. 상호를 입력해주세요"
Exit Sub
End If
If Nz(ID, "") = "" Then
CurrentDb.Execute "insert into t사업자정보 (상호,대표자,사업자등록번호,업태,업종,부가세이메일,전화,팩스,주소) values ( " & _
"'" & 상호 & "','" & 대표자 & "','" & 사업자등록번호 & "','" & 업태 & "','" & 업종 & "','" & 부가세이메일 & "','" & 전화 & "','" & 팩스 & "','" & 주소 & "') ", dbSeeChanges
Else
CurrentDb.Execute "update t사업자정보 set 상호 = '" & 상호 & "',대표자 = '" & 대표자 & "',사업자등록번호 = '" & 사업자등록번호 & "' " & _
",업태 = '" & 업태 & "',업종 = '" & 업종 & "',부가세이메일 = '" & 부가세이메일 & "',전화 = '" & 전화 & "',팩스 = '" & 팩스 & "', 주소 = '" & 주소 & "' where id = " & ID & " ", dbSeeChanges
End If
초기화_Click
End Sub
Private Sub 저장_Click()
If Nz(상호, "") = "" Then
MsgBox "상호가 없습니다. 상호를 입력해주세요"
Exit Sub
End If
If Nz(ID, "") = "" Then
CurrentDb.Execute "insert into t사업자정보 (상호,대표자,사업자등록번호,업태,업종,부가세이메일,전화,팩스,주소) values ( " & _
"'" & 상호 & "','" & 대표자 & "','" & 사업자등록번호 & "','" & 업태 & "','" & 업종 & "','" & 부가세이메일 & "','" & 전화 & "','" & 팩스 & "','" & 주소 & "') ", dbSeeChanges
Else
CurrentDb.Execute "update t사업자정보 set 상호 = '" & 상호 & "',대표자 = '" & 대표자 & "',사업자등록번호 = '" & 사업자등록번호 & "' " & _
",업태 = '" & 업태 & "',업종 = '" & 업종 & "',부가세이메일 = '" & 부가세이메일 & "',전화 = '" & 전화 & "',팩스 = '" & 팩스 & "', 주소 = '" & 주소 & "' where id = " & ID & " ", dbSeeChanges
End If
초기화_Click
End Sub
아이디가 비어 있다면, 저장을 실행하고, 아이디가 존재하면 수정에 썼던 코드를 실행합니다.
수정할 대상을 클릭을 해야 컨트롤에 그 내용이 보이기 때문에 수정의 선행은 ID가 있어야 하고
저장의 선행은 ID가 없어야 되기 때문에 두개의 조건은 한개의 코드로 묶을 수가 있습니다.
수정버튼을 삭제하고, 코드도 지워 줍니다.
이제 우리는 '보기'를 목적으로 코딩을 시작했기 때문에
한눈에 보기 좋게 모든 것들을 조정할 것입니다.
주소의 컨트롤을 보면 정보가 짤려서 보기가 불편하니 길이를 키워줍니다.
컨트롤 선택후 하늘색 동그라미 부분에 마우스 커서를 가져가면 커서가 좌우 화살표로 변경됩니다.
클릭해서 원하는 만큼 늘리시면 됩니다.
레이블 너비를 맞추겠습니다.
레이블들을 드래그 선택하고
정렬 > 크기/공간 > 가장 넓은 너비에 를 클릭해줍니다.
아래와 같이 바뀌고
이 상태에서 아래 그림과 같이 정렬을 시키겠습니다.
이것도 공간낭비 같으니 컨트롤 위치를 조정 하겠습니다.
이번에는 레이아웃 기능을 사용합니다.
레이블과 텍스트 상자를 선택하고 아래 그림과 같이 레이아웃을 적용시킵니다.
레이아웃을 ID에 적용시킨후, 밑의 상호를 클릭해서 ID 밑에 가져가면 아래의 그림과 같이
핑크색 줄이 나타납니다. 이때 손을 떼면 상호 레이블과 텍스트 상자는 레이아웃안으로 들어갑니다.
레이아웃이 적용되고, 비어 있는 곳은 노란 줄 친곳과 같이 점선으로 표시됩니다.
상호 옆에 세 칸을 선택하고 아래와 같이 병합을 시킵니다. 주소도 같은 방식으로 칸을 늘려주겠습니다.
아래와 같은 공간 배열을 했습니다.
더 예쁘게 하는건 개인적으로 조금 더 보시고, 적당히 쓸만한 공간을 할당해줘서 사용하는데 불편을 없애는게 중요하다는 취지로 위의 내용을 알려드렸습니다.
다음 시간은 리스트를 손보겠습니다.
현재 글 : #10 (폼) - 내가 원하는 내용 구현하기 8
하나도 몰라도 되는 MS 엑세스 - #0 인덱스 페이지