본문으로 바로가기
바보처럼 코딩하기 (엑세스) 13. 콤보상자 - 바보처럼코딩하기

바보처럼 코딩하기 (엑세스) 13. 콤보상자

반응형

 

콤보상자 설명입니다.

 

오픈소스

 

엑세스따라하기13.accdb
1.62MB

Option Compare Database





Private Sub 코드기록_Click()

'Application 과 VBE (Visual Basic for Applications Editor)
'개체의 계층구조
'Application(어플리케이션): 가장 큰 구조, 우리가 흔히 말하는 앱, 어플의 풀네임, 워드, 엑셀, 엑세스 등등은 워드 어플리케이션, 엑셀 어플리케이션을 줄여서 엑셀,워드라고 말한다.
'Object(오브젝트,개체): 우리가 사용했던, 텍스트 박스, 리스트 등등 개체를 뜻함
'Property(프로퍼티,속성):개체 선택시 그 개체의 속성을 속성창에서 볼수 있다. '개체의 속성'으로 이하하면 됌, 서장훈의 키는 207cm이다. 서장훈이라는 오브젝트의 키 속성은 207cm.
'Method(메서드): 개체가 실행하는 동작.

'아래의 구문은 Application.VBE property(syntax)

Application.VBE.MainWindow.Visible = True 'Alt+F11


End Sub

Private Sub 삭제버튼_Click()

Dim RS As DAO.Recordset '변수 선언
'[형식] Dim (변수명) AS (변수의 데이터 형식) : Declare In Memory, 메모리를 예약한다는 의미, 메모리를 할당하기위해 사용되는 구문
'오브젝트의 변수선언은 Dim 오브젝트이름 AS 클래스이름
'레코드셋 오브젝트를 취급하는 변수 RS를 선언함.
'Data Access object Link: https://en.wikipedia.org/wiki/Data_access_object
'ADO (ActiveX Data Object) 데이터 연결설정을할때 쓰일 방법 Link(한글): http://yhkimm.egloos.com/367350 (한얼의 블로그)

'[예시1] Dim 금액 as double : 금액이라는 이름의 변수를 선언하는데 dobule이라는 데이터 형식을 취함
'---------------------------
'Data Type |  Value Range
'---------------------------
'Boolean   |  True or False (참, 거짓)
'Integer   |  정수, -2,147,483,648 부터 2,147,483,647 까지
'Double    |  실수
'String    |  문자열
'Variant   |  유동적인 데이터 형식

'MSDN Link (Dim statement(VB)):https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2008/7ee5a7s1(v=vs.90)
'DAO,ADO 관련 링크: 11회까지 공부한 나... 영문 사이트가 대강 보이기 시작한다. http://codevba.com/help/Recordset_Builder.htm#.X-pxnNgzaUk
'과학관련 용어의 80~90%이상이 영어로 되어있다. 한국말로 된 사이트를 찾고 싶은 마음은 이해하나, 몇 %가 되겠는가? 심화학습을 위해서는 두려움을 버리고 다양한 사람들이 내놓은 다양한 방법을 위해
'영문사이트를 꾸준히 보는 것도 필요하다.

'레코드셋을 할당하는 이유는 빠르게 DB를 사용하기 위해서이다.


Set RS = CurrentDb.OpenRecordset("select * from t_아이템정보 where ID = " & Me.ID & " ", dbOpenDynaset, dbSeeChanges)
'Set : 개체 변수를 할당한다. Dim을 통해서 변수를 지정했으면 데이터타입, 개체(object) 데이터 타입은 Set을 통해서 데이터 할당.
'데이터 베이스에 접속시키는 개념
'눈에 보이지 않는 부분(표로 만들어 제공)
'Database.OpenRecordset method (DAO) Link: https://docs.microsoft.com/en-us/office/client-developer/access/desktop-database-reference/database-openrecordset-method-dao
'구문을 덩어리로 나누어 읽기
'어렵지만 직역을 안하고 의역을 하는 이유는 용어 대한 암기는 가능하면 피하려고함. 장점: 지금 당장은 이해하기 수월함, 단점: 후에 조금 실력이 늘면 실력이 좋은 사람이 정확한 용어로 설명할때 잘 못알아들음;;;;
'1. set RS = Currentdb.openrecordset()
'2. "Select * from 테이블명" or "Select * From 테이블명 Where 조건"
'3. 위의 조건은 조건=조건 이라는 형식의 조건을 비교하는 구문으로 형성
'4. 조합을하면 아래와 같은 형식으로 이루어짐
'4-1. Set RS = CurrentDb.OpenRecordset(                                                                                 )
'4-2.                                  "select * from 테이블이름 where ID = " & Me.ID & " "
'4-3.                                                                                      , dbOpenDynaset, dbSeeChanges


'5-1. Set RS = CurrentDb.OpenRecordset()  :마법주문1: 레코드셋을 사용하기 위한 구문: 의역을 한다면 나는 현재 ()안의 내용을 레코드셋으로 지정할것이다.
'5-2. "select * from 테이블이름 where ID = " & Me.ID & " " :마법주문2: 테이블안의 모든레코드중 조건이 맞는것으로~
'5-3. , dbOpenDynaset, dbSeeChanges  :마법주문3: 심지어 DB가 외부에 있지만 가능하게 할것이다.
'5-4: 코딩 몇글자로 눈에 보이지 않는 테이블 비슷한 data 집합체를 만든다. 그 안의 내용은 Select 구문으로 이루어진 내용이고, BackEnd는 분리되어 있는 상황(현재상황 아님)에서 가져올것이다.

RS.Delete
'내가 만들 레코드를 삭제하라!!

Set RS = Nothing
'내가 만든 레코드셋을 지워라

'[2]폼에 관련된 명령 (1): 텍스트 박스
신규버튼_Click

'[2]폼에 관련된 명령 (2): 리스트
Me.아이템리스트.Requery


'[3]메세지 박스 명령
MsgBox "삭제완료"


'6. 저장,수정,삭제구문 모음
'6-1 저장
'Set RS = CurrentDb.OpenRecordset("select * from t_아이템정보", dbOpenDynaset, dbSeeChanges)
'RS.AddNew

'저장할내용------------------(시작) 저장할 부분(필드) = 저장할 값
'RS!모델코드 = Me.모델코드
'RS!아이템종류 = Me.아이템종류
'RS!구매단가 = Me.구매단가
'RS!구매처 = Me.구매처
'저장할내용------------------(끝)

'RS.Update
'RS.Close

'6-2 수정
'Set RS = CurrentDb.OpenRecordset("select * from t_아이템정보 where ID = " & Me.ID & " ", dbOpenDynaset, dbSeeChanges)
'With RS
'.Edit

'수정할내용------------------(시작) 수정할 부분(필드) = 저장할 값
'!모델코드 = Me.모델코드
'!아이템종류 = Me.아이템종류
'!구매단가 = Me.구매단가
'!구매처 = Me.구매처
'수정할내용------------------(끝)

'.Update
'.Close
'End With


'6-3 삭제
'Set RS = CurrentDb.OpenRecordset("select * from t_아이템정보 where ID = " & Me.ID & " ", dbOpenDynaset, dbSeeChanges)
'With RS
'.Delete
'(ID에 해당하는 내용을 다 지움):저장할 내용을 따로 안적음
'.Close
'End With



End Sub
Private Sub if버튼_Click()
'간단한 IF문 설명
'IF 문은 조건문입니다.
'조건이란 판가름 하는 기준으로 본다.
' 만약 A가 '0' 이면
' B에 '거짓'을 나타내고
' A가 아니면 '참을 나타내라.

Dim A As Integer, B As String

If Me.input = 0 Then
Me.output = "거짓"

ElseIf Me.input <> 0 Then
Me.output = "참"

End If



End Sub

Private Sub if버튼2_Click()

Dim A As Integer, B As String

If Me.input = 0 Then
Me.output = "영"

ElseIf Me.input > 0 Then
Me.output = "양수"

'Else
ElseIf Me.input < 0 Then
Me.output = "음수"

End If

End Sub


Private Sub 신규버튼_Click()

Me.ID = Null
Me.모델코드 = Null
Me.아이템종류 = Null
Me.구매단가 = Null
Me.구매처 = Null

End Sub

Private Sub 아이템리스트_AfterUpdate()
'1번째 리스트 보이는 방법.: 리스트에서 바로 읽는 방법

Me.ID = 아이템리스트.Column(0)

'2번째 리스트 보이는 방법.: 테이블에서 읽어 오는 방법

Me.모델코드 = DLookup("모델코드", "t_아이템정보", "ID = " & Me.ID & "")
Me.아이템종류 = DLookup("아이템종류", "t_아이템정보", "ID = " & Me.ID & "")
Me.구매단가 = DLookup("구매단가", "t_아이템정보", "ID = " & Me.ID & "")
Me.구매처 = DLookup("구매처", "t_아이템정보", "ID = " & Me.ID & "")



End Sub

Private Sub 저장버튼_Click()




Dim RS As DAO.Recordset
If Nz(ID, 0) = 0 Then
'[1-1] 저장
Set RS = CurrentDb.OpenRecordset("select * from t_아이템정보", dbOpenDynaset, dbSeeChanges)
RS.AddNew

RS!모델코드 = Me.모델코드
RS!아이템종류 = Me.아이템종류
RS!구매단가 = Me.구매단가
RS!구매처 = Me.구매처

RS.Update
RS.Close

MsgBox "저장"


'Else
ElseIf Nz(ID, 0) <> 0 Then
'[1-2] 수정
Set RS = CurrentDb.OpenRecordset("select * from t_아이템정보 where ID = " & Me.ID & " ", dbOpenDynaset, dbSeeChanges)
With RS
.Edit
!모델코드 = Me.모델코드
!아이템종류 = Me.아이템종류
!구매단가 = Me.구매단가
!구매처 = Me.구매처

.Update
.Close
End With

MsgBox "수정"

End If

'[2]폼에 관련된 명령 (1): 텍스트 박스
신규버튼_Click

'[2]폼에 관련된 명령 (2): 리스트
Me.아이템리스트.Requery
End Sub

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