시무자동화 & 컴퓨터 활용능력 1급/컴활유형 1회차

유형 7회 오답노트 - 1회차(77/80)

유혁스쿨 2021. 7. 22. 01:13
728x90
반응형

액셀 : 77 ~ 83점

틀린문제 : 문제 2-(4)? / 문제 4-3(1)

못푼문제 : 문제 2-(2,5)

 

틀린문제

 

문제 4-3(1)

지문 : 30이상이면 추가강좌, 15이상이면 공백, 그 외에는 SELECT CASE문을 사용하여 VBA에서 사용자정의 함수를 만들어라

내답 : 그 외 -> Case Is < 15   fn비고 = "강좌폐강"

정답 : 그 외 -> Case Else   fn비고 = "강좌폐강"

 

풀이

음.. 이거 결과값으로는 완벽하게 정답이다

하지만 문법이 틀렸다.

왜 저렇게 풀었냐면 Case Else를 한번도 안써봐서 몰랐다

제한시간이 점점 조여지고 있어서 순발력있게 잔머리를 굴려서 "아 30이상 15이상 순서니까 15 미만이면 그 외의 값이 되겠네!" 라고 빠르게 판단하고 세운 식이다.

다음부터는 Case Else를 쓰자...잊지마잉~!

 

 

문제 4-3(1)

지문 : 폼이 초기화되면 접수코드(Lst접수코드) 목록에는 H7:I15영역의 값이 표시되도록 프로시저를 작성하라.

내답 : Lst접수코드.RowSource = "H7:I15" 로 했다가 2열이 출력안되서 Lst접수코드 = List(H7, I15)로 바꿔봤으나 오답

정답 : Lst접수코드.RowSource = "H7:I15" (줄개행) Lst접수코드.ColumnCount=2

 

풀이

아 새로운 유형이다 틀릴수밖에없다

문제를 겪어가면서 터득하게되니 오히려 다행이다 (긍정적으로해라)

처음에 절반은 맞았는데 2번째 열이 출력이 안되서 고민하고 뻘짓만했다.

ColumnCount는 목록상자의 원본으로 사용될 열 개수를 지정하는 속성이다.(지정하지 않으면 1열만 표시된다)

Lst접수코드.ColumnCount=2 목록상자의 원본으로 2개의 열 개수를 지정하여 사용하며 2열로 표시된다.

 

못푼문제

문제 2(5)

지문 : 

내답 : 

=INDEX(MATCH(LARGE(($G$4:$G$31=H$34)*($J$4:$J$31),$G35),($G$4:$G$31=H$34)*($J$4:$J$31),$G35),$E$4:$E$31)

정답 :

=INDEX($E$4:$E$31,MATCH(LARGE(($G$4:$G$31=H$34)*($J$4:$J$31),$G35),($G$4:$G$31=H$34)*($J$4:$J$31),0))

 

풀이

=INDEX(범위,MATCH(Large((조건) * 관련범위, K),(조건) * 관련범위,0))

 


액세스 : 80점

 

틀린문제 : 문제 2-1(1) / 문제4-4

못푼문제 : 문제2-2/문제2-3 (시간안에 못품)

 

문제 2-1(1)

지문 : 폼이 열려 있을 경우 다른 작업을 수행할 수 없도록 설정하시오.

내답 : 데이터탭의 데이터입력, 추가가능, 삭제가능, 편집가능, 필터사용 값을 모두 아니요

정답 : 기타탭의 모달 값을 예 로 설정

 

풀이

폼이 열려있을 때 다른작업을 수행할 수 없도록 설정하는것은 기타탭 - 모달 : 예 라고한다!

모달? 모달이면... 모달창아닌가ㅠㅠㅠㅠㅠㅠ

다음은 어느 블로그에서 정리한 문장이다.

모달 : 현재 폼이 닫히기 전에 다른 폼을 선택할 수 없음.

인터넷 창의 모달창과 비슷한건 맞는거같다.. 모달창이 뜨면 해당 모달창에서 확인버튼을 누르기전까지는 다른작업을 못하긴 하니까... (마우스영역으로 모달창이 취소가 설정되있는건 예외 ㅎ)

 

 

문제 2-2

지문 : <거래처>테이블과 DLookup() 함수를 이용하여 <납품내역>폼의 'txt거래처명' 컨트롤에는 'txt거래처코드'에 해당하는 거래처명이 표시되도록 구현하시오.

내답 : DLookUp([납품내역],[txt거래처명],[거래처명]=[Forms]![납품내역]![txt거래처코드])

정답 : DLookUp("거래처명","거래처","거래처코드=txt거래처코드")

 

풀이

일단 납품 내역 폼은 레코드 원본이 남품내역목록 폼이다.

만약 지문에나온대로 하지않고 그냥 거래처명 이라고 써도 거래처명이 정상적으로 나온다

근데 지문이 의도한 이유는 납품내역목록에 있는 거래처명이 아닌 납품내역 테이블의 거래처명을 가져오라고 한것이다.

왜 그런지는 추측하건데, 거래처 테이블에 정확히 등록되어있는 거래처명을 띄우기 위해서가 아닐까 싶다.

납품내역 폼의 거래처코드를 기준으로 거래처테이블의 기본키인 거래처코드와 비교하여 일치하는 값을 가져오도록 하라는것이다.

일단 내 답은 왜 저따구로 썼는지 모르겠다;;;

지난번 문제를 찾아서 읽어보면... DLookUp()메서드는 인수가 순서대로 "찾아야할 필드", "테이블 혹은 쿼리", "조건" 이렇게 세개가 들어가는데 여기서는 거래처 테이블에서 찾으라고 지문에서 떤져줬다.

그래서 테이블 혹은 쿼리에 테이블명을 적어줘야 한다.

그리고 참조 개체가 테이블일때 조건은 그냥 해당 테이블의 필드명과 폼의 컨트롤명을 기준으로 값을 비교해주면된다.

 

1. 첫번째 인수는 찾아야 할 필드

2. 두번째 인수는 찾아야 할 필드가 들어있는 테이블 혹은 쿼리

3. 세번째 인수는 조건이며 두번째 인수가 <테이블>일때는 테이블의 필드명 = 폼의 컨트롤명 / 두번째 인수가 <쿼리>일경우 [Forms]![폼명]![컨트롤명]=[쿼리명]![필드명]

이때, 값을 비교하는 제수 피제수의 순서는 서로 바뀌어도 상관이 없다! 

 

 

문제 2-3

지문 : <납품내역> 폼의 '조회'(cmd조회) 버튼을 클릭하면 해당 월의 자료가 표시되도록 포함 매크로를 작성

내답 : [납품일자]=[Forms]![납품내역]![txt월] 이후에 Month([납품일자])=[Forms]![납품내역]![txt월]

정답 : Month([납품일자])=[Forms]![납품내역]![txt월]

 

풀이

이거 맞추긴 했는데 시간안에 못품;;; 

우선 해맸던 이유는 [납품일자]=[Forms]![납품내역]![txt월] 처음에 이렇게썼다가

자꾸 형식이 틀렸다고 해서 음,,, 문제지문을 다시봤더니 월에 해당하는것이라 되어있고 납품일자는 형식이 년-월-일

형식으로 나오기때문에 형식이 달라서 그런거같아 월 기준으로만 비교하기위해 Month() 함수를 씌워봤다.

그랬더니 맞았다.....

조금만 더 센스를 키우자...

 

 

문제 4-4

지문 : <납품내역> 테이블을 이용하여 제품코드가 'A12'인 제품에 대해 금액을 입력하여 납품단가가 증가되는 <단가변경> 업데이트 쿼리를 작성하라.

 

내답 : 제품코드-조건 : "A12" / 납품단가-업데이트 : [납품단가]+[매개변수] , 조건:[금액을 입력]

정답 : 제품코드-조건 : "A12" / 납품단가-업데이트 : [납품단가]+[금액을 입력]

 

풀이

음 유형은 값을 입력받아 입력받은 값으로 필드의 값을 수정하는 업데이트쿼리의 심화 응용 문제이다.

많이 안풀어봐서 틀린것같고 어려운건 없으니 꼭 외워두자.

일단은 조건절에 매개변수를 받아야 될줄 알았지만 업데이트절에도 매개변수 문법을 사용하면 똑같이 매개변수 입력폼이 뜬다.

그것을 잘 응용하여 업데이트할 필드 + 매개변수 즉, 업데이트 칸에 [필드명]+[매개변수내용]으로 작성하면된다!

[납품단가]+[금액을 입력] 이렇게! 업데이트 쿼리에서 입력받은 매개변수값만큼 증가시키는건 조건칸이 아니라 업데이트 칸임!!!


추가정리

 

문제 3-2

 

풀이

문제는 맞췄지만 때려맞췄다...

이벤트 프로시저 즉 VBA를 통해 보고서를 여는 속성은

DoCmd.OpenReport("보고서이름",열리는 형태) 이며

인쇄 미리 보기 형태로 여는 속성은 괄호안의 두번째 속성에 'acViewPreview'이다.

해당 속성을 맞춘 방법은 두번째 인수를 입력할 때 콤마를 누르면 선택이 가능하도록 목록을 띄워주는데 Preview밖에 미리보기 키워드가 없어서 그냥 저걸로했음. 기억하기만하면될듯!

728x90
반응형