본문으로 바로가기
바코2://#20. 공급자 및 공급담당자 폼 생성 - 바보처럼코딩하기

바코2://#20. 공급자 및 공급담당자 폼 생성

반응형

고객폼과 고객담당자 폼이 완성됐습니다. 이제 공급자와 공급담당자 폼을 구성해야합니다. 

다이어그램상에서 고객테이블과 공급자테이블을 비교해 보면 필드 하나를 제외하고 모두 같은걸 확인 할 수 있습니다.

"자사확인" 필드가 있습니다. 이 필드는 폼으로 구성하지 않고 테이블에 직접 입력하면 되는 부분입니다.

그렇다면 '공급자' 테이블의 필드와 '고객' 테이블의 필드가 일치하는 군요.

 '고객등록' 폼을 ctrl+c로 해서 ctrl+v로 붙여넣기를 해줍니다. 이름은 공급자등록으로 만들겠습니다.

공급자폼 생성 및 수정

공급자등록 폼을 디자인 보기로 열고 가장 먼저 눈에 띄는 레이블을 고객등록에서 공급자 등록으로 변경해주겠습니다.

alt+f11을 눌러 VBA창에서 "Form_공급자등록"을 선택하시고

ctrl+F를 눌러서 "고객"(테이블 이름)을 검색해 봅니다.

다음 찾기를 누르면서 검색을 계속 진행할 예정인데, 아래 그림을 보시면 테이블명인 고객에서 한번 멈춥니다.

 

Ctrl+F를 이용해서 코드 변경하는 방법 2가지

1. 직접 바꾼다.

변경을 원하는 테이블명이 보이면 찾기 창을 닫고 직접 바꾸시거나

2. 찾기 창의 바꾸기를 눌러서 바꾼다.

찾기 창의 바꾸기를 누르시면 '바꿀 내용(W)' 창이 뜨고 그곳에 아래와 같이 바꿀 단어인 '공급자'를 넣고 바꾸고, 또 다음 찾기를 눌러서 바꾸는 방법이 있습니다.

저는 두번째 방법을 사용해서 필요한 부분을 바꾸고 바꾼 부분을 올리겠습니다.

1.  테이블명 '고객 '-> '공급자' 로 변경 (1개)

Private Sub 버검색_Click()

검색리스트.RowSource = "SELECT * FROM  공급자 WHERE 업체명 Like '*" & 검색창 & "*'"

검색리스트.SetFocus
End Sub

2. 테이블명 '고객 '-> '공급자' 로 변경 (1개)

Private Sub 버삭제_Click()
If Nz(ID, 0) = 0 Then
MsgBox "선택한 레코드없음"
Else

CurrentDb.Execute "delete * from 공급자 where id = " & ID & "", dbSeeChanges
MsgBox "삭제"
End If

버초기화_Click
버검색_Click

End Sub

3. 테이블명 '고객 '-> '공급자' 로 변경 (1개)

Private Sub 버저장_Click()
If Nz(업체명, "") = "" Then
MsgBox "업체명 없음"
Exit Sub
End If


If Nz(ID, 0) = 0 Then 'ID가 없으면 새로운 레코드 입력하는 코드

CurrentDb.Execute "insert into 공급자(사업자등록번호,업체명,대표이름,전화번호,팩스번호 " & _
", 주소, 업종, 업태, 부가세이메일) values ('" & 사업자등록번호 & "', '" & 업체명 & "', '" & 대표이름 & "', " & _
"'" & 전화번호 & "', '" & 팩스번호 & "', '" & 주소 & "', '" & 업종 & "', '" & 업태 & "', '" & 부가세이메일 & "')", dbSeeChanges

MsgBox "저장"

Else 'ID가 있으면 수정하는 코드

Dim RS As DAO.Recordset
Set RS = CurrentDb.OpenRecordset("select * from 공급자 where id = " & ID & "", dbOpenDynaset, dbSeeChanges)
With RS
.Edit
!업체명 = 업체명
!대표이름 = 대표이름
!사업자등록번호 = 사업자등록번호
!전화번호 = 전화번호
!팩스번호 = 팩스번호
!주소 = 주소
!업종 = 업종
!업태 = 업태
!부가세이메일 = 부가세이메일

.Update
.Close
End With

Set RS = Nothing

MsgBox "수정"

End If

버초기화_Click
버검색_Click

End Sub

4. 폼이름 고객담당자 -> 공급담당자 로 변경 (1개)

Private Sub 버고객담당자_Click()
If Nz(ID, 0) = 0 Then
MsgBox "업체를 선택하세요."
Exit Sub
End If


Dim OPid As Long
OPid = ID
DoCmd.OpenForm "공급담당자", , , , , , OPid


End Sub

 

코드에 4단어를 바꿔서 폼 하나를 완성했습니다.

고객 담당자 버튼의 레이블만 공급담당자로 바꿔줍니다.

!주의 속성시트 > 기타 > 이름으로 보시면 그대로 버고객담당자 입니다. 이걸 바꾸시는게 아닙니다. 버튼을 클릭하시면

위와 같이 주황색 테두리가 생기는데 한번 더 클릭하시면 아래와 같이 수정가능하게 변경됩니다. 

* 만약 버튼이름도 바꾸고 싶으시다면, 버튼 이름 바꾸시고 코드를 그대로 복사해서 사용하시면 됩니다.

 

공급담당자폼 생성 및 수정

같은 방식으로 고객담당자  ctrl+c, ctrl+v 해서 폼을 생성합니다. 눈에 띄는 레이블을 먼저 수정해줍시다.

!! 기억해주세요~

VBA창으로 들어가줍니다. (alt+f11로 VBA로 들어가시나, 버튼 하나 클릭해서 들어가시나 별다른 차이는 없습니다.)

마찬가지로 테이블 명을 확인하면서 변경해줍니다. 

! 주의: 모두 바꾸기를 안하는 이유는, 테이블 명과 필드명이 혼재해 있기때문에 잘 보시고 변경하셔야 합니다.

변경이후 에러가 나서 진행이 안되신다면, 제가 올려 놓은 코드를 붙여넣기 하는 방식으로 진도를 따라오는 방법도 있습니다. 염려마시고 바꾸기를 해보시길 바랍니다.

필드명은 고객ID -> 공급자ID, 오브젝트는 그냥 사용하겠습니다. 오브젝트 명은 건드리지 않을랍니다.

1. 테이블명(고객담당자 -> 공급담당자), 필드명(고객ID->공급자ID) : 이하 테이블명과 필드명은 같은 변경내용입니다.

Private Sub 고객ID_AfterUpdate()
Dim strSQL As String
strSQL = "select * from 공급담당자 where 공급자ID = " & 고객ID & ""
담당자리스트.RowSource = strSQL
담당자리스트.Requery
End Sub

2. 테이블명 변경

Private Sub 버삭제_Click()
If Nz(ID, 0) = 0 Then
Exit Sub
Else

CurrentDb.Execute "Delete * from 공급담당자 where ID = " & ID & "", dbSeeChanges
End If


고객ID_AfterUpdate
버초기화_Click
End Sub

3. 테이블명, 필드명 변경

Private Sub 버저장_Click()
If Nz(담당자명, "") = "" Or Nz(담당자전화, "") = "" Then
MsgBox "담당자 이름 또는 전화번호가 없습니다."
Exit Sub
End If


If Nz(ID, 0) = 0 Then

CurrentDb.Execute "insert into 공급담당자(공급자ID,담당자명,담당자전화) values(" & 고객ID & ",'" & 담당자명 & "','" & 담당자전화 & "')", dbSeeChanges

Else


CurrentDb.Execute "update 공급담당자 set 공급자ID = " & 고객ID & ",담당자명 = '" & 담당자명 & "',담당자전화 = '" & 담당자전화 & "'  where id = " & ID & "", dbSeeChanges

End If

고객ID_AfterUpdate
버초기화_Click
End Sub

 

*노란줄 친 곳1: 레이블이 고객ID인 곳을 공급자ID로 변경

*노란줄 친 곳2: 행원본을 SELECT 공급자.ID, 공급자.업체명 FROM 공급자; 로 변경

 

이제 두폼이 완성됐습니다. 잘 작동하는군요. 순식간에 폼 2개를 날로 먹었습니다 ㅎㅎㅎ

 

공급담당자 폼 코드 전문

Option Compare Database

Private Sub Form_Load()
'MsgBox Me.OpenArgs
고객ID = Me.OpenArgs
고객ID_AfterUpdate
End Sub

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()
If Nz(ID, 0) = 0 Then
Exit Sub
Else

CurrentDb.Execute "Delete * from 공급담당자 where ID = " & ID & "", dbSeeChanges
End If


고객ID_AfterUpdate
버초기화_Click
End Sub

Private Sub 버저장_Click()
If Nz(담당자명, "") = "" Or Nz(담당자전화, "") = "" Then
MsgBox "담당자 이름 또는 전화번호가 없습니다."
Exit Sub
End If


If Nz(ID, 0) = 0 Then

CurrentDb.Execute "insert into 공급담당자(공급자ID,담당자명,담당자전화) values(" & 고객ID & ",'" & 담당자명 & "','" & 담당자전화 & "')", dbSeeChanges

Else


CurrentDb.Execute "update 공급담당자 set 공급자ID = " & 고객ID & ",담당자명 = '" & 담당자명 & "',담당자전화 = '" & 담당자전화 & "'  where id = " & ID & "", dbSeeChanges

End If

고객ID_AfterUpdate
버초기화_Click
End Sub

Private Sub 버초기화_Click()

ID = Null
고객ID = Null
담당자명 = Null
담당자전화 = Null

End Sub

공급자등록폼 코드 전문

Option Compare Database

Private Sub Form_Load()
검색창.SetFocus
End Sub



Private Sub 검색리스트_AfterUpdate()

ID = 검색리스트
업체명 = 검색리스트.Column(1)
대표이름 = 검색리스트.Column(2)
사업자등록번호 = 검색리스트.Column(3)
전화번호 = 검색리스트.Column(4)
팩스번호 = 검색리스트.Column(5)
주소 = 검색리스트.Column(6)
업종 = 검색리스트.Column(7)
업태 = 검색리스트.Column(8)
부가세이메일 = 검색리스트.Column(9)

업체명.SetFocus

End Sub

Private Sub 검색창_AfterUpdate()
버검색.SetFocus
End Sub

Private Sub 버검색_Click()

검색리스트.RowSource = "SELECT * FROM  공급자 WHERE 업체명 Like '*" & 검색창 & "*'"

검색리스트.SetFocus
End Sub

Private Sub 버고객담당자_Click()
If Nz(ID, 0) = 0 Then
MsgBox "업체를 선택하세요."
Exit Sub
End If


Dim OPid As Long
OPid = ID
DoCmd.OpenForm "공급담당자", , , , , , OPid


End Sub

Private Sub 버복제_Click()
ID = Null
End Sub

Private Sub 버삭제_Click()
If Nz(ID, 0) = 0 Then
MsgBox "선택한 레코드없음"
Else

CurrentDb.Execute "delete * from 공급자 where id = " & ID & "", dbSeeChanges
MsgBox "삭제"
End If

버초기화_Click
버검색_Click

End Sub

Private Sub 버저장_Click()
If Nz(업체명, "") = "" Then
MsgBox "업체명 없음"
Exit Sub
End If


If Nz(ID, 0) = 0 Then 'ID가 없으면 새로운 레코드 입력하는 코드

CurrentDb.Execute "insert into 공급자(사업자등록번호,업체명,대표이름,전화번호,팩스번호 " & _
", 주소, 업종, 업태, 부가세이메일) values ('" & 사업자등록번호 & "', '" & 업체명 & "', '" & 대표이름 & "', " & _
"'" & 전화번호 & "', '" & 팩스번호 & "', '" & 주소 & "', '" & 업종 & "', '" & 업태 & "', '" & 부가세이메일 & "')", dbSeeChanges

MsgBox "저장"

Else 'ID가 있으면 수정하는 코드

Dim RS As DAO.Recordset
Set RS = CurrentDb.OpenRecordset("select * from 공급자 where id = " & ID & "", dbOpenDynaset, dbSeeChanges)
With RS
.Edit
!업체명 = 업체명
!대표이름 = 대표이름
!사업자등록번호 = 사업자등록번호
!전화번호 = 전화번호
!팩스번호 = 팩스번호
!주소 = 주소
!업종 = 업종
!업태 = 업태
!부가세이메일 = 부가세이메일

.Update
.Close
End With

Set RS = Nothing

MsgBox "수정"

End If

버초기화_Click
버검색_Click

End Sub

Private Sub 버초기화_Click()
'이곳에 코딩을 합니다.
'Null의 쓰임
'텍스트 박스 오브젝트명 = null

ID = Null
업체명 = Null
사업자등록번호 = Null
대표이름 = Null
전화번호 = Null
팩스번호 = Null
주소 = Null
업종 = Null
업태 = Null
부가세이메일 = Null


End Sub

 

 

[이전 글]: 바코2://#19. 하위 개념 사용해보기(3) - 중간 오류 수정

[다음 글]: 바코2://#21. 아이템, 재고 관련 (1. 가장 중요한 스토리라인, 테이블 구성)

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