ETC/자격증

[컴퓨터활용능력1급]수업 정리 8

AnKiWoong 2022. 9. 14. 08:25
반응형


<폼 속성>

폼 열었을 때 나타나는 오류
   - #Name? : 레코드 원본이 설정되지 않으면 나타나는 오류
             즉, 폼의 자료의 원본인 테이블이나 쿼리가 지정되지 않은 경우
 

폼 기본 보기 속성(64page)
   - 단일 폼 : 자료 하나씩 보기
            (레코드 탐색 단추나 명령단추로 다음 레코드로 이동)
   - 연속 폼 : 레코드 여러 개 보여주는 보기
                 (세로 스크롤바로 이동)
   - 데이터 시트 : 테이블의 데이터 시트 보기과 같은 형태
   - 분할 표시 폼 : 상단 폼(단일 폼)이고, 하단에 관련 자료가 테이블(데이터시트)처럼 보여지는 형태


테두리 스타일
   - 가늘게 = 폼의 크기 조정 불가능(조절 불가능)
   - 굵게 = 폼의 크기 조정 가능(조절 가능)


색상 - RGB(화면 색상)
  - #000000(검정) - #FFFFFF(흰색)
  - #C0C0C0(무채색-회색)  : 12632256

인쇄색상 - CMYK


모달
  - 현재 폼(창)을 닫기 전에는 다른 폼이나 개체 작업을 진행할 수 없도록 하는 기능
  - 개체 탐색기 자체가 닫힘.
  - 우선순위를 높혀서 다른 작업을 못함.
  - 기본값 : 모달리스(modalless)





<컨트롤 속성>

컨트롤 오류
  - 컨트롤이 하얗게 보이는 경우 : 컨트롤 원본이 설정되지 않은 경우
    즉, 각 컨트롤의 원본인 필드(쿼리나 테이블 필드)와 연결이나 지정되지 않는 경우,  디자인 보기 상태에서는 언바운드 컨트롤로 나타남.
 
예) 각 필드에 바운드 시켜라. 
                 각 필드를 컨트롤 원본으로 설정하세요.
     각 필드에 연결하세요.
            => 결과적으로는 텍스트 상자 컨트롤에 필드명이 보인다.
              (필드명은 컨트롤 이름과 다르게 지정되기 하고, 같을 수도 있다.)


계산 컨트롤 = 계산식이 입력된 텍스트 상자 컨트롤, 
  - 계산식은 컨트롤 원본에 입력하거나, 컨트롤에 수식을 직접 입력


텍스트 상자 컨트롤 = 입력란 컨트롤 = 필드 컨트롤 = 계산 컨트롤


컨트롤의 데이터를 편집하지 못하게 하는 경우
  - 데이터(자료) 보호 기능 : 데이터 탭-잠금-예로 설정
                  (데이터는 변경 불가능하지만, 컨트롤은 클릭 가능)


컨트롤에 포커스를 가질 수 없도록 하는 경우 
  - 컨트롤 사용하지 못하게 하는 기능, 커서나 탭이 지정 컨트롤로 들어가지 못함.(클릭이 안됨)
    데이터 탭-사용 가능-아니오로 설정



탭 순서 
  - 탭 설정은 텍스트 상자 컨트롤과 명령 단추에만 가능
  - 화면에 보이는 대로 순서를 할 경우 <자동 순서>를 지정하면 됨.
  - 자동 순서를 지정해도 순서가 맞지 않으면, 앞의 필드 선택기로 순서 변경(드래그)


1-7. 컨트롤 오른쪽 맞춤 : 정렬 탭 - 맞춤 - 오른쪽 - 텍스트 상자 컨트롤이 이동


1-8. 텍스트 오른쪽 맞춤 : 형식 탭 - 글꼴 - 오른쪽 맞춤 -텍스트 상자는 이동 안하고 텍스트만 이동


컨트롤 크기 : 가장 긴 길이로, 가장 넓은 너비로(왼쪽 설정만)
컨트롤 맞춤 : 위쪽/아래쪽->왼쪽/오른쪽
      

<폼 컨트롤 변경>

폼의 텍스트 상자 -> 마우스 오른쪽 변경 -> 콤보상자 컨트롤

행 원본 = rowsource

행 원본 유형 : 값목록, 테이블/쿼리, 필드목록

저장되는 열 = 바운드 열 = 연결되는 열 : 가져오신 순서에서 열번호


목록 값만 허용 -> 콤보 상자에서만 설정

여러 항목 선택 -> 목록 상자에서만 선택 가능


콤보상자가 문제 그림에서 가로 스크롤바가 있는 경우 -> 목록 너비 자동
콤보상자가 문제 그림에서 가로 스크롤바가 없는 경우 -> 목록 너비는 열 너비를 합친 크기로 설정(잘림없이 나타남)

콤보 상자 컨트롤 설정 사항
 : 데이터 원본(행 원본) 설정 필요
   행원본 유형 - 테이블/쿼리, 값목록(입력시), 필드목록
   연결(저장될) 열번호=바운드 열 번호-가져온(select) 필드 순서에서 지정
   열개수 - 가져온 필드 수만큼 설정
   열너비 순서대로 입력(열 너비를 숨길 경우 0cm)  
0cm;2cm (첫열은 숨기고, 두번째 열은 2cm)
0cm; (첫열은 숨기고, 두번째 열은 목록 너비만큼 자동 2.54cm)
         ;0cm (첫 열은 목록 너비만큼 자동, 두번째 열을 숨기기)

   목록 너비 : 열들의 너비를 합친 만큼하거나 자동으로 설정, 
                  잘리지 않게 설정하려면 열너비들의 합 이상(약간 커도 괜찮음).

   목록 값만 허용 : 행원본에 존재하는 것만 사용(콤보상자만 가능)



<출제유형2>

저장되는 열번호가 1이면 
행원본 : 데이터 입력 순서는 -1;남;0;여
행원본 유형 : 값목록
바운드열 : 1
열개수 : 2
열너비 : 0cm; (첫 열은 숨기고, 두번째 열너비 자동)

저장되는 열번호가 2이면 
행원본 : 데이터 입력 순서는 남;-1;여;0
행원본 유형 : 값목록 
바운드열 : 2
열개수 : 2
열너비 : ;0cm (첫 열너비 자동이고, 두번째 열을 숨김)




<보고서>
보고서 오류
  - #Name? : 레코드 원본(테이블/쿼리)이 설정(연결/바운드) 안됨
  - 컨트롤이 흰색 : 컨트롤 원본이 설정(연결/바운드) 안됨(디자인 보기 - 언바운드)


보고서 보기형태
- 보고서 보기 : 모든 페이지가 연결되어서 1페이지로 나타남(연속 용지)
- 디자인 보기 : 수정
- 인쇄미리 보기 : 인쇄용, 결과확인은 이 방법으로 해야 페이지 레이아웃이 확인
- 레이아웃 보기 : 자료를 확인하면서 너비, 위치 조정 가능



영역(구역)
- 보고서 머리글/바닥글 : 보고서의 맨앞/맨뒤, 보고서에서 한번만 보임.
보고서 바닥글에 sum을 실행하면 총합계가 나온다.

- 페이지 머리글/바닥글 : 매 페이지마다 반복되는 내용
페이지 머리글에 반복할 행 레이블 위치
페이지 바닥글에 페이지번호, 날짜 등 입력
페이지 바닥글에 sum을 실행하면 해당 페이지의 합계가 나타남.

- 그룹 머리글/바닥글 : 그룹의 맨앞, 맨뒤, 그룹의 갯수만큼 보임.
본문 바로 위가 그룹머리글, 본문 아래가 그룹바닥글


정렬 및 그룹화
- 정렬, 그룹화는 순서가 변경되면 보고서의 모양이 틀어지므로, 꼭 순서를 지킬 것.
- 정렬이나 그룹화 중 필드가 이미 한번이라도 설정(사용되고)되어 있는 필드가 있으면, 더이상 추가하지 말고, 설정되어 있는 필드는 변경만해서 적용
- 그룹화 설정은 '자세히'단추를 클릭해서 지정 머리글/바닥글을 표시


<Docmd 개체>

Docmd.OpenForm "폼이름", 보기형식(생략), 필터생략, "조건"

Docmd.OpenReport "보고서이름", 보기형식(인쇄미리보기), 필터생략, "조건"

Docmd.OpenQuery "쿼리이름"


   예) DoCmd.OpenForm "고객정보", , , "이름='" & txt조건 & "'"
    

 DoCmd.OpenReport "대여목록", acViewPreview, , 

 "대여일자>=#" & me.txt시작일 & "# and 대여일자<=#" & me.txt종료일 &  "#"


 "대여일자 between #" & me.txt시작일 & "# and #" & me.txt종료일 & "#"



<폼 종료시 저장 옵션>

DoCmd.Close 개체타입, "개체명", 저장 옵션

acSaveYes  : 무조건 저장
acSavePrompt  : 기본값, 선택 저장 -예/아니오/취소
acSaveNo : 무조건 저장 안함

예) DoCmd.Close acForm, "동아리정보", acSaveYes




<추출 - 조회>

 - filter, filteron

Me.Filter = "조건식"
Me.FilterOn = True


Me.Filter = "거래처명='" &  Me.Cmb거래처찾기 & "'"
     Me.FilterOn = True


Me.Filter = "year([구매일자])=" & Me.txt년 & 
" and month([구매일자])=" & Me.txt월 & 
" and day([구매일자])=" & Me.txt일
Me.FilterOn = True



- 조건
  "필드명=값"
  "상품명='모자'"   - 텍스트는 작은따옴표
  "수량>=10", 
  "매출일>=#2017-1-1#"  - 날짜는 #안에

  "수량>=10 and 수량<=20"   - 10~20


  "필드명=컨트롤명"  : 컨트롤명은 큰따옴표에 들어가지 못함.
  
  컨트롤명 = 텍스트 상자 컨트롤 이름, 콤보상자 컨트롤 이름

  "필드명=" & 컨트롤명 

  
  텍스트  : "필드명='컨트롤명'" => "필드명='" & 컨트롤명 & "'"
  
  숫자  : "필드명=컨트롤명"  => "필드명=" & 컨트롤명 
  
  날짜 : "필드명=#컨트롤명#"=> "필드명=#" & 컨트롤명 & "#"

  "필드명>=#" & 컨트롤명1 & "# and 필드명<=#" & 컨트롤명2 & "#"


  텍스트 일부 : "필드명 like '*" & 컨트롤명 & "*'"


   예) DoCmd.OpenForm "고객정보", , , "이름='" & txt조건 & "'"
    


 "대여일자>=#" & txt시작일 & "# and 대여일자<=#" & txt종료일 & "#"



- RecordsetClone, FindFirst, Bookmark
   
    Me.RecordsetClone.FindFirst "조건식"
    Me.Bookmark = Me.RecordsetClone.Bookmark



    Me.RecordsetClone.FindFirst "제품코드='" & Me.txt조회 & "'"
    : 조건에 맞는 레코드 집합을 복사한 후 첫번째 자리로 찾아가라.

    Me.Bookmark = Me.RecordsetClone.Bookmark
    : 복사본에서 찾은 첫번째 자리(에 있는 북마크)를 현재 폼에 표시해라.






 출제유형3.  ~~~'찾기(cmd찾기)' 버튼을 클릭하면
 <txt찾기에 입력된> 강좌명에 해당하는 ~~


- RecordSource
   (교재 124page SQL 참조)
 
  Me.RecordSource = "SQL"

  
  select */필드명 from 테이블명 where 조건식 order by 필드명 asc/desc


강좌명의 전체로 조회할 경우
 Me.RecordSource = "select * from 강좌 where 강좌명='" & Me.txt찾기 & "'"

강좌명의 일부분만으로 조회할 경우
 Me.RecordSource = "select * from 강좌 
  where 강좌명 like '*" & me.txt찾기 & "*'"




출제유형 7.
ApplyFilter 함수 - 매크로 작성기

  

    Me.txt대여횟수 = DCount("대여번호", "대여", 
"전화번호='" & Me.txt전화번호 & "'")
    
    Me.txt연체횟수 = DCount("대여번호", "대여", 
"전화번호='" & Me.txt전화번호 & "' and 연체료>0")


<프로시저 쿼리 실행>

Docmd.OpenQuery "쿼리명"  : 쿼리를 실행

Me.requery    : 폼 새로고침의 개념처럼 변형된 자료를 다시 적용



<프로시저 내에서 다른 프로시저 실행>

Call 프로시저명

(서브 프로그램 호출은 call)



- Docmd.RunSQL "insert~~~"

<MSGBOX 함수-180page>

형식1 : 메시지만 표시할 때 
= 선택사항이 없는 경우  = 확인 버튼만 존재(버튼이 여러 개가 아님) 
= 반환값이 필요없는 경우 = 변수가 불필요한 경우 = if구문 X

 - msgbox "메시지내용"

   msgbox "수고하셨습니다!!!"



형식2 : 반환값이 있는 경우 
= 선택사항 있는 경우 = 버튼 여러개(예/아니오/취소) 버튼이 존재
= 변수가 필요한 경우(버튼의 선택여부) = if 구문(변수 상태)이 나타남.
 

 - 변수 선언(생략가능)  : Dim a

 
 - a = msgbox("메시지내용", [아이콘종류+]버튼종류, [타이틀])
   : a는 메시지박스의 선택 사항의 값을 받는 변수
 

 - 변수 값에 따라 다르게 처리되므로 if문이 나타남.
   
if a=버튼종류(선택값) then 
   
처리문

    end if
   



 
<프로시저 내의 sql문 처리 - 182page >

Docmd.RUNSQL "sql문"

- 삽입  
  DoCmd.RunSQL "insert into 테이블명(필드명1, 필드명2....)
  values(컨트롤명1, 컨트롤명2....)"


  예) DoCmd.RunSQL "insert into 호봉기준(호봉, 기본급)  
       values('" & me.txt호봉 & "', " & me.txt기본급 & ")"

       Me.Requery





- 수정
  DoCmd.RunSQL "update 테이블명 set 필드명=변경값  
  where 필드명=컨트롤명"
 

 예) Docmd.RunSQL "update 호봉기준 set 기본급=" & txt기본급 &
      " where 호봉='" & txt호봉 & "'"

      Me.Requery




- 삭제
  DoCmd.RunSQL "delete from 테이블명 where 필드명=컨트롤명"

  예)DoCmd.RunSQL "delete from 호봉기준 where 호봉='" & txt호봉 & "'"
      me.requery



컨트롤 클리어-초기화(공란)으로 설정
Me.txt호봉 = ""
     Me.txt기본급 = ""










반응형