410-4 (오전)

Beemajor·2024년 8월 2일


09:30 수업 시작


여기에 프로그램 하나 만들었어요

디버깅을 기존과 다르게 하는법을 알려주셨어요.
/h 를 건색하고 실행을 시키면 디버깅이걸립니다.
EX 예시1번 )

1. /h 쓰기 2. 엔터 3. 버튼누르기

4. 디버깅됨
.
.
.
.
EX 예시2번 )

1. /h 쓰기

2. 엔터

3. 아무런 버튼을 누르면 화면처럼 디버깅됨

딕셔너리로 테이블 만들기 복습을 할 겁니다.

SGEOCITY라는 DB 테이블이이에요
CITY와 COUNTRY가 복합키에요. 이게 뜻이뭐냐면
같은국가에 다른 도시가 존재할 수 있음을 알려줍니다.

시티랑 컨트리가 FK가 안걸려있어요 (=체크테이블이 안걸려있어요)
그런데 도매인은 다른 테이블에 있는 걸 참조하거든요.
이게 무슨뜻이냐 도메인형식은 EX) 영어로 도시를 풀네임 적는다는 형식
참고하나 FK설정이 아니기에 체크테이블에 없는 값을 필드에 써도 된다는 뜻이빈다.


이렇게 적혀있는데요.

이렇게 데이터 값이 들어갑니다.
과연 영어를 모르는 사람이 PK를 쓸수있을까요?
불가능하죠? 문제가 있는 교육스탠다드 테이블입니다.
그래서 새로 만들거에요


새로만든테이블을 보세요 국가별 도시 테이블입니다.

뭐가 다르죠? 바로 코드화를 시킨 차이입니다.
LAND1은 Data element를 그대로 사용하나 CITYID는 기존 테이블과 다릅니다.
이것은 큰 의미가 있습니다.
저희는 기존의 풀네임을 쓰는 형식이 아닌
새로운 형식으로 CITYID라는 필드를 사용할 것이라는거죠.
바로 '코드화'를 시킬 것 입니다. (이후는 우리가 알던 대로 했음)


우선 SFLAG필드는 SizeFlag라는 듯입니다.
소도시야 대도시야 라는 구분을 할거에요
하지만 소도시, 대도시, 관광도시, 이런식으로 TEXT를 값으로 가지면 안됩니다.
why 소도시, 소 도시, Small city 다같은말 하지만 찾기힘들잖아요.
so 코드화를 시킬것이고 이를 Fixed Value 로 설정합시다.

Data Elment에 도메인 설정에서 Fixed Value를 설정할 수 있습니다.

10시 50분 수업 재시작

이제 아까 만든 테이블에서 나라의 이름은 필드값을 추가해주면서
한국어 일본어 영어 이런식으로 해야할까요?
아닙니다. 텍스트 테이블을 만들어야 합니다.


텍스트테이블에 있는 City ID에다가 체크테이블 걸기.
근데 그냥말고 화면과 같이 텍스트 테이블 키를 설정해주세요.


오늘 할 내용입니다. 하지말라고 알려주는거에요
연습도 금지에요! 지금만 따라하세요.(라는데요?)

INSERT UPDATE DELETE MODIFY를 해볼 프로그램을 만듭시다.


*MODIFY zts5a1250_t. 뜻은 아래와 같다
MODIFY zts5a1250_T From zts5a1250_T.
MODIFY해주세요 zts5a1250_T 이 테이블에다가 From zts5a1250_T 이 스트럭처를 넣어주세요.
빈 레코드가 들어갑니다.


DELETE from zts5a1250_t. 뜻은 아래와 같다.
zts5a1250_t 의 정보들을 깨끗하게 비워주세요...


Insert 는 넣어주세요.
최초 실행은 성공합니다. 같은 값을 두번 넣으면 오류를 알려줘요

4는 오류가 났다는 걸 알려주는 겁니다.
왜 일까요? PK가 중복되서 그런거 같은데요?

짜잔 이렇게 넣어집니다.


에러가 났을때 메세지 a를 내보겠습니다. 라는 뜻의 코드

메세지 a는 프로그램이 나가집니다.
좋지 않네요 참...

11시50분 수업시작


새로운 스크럭처타입의 데이터 타입을 만들었어요. (ZS5A12401 -> STRUCTURE 생성)
필드값을 모두 입력하고, LAND1 과 CITYID에 체크테이블도 걸어줬어요.


아침에 만든 프로그램입니다.
데이터들을 TOP에 선언해줬어요.


스크린 100번에 저 변수들을 넣어줘요.

도시구분의 Input값은 콤보박스로 하는게 변하겠죠? 그러세요
Fixed Value 니까요.

아런 출력 화면이 나옵니다,


UPD. 오늘은 Update를 만들어줄거에요.
키는 F5로 설정하세요.
ICON NAME에 보이는 아이콘을 누르면 아래와 같은 화면이 나옵니다.

아이콘을 설정해주세요.
클릭해서 설정가능! 직접 입력해서 설정가능!

나머지 빈값을 입력하시구요

아 참! 스탄다드 Table 'ICON' 에서 데이터들이 입력되어있습니다.


출력화면이에요 잘보이죠?


기능을 추가해줬으니 코드를 넣어줍시다.

화면과 같은 기능을 설정했어요.
주석처리된 부분은 오후에 한대요.

실행했더니 DB에 없는 값이라 체크엔트리가 뜨네요!

레이아웃에가서 Foregin Key Check를 해제해줍시다.

잘되죠?


하지만 문제가 있어요 지금 코드는.
에러가 나면 내가 입력한 값들이 날라갑니다.
우리는 사용자가 입력한 값을 절대 건들지 않는다~

위 코드를 아래와 같이 바꿔주세요

화면에 보이는 것과 같이이렇게 바꿔주세요

메세지 박스들에 대해서 알아봅시다.

MESSAGE a000(ZMC5a12) with 'Check'.

메세지박스가 나오고 시스템을 종료시킨다.

.

MESSAGE x000(ZMC5a12) with 'Check'.

덤프가 나온다. (= 담당자한테 바로 전화걸어주세요.)
.
.
.
그러니까 체크할 때는 i와 s를 쓰세요
I는 메세지 박스로 확인시켜주기 입니다.
s는 아래의 상태바에 보여주는것 입니다.

이제 중요한 메세지박스 E!

MESSAGE e000(ZMC5a12) with 'Check'.

사용자가 입력을 못하게 input 값을 막아버립니다.

자 이걸 심화해볼게요

코드를 입력하시구요.

FR과 KR이 아닌 다른 값을 선택하면 에러낼거에요
.
출력값을 확인해볼게요

짜자잔.
다음 스크린으로 넘어가지않고 수정할 기회를 줍니다.

더 심화를 해볼게요

묶어서 수정할거야. 라는 뜻의 CHAIN입니다.
아래처럼 실행되어요.

따로따로 쓰면 Country 오류안나고 도시코드만 오류인경우
Country는 수정 불가능하고 도시코드만 수정가능합니다.
하지만 도시코드를 수정해야할때 Country도 수정하고 싶을 수도 있잖아요.
그런 경우에 ChAIN으로 묶어주는 겁니다.


Field문에 적은 값들은 스크린에서 바로 PAI로 옮기지 않아요.
그래서 필드문은 EXIT at EXIT-COMMAND를 다음에 바로써야해요
모듈이 먼저나오면 값이 안읽혀졌는데 모듈이 실행되니까
정상작동 되지 않습니다.
.
.
이게 무슨말이냐
land1에 a cityid에 b를 넣고 ctext에 c를 넣고
프로그램을 돌립니다.
land1에 a 와 cityid에 b는 넘어가지 않습니다.
하지만 c는 바로넘어가요 필드문에 없기 때문이죠.
이제 land1이 적힌 필드문이 실행됩니다. 그리고 a가 넘어가요
다음 cityid가 적힌 필드문이 실행됩니다. 그리고 b가 넘어갑니다.
그제서야 a,b,c가 넘어간겁니다.

위 의 말이 이해가 안되면 체인에 다때려박게됩니다.
Chain은 필드문에 적힌 값을 모두 한번에 읽으니까요 .
이해하는게 좋습니다.

이제 찐 업데이트 문장을 추가해줍시다.

이제 추가가 됩니다.
체크가 잘되었다면 메세지 a가 절대 실행이 안되겠죠?
그럴 일이 없어야만 합니다.

이 수업에서 요점을 정리하면 다음과 같습니다:

디버깅 방법: /h 명령어를 사용하여 디버깅 모드에 진입.

테이블 생성 및 수정: 복합키와 외래 키를 고려한 테이블 생성.
기존 테이블의 문제점(영어 풀네임 사용)을 해결하기 위해 새로운 테이블을 코드화하여 생성.

도메인과 고정 값: 텍스트 값을 코드화하고 고정 값을 설정하여 데이터 일관성을 유지.

데이터 조작 프로그램: INSERT, UPDATE, DELETE 명령어를 사용하여 데이터 조작 프로그램 작성
기본적인 데이터 입력, 삭제 및 수정 방법 설명.

에러 처리 및 메시지 박스: 다양한 메시지 박스 유형(i, s, e)의 사용법.
에러 발생 시 사용자가 입력한 값을 유지하는 방법.

체크 엔트리 및 외래 키 설정: 체크 엔트리와 외래 키 설정 및 해제 방법.

CHAIN 명령어 사용: 여러 필드를 묶어서 처리하는 방법.
필드 값을 모듈에 넘기는 방법과 체인의 차이.

업데이트 기능: 체인과 필드문을 사용하여 업데이트 기능 구현.
업데이트 시 값이 정상적으로 넘어가게 하기 위한 방법.

이 내용들을 실습하며 프로그램 작성과 디버깅, 데이터베이스 테이블 생성 및 수정, 데이터 조작, 에러 처리 방법 등을 익혔습니다.

profile
i'm Graphic Designer

0개의 댓글