본문 바로가기

Study/Etc..

파워빌더 정리

1.데이터윈도우  컨트롤과 데이터윈도우 object의 상관관계를 알고 있으며 데이터윈도우의 개념을 명확하게 설명?

 데이터윈도우 오브젝트는 매우 뛰어나고 강력한 데이터 처리 기능을 갖고 있으며 GUI형태로 데이터베이스에 있는 자료를 용이하게 처리할 수 있다데이터윈도우 오브젝트를 이용하여 텍스트형 SQL 문을 그래픽 모드로 쉽게 작성할 수있고 화면상에 나타나는 표현 형식에 따라 다양하게 화면을 구성할 수 있다또한 데이터베이스 페인트에서 데이터를 효율적으로 관리하는 별도의 방법 들을 제공한다.

데이터윈도우 오브젝트는 데이터베이스에 접근하는 트랜잭션 처리를 위한 독립적인 객체로

사용자에게 보여주는 화면 설계뿐 아니라 프린터로 출력하기 위한 보고서 형식으로 갖출 수도 있다데이터윈도우 오브젝트는 윈도우에서 별도의 데이터윈도우 컨트롤을 통해 사용자의 윈도우 화면에 나타나게 된다데이터윈도우 오브젝트는 트랜잭션과 결합하면서 DBMS와 연결되어 사용자가 원하는 정보를 가져다준다데이터윈도우 오브젝트는 그 자체가 SQL 질의문을 내재하고 있으므로 데이터를 조회 되면 데이터 윈도우의 SQL 질의문이 서버로 보내지고 그 수행 결과 값이 데이터윈도우 오브젝트에 보여진다사용자 인터페이스와 데이터베이스와의 중간적인 위치에서SQL문을 보내고 그 결과를 받는 교량 역할을 한다.

트랜젝션 오브젝트를 사용하여 데이터베이스와 접속이 이루어지면 스크립트 페인터에서 SQL문을 기술하여 데이터베이스의 데이터를 액세스 할 수 있다파워빌더의 데이터윈도우 오브젝트로 데이터베이스를 참조할때는 데이터윈도우 오브젝트에 트랜젝션 오브젝트를 활당하여 데이터윈도우로 하여금 어떤 데이터베이스를 어떻게 사용할지 알려 주어야 한다.

파워빌더는 이를 위해 settrans()  settransobject()두가지 함수를 제공하는데 이것은 데이터윈도우 오브젝트가 놓여진 윈도우 오브젝트의 오픈 이벤트에 주로 선언된다그런 다음

Retrieve() update() 함수를 사용하여 데이터윈도우에 데이터를 조회해 오거나 데이터윈도우 상에 보여지는 현재의 데이터를 저장한다.

이두 함수의 기능은 동일하나 작동하는 방법이 조금 다르다. Settrans() 함수는 스크립트내에서 update()함수가 실행되면 곧바로 commit명령이 자동으로 발생하여 편리하지만 rollback 할 수가 없다또 한 settransobject()함수보다 실행속도가 늦다 update(),함수는 데이터윈도우 상의 데이터를 새로 갱신하지만 그 결과를 데이터베이스에 영구적으로 저장하지 않고 윈도우의 버퍼에 임시로 저장하여 commit문을 만나면 버퍼의내용이 데이터베이스에 저장한다그러므로 settranspbject()함수를 사용할 경우 commit을 하지 않고 프로그램을 종료하면 최종적으로 commit이 일어난 이후에 변경된 데이터들은 모두 잃어 버린다.

 

 

 

 

 

 

2.데이터윈도우를 만들 때 설정하게 되는 데이터윈도우 소스와 프리젠테이션 스타일에 대해서 유형별로 구별?

Quick Select는 데이터베이스에 있는 여러 개의 테이블 중에서 하나의 테이블에서만 필요한 컬럼을 선택할 때 사용 한다일반적으로 입렵 전용으로 설계할 경우하나의 테이블 내용을 모두 사용하므로 이것을 이용하면 편리할 것이다.그렇지만 입력 전용인 경우에도 여러 개의 테이블에서 컬럼을 선택한다면 여러 개의 테이블은 선택할 수 있는 SQL select방식을 이용해야 한다 Queck Select방식은 테이블의 연계성을 쉽게 알아볼 수 있는 장점을 가지고 있지만 그룹을 지정하거나 계산 컬럼을 포함할 수 없고 조회할 때 사용할 인자값을 지정할 수 없다.

종류  composite ,

crosstab ,

 freeform,

graph,

,group,label

, n-up,ole2.0

,richtext,

Tabular

,treeview

등이 있다

 

3.데이터윈도우  object를 만들 때 일반적으로 가장 많이 쓰이는 것 프리젠테이션 스타일로 테뷸러(tabular)와 프리폼(FREEFORM)이 있다 이두 유형의 프리젠테이션 스타일을  어떨 때 사용 하는지?

 테이블러 스타일의 데이터윈도우는 컬럼과 헤더의 위치와 크기를 다른 컬럼에 영향을 받지 않고 자유롭게 편집할 수 있는 데이터 윈도우 스타일이다 외곽선이나 선과 같은  여러 가지 오브젝트를 이용하여 정밀한 보고서를 작성할 수 있으며주로 그룹데이터를 작성할 때 자주 사용한다.  프리폼 스타일 주로 자료입력이나 한 로우의 데이터를 상세하게 표현하고자 할 때 사용 된다이 형식은 칼럼이 수직 방향으로 배열되며 각 칼럼은 LABEL과 함께 나타난다개발자는 칼럼이나 텍스트를 재배열 하거나 디자인 함으로써 기본 레이아웃을 변경할 수 있다화면 디자인은 칼럼이나 텍스트의  속성(PROPERTIES)을 수정하는 방식으로 이루어진다이 형식은 주로 사원의 개인 신상 정보나 제품의 거래 내역에 관한 데이터를

표현할 때 유용하다.

 

4.데이터윈도우 OBJECT에 올려서 사용할 수 있는 COMPUTED FIELD또는 COMPUTED OBJECT의 사용법?

기본적인 칼럼 외에 추가적으로 새로운 칼럼 객체를 만들고자 할 경우 사용한다. Computed Field 객체는 다음 그림과 같이 칼럼 객체와 데이터윈도우 내부 함수로 구성되어 있는데 일반적으로 파워빌더로 가져온 데이터를 필요한 정보로 가공하여 사용 할 때 많이 이용한다.

Expression에 원하는 데이터윈도우와 칼럼을 선택하여 기술하고 문법이 맞는지는 Verify버튼을 클릭하여 점검하면 된다그룹 스타일 윈도우를  생성하면 날짜나 페이지 등의 많은 정보가 필요할 것이다. Average, count, Page, sum, today 등과 같이 자주 사용되는 칼럼 필드들은 미리 만들어져 있어 쉽게 사용할 수 있고 그외의 것은 위의 그림에서와 같이 데이터 윈도우 함수를 이용하여 사용자가 직접 Expression에 기술하여 사용할 수 있다여기서

사용하는 데이터는 클라이언트에서 가공하여 구현되는 것이므로 서버에는 영향을 미치치지 않는다.

5.데이터베이스 프로파일의 기능?

*데이터베이스 엑세스와 자원의 한계를 제어하는 것은 DBA가 수행해야 하는 매우 중요한

   기능이다 .

  * 데이터베이스와 데이터 엑세스 관리를 위해서는 관리(Privilege)을 사용하며 ,

    이 권한들을 관리하기 위해 롤을 생성한다.

    - 프로파일은 자원제한과 암호제한의 명명된 집합이다.

    - 프로파일이라는 객체를 통해 보안기능을 제공하며 설정 할수 있다.

   프로파일로 자원관리(3단계)  - 중요

  1단계 : CREATE PROFILE 명령으로 프로파일을 생성하고 자원과 암호제한을 결정한다.

 2단계 : CREATE USER 또는 ALTER USER 명령으로 프로파일을 사용자에게 지정한다.

 3단계 : ALTER SYSTEM 명령을 사용하거나 파라미터 파일을 편집하여 자원제한을 시작한다.

  프로파일로 자원사용 관리 단계

   SQL> system/oracle

  * 데이터베이스에 어떤 프로파일이 생성되었는지 확인

  SQL> select * from dba_profiles ;

  * 데이터 베이스 사용자에게 어떤 프로파일이 설정되어 있는지 확인

  SQL> select username, profile from dba_users ;

 

 (1) profile  생성 - 자원제한 결정

   * '회계관리업무를 개발하기 위해 데이터베이스 사용자를 생성하고자 한다.

     그런데 동시에 너무 많은 회계업무 사용자가 접속하면 처리속도가 너무 늦어져서 회계

     사용자의 접속 수를 1개로 , 접속시간은 10분으로 , 접속 후 1분 동안 어떤 작업  실행하지 않으면 접속을 해제하려고 한다위의 자원 제한을 참조하여 프로파일을 생성하시오 . 

      (프로파일명은 account_profile로 한다.)

SQL>  create profile account_profile limit

          sessions_per_user 1

          connect_time 10

          idle_tile 1 ;

SQL> select * from dba_profiles ;

 (2) user 생성 - profile   user 에게 지정

  * 회계 사용자명은 account

     패스워드는 account123

     account 사용자가 생성하는 모든 테이블은 user 테이블스페이스에 생성하고 account

     사용자로 접속하여 실행하는 모든 분류(sorting)작업은 temp 테이블스페이스에서

     작업하는 사용자를 생성하시오

    SQL> create user account

             identified by account123

             default tablespace users

             temporary tablespace temp

             profile account_profile ;

    SQL> grant connect , resource to account ;

    SQL> select username, profile from dba_users

6.데이터윈도우 object의 작업영역이 헤더밴드,디테일밴드,서머리밴드,푸터밴드로 나뉘어지며 이 밴드 각각의 이들의 유형별 사용법?

데이터윈도우의 작업은 보통 밴드라고 불리는 영역으로 나우어져 있다이 밴드는 header,Detail,summary,footer의 네 가지로 되어 있으며그룹이 형성된 경우에는 Header,Group, Tailer Group영역이 추가된다 Band는 데이터윈도우 객체에서 나타나는 영역을 구분한 것이며각각의 Band Band의 이름이 있는 Bar로 식별된다.

마우스를 이용하여 이동함으로써 화면상에 나타나는 데이터사이의 여백을 조정할 수 있고,

실행 시 데이터가 화면에 출력되는 모습을 확인 하려면 페인트 바의 Preview아이콘을 클릭하면 된다각밴드들의 역할은

Header  화면 페이지의 상단에 나타나는 칼럼의 Heading정보,또는 현재 날짜나 리포트의 제목 등을 표시하는 곳이다.

Detail  - 실제로 데이터베이스나 기타 데이터 소스에서 가져온 데이터가 나타나는 영역이다.

Summary  모든 데이터가 출력된 후 나타나는 요약 정보주로 전체 데이터의 합계나 수를 표시하는 영역이다.

Footer  화면이나 페이지의 하단에 나타나는 정보주로 전체 페이지의 수 및 페이지 번호를 표시하는 영역이다.

 

7.데이터윈도우 함수들중 Retrieve(), Update(), InsertRow(),deleteRow()함수에 대해서?

Retrieve()- 데이터베이스에서 데이터윈도우 컨트롤에 연결된 데이터윈도 오브젝트에 자료를  읽어온다.

Update()-데이터윈도우의 값이 수정되었거나,추가,삭제,되었을 경우  데이터베이스에 Update 한다.

InsertRow()  새로운 로우를 추가한다. Row의 값이 0이면 제일 마지막 위치에 데이터를 추가한다.

DeleteRow()-데이터윈도우의 로우를 삭제한다.

 

8.데이터윈도우 컨트롤의 함수의 하나인 AcceptText()함수의 기능에 대해서?

데이터윈도우의 현재 칼럼에 입력한 값을 데이터윈도우 버퍼에 받아들이도록 한다.

9.데이터윈도우 이벤트의 하나인 ItemChanged 이벤트에 적용되는 리턴값 0,1,2각각의차이?

0:변경 데이터 수용

1:데이터를 거부하고 포커스를 포커스가 이동하지 않는다.

2:데이터를 거부하지만 포커스는 이동한다.

 

 

 

10. Modify() 함수와 Describe() 함수 각각의 사용법?

Modify()  모디피 함수를 이용하면 실행 시에 데이터윈도우나 데이터윈도우의 내의 어떠한  copoent의 속성이라도 변경할 수가 있다. Modify()함수는 속성을 변경하기 위하여 String 타입의 Argument를 사용한다.

Dw_1.Modify(modstring)

modstring에는 데이터윈도우의 내용을 변경 시킬 문자열이 들어가면 된다.

//데이터윈도우의 백그라운드 색상을 붉은 색으로 변화 시키는 문장이다.

Dw_1.modify(datawindow.color=255)

//데이터윈도우 내의 component의 속성을 변경할 때는 Component 의 이름

//을 명시해야 한다.

Dw_1.modify(dept_id.background.color=255)

*component property

데이터윈도우 내의 각 구성 요소들과 컬럼들을  Component,의 속성값을 참조하기 위해서

다음과 같은 표기법을 따른다.

<Dw_control>.object.<component>.<property>

 

위에서 Component란 컬럼이나 해더, Statitext등 데이터윈도우 내에 존재하는 모든 object들의 이름이다.

//아래의 예는 헤드의 내용을 변경 한다.

Dw_1.modify(dept_name.font.italic=~tdept_name.color=255)

복수 component의변경

동시에 여러 개의 component 를 변경해야 하는 경우가 있다이 때에는 Modify()함수를 여러 번 실행할 것이 아니라~t,구분자를 사용한다.

 

Dw_1.modify(dept_name.font.italic=~tdept_name.color=255)

 

Component를 추가하거나 삭제

Modify()함수를 이용하여 다이나믹하게 데이터윈도우 내의 component( text,bitmaps,graphic)에 대해서 삭제를 하거나 추가할 수 있다.

Modify()함수의 Argument의 일부인 create,destroy를 사용한다.

 

Dw_1.Modify(destroy disp_data)

 

Describe()함수

데이터윈도우 속성의 현재 값을 가져오는데 사용한다.

Dw_1.describe(propertylist)

//데이터윈도우의 컬럼의 타입 ( number , date.)을 읽어온다.

String s

S= this.describe(this.getcolumnname()+.coltype)

드롭다운 데이터윈도우의 디스플레이값 얻기

 

일반적으로 데이터 윈도우의 값을 읽어오면 디스플레이 값을 얻어오지 못하고 실제 코드값을 읽어 온다디스플레이 값을 읽어올 때 LookupDisplay함수를 이용하여 읽어온 값을

Evaluating하면 된다.

 

String rownumber,displayvalue

Rownumber = string(dw_1.getrow())

//state_code컬럼의 디스플레이 값을 읽어온다.

Displayvalue=Dw_1.describe(Evaluate( lookupdisplay(state_code),+rownumber+))

 

11. dw_1.Describe(Evaluate(lookupdisplay(fname),1))가 의미하는 것은?

Dw_1 1번째 fname 의 디스플레이를 읽어온다.

 

12. Sharedate()함수의 사용법?

Sharedate() 함수는 두개 이상의 데이터윈도우 컨트롤에서 데이터를 공유하는 함수로써 각 데이터윈도우의 컨트롤 객체가 같은 데이터를 공유하게 한다기본 데이터윈도우는 종속데이터윈도우와 버퍼 ( primart, delete,filter)를 공유한다그러므로 버퍼의 데이터를 수정하면 공유된 모든 데이터윈도에 표현되는 데이터는 동일하다이 함수는 조회된 데이터를 가지고 여러 형태로 표현하고자 할 때 많이 사용된다데이터윈도우를 공유하기 위해서는 선택된 칼럼의 타입과 길이 그리고 순서가 동일해야만 사용가능 하다.

 각데이터윈도우 컨트롤 객체에서 다른 칼럼들을 공유하기 위해서는 데이터윈도우 오브젝트 작성시 데이터 소스에서 선택된 필드에서 보여지지 않는 컬럼들은 삭제하면 된다.

다음 코드는 dw_test의 데이터윈도우가 dw_basic의 데이터윈도우를 공유 한다.

 

기본 데이터윈도우 dw_basic만 트랜젝션을 지정한다.

Dw_basic.settransobject(sqlca)

//dw_test는 기본 dw_basic 데이터윈도우의 버퍼를 공유한다.

Li_rtn = dw_basic.sharedata(dw_test)

If li_rtn  = -1 then

Messagebox(sharedata error,error sharing employee dw)

Return 1

End if

//기본 데이터윈도우 dw_basic만 조회 한다.

Dw_basic.retrieve()

//데이터 공유가 끝났으면 해제한다.

Dw_test.shatredataoff

 

13. 데이터베이스 Cursor에 대해서?

* Cursor란 무엇인가?

Cursor SQL문장을 실행하기위해 DATABASE가 사용하는 Memory의 영역을 말한다.

DATABASE에서 갖는 Open_Cursor Default값은 50이다.

Maximum값은 User가 사용하는 System 에 따라 결정된다.

User의 환경에 따라 Open_Cursor의 적정값을 설정할 필요 있다.

 

만약 이 방법으로 해결이 안되면 다음의 방법을 따른다.

정확한 에러의 원인을 찾기 위해서 init.ora 화일에 다음과 같은 라인을 추가한다.

events = "604 trace name errorstack"

 

이렇게 init.ora를 변경하고 DB Shutdown 하고 Startup 하면 ORA-604 에러가 발생하는 경우에 자세한 정보를Trace 화일에 기록해 주므로 이 화일을 검사하여 에러의 원인을 찾을 수 있다.

 

에러의 다른 원인으로는 init.ora 화일의 파라미터 가운데 DC_FREE_EXTENTS  ROW_CACHE_ENQUEUES 의 값이 너무 작게 설정된 경우를 생각해 볼 수 있다.

이와같은 경우는 이들 값을 크게 설정해 주도록 한다.

 

테이블 스페이스가 가득 차거나 Extent 갯수의 최대 허용값을 초과해서 에러가 발생하는 경우 ORA-604 에러가 함께 발생할 수가 있는데 이와같은 경우에는 이들 문제를 먼저 해결하면 ORA-604 에러는 함께 해결 된다.

 

14.파워스크립트가 제공하는 제어문에는 어떤 종류가 있으며 각각의 기능상의 특징?

종류에는 IF문과 choose case문 이있다

IF문 – 조건식이 참인지 거짓인지 판단후  문장을 수행하고 다음과 같이 3가지 유형이있다.

1.     IF...THEN

2.     IF 조건 THEN

처리문

[ELSE 처리문]

END IF

3.     IF 조건 THEN

처리문

ELSE IF 조건문 THEN

         처리문

END IF

 

CHOOSE CASE문 – CHOOSE CASE 테스트할 값 또는 변수

CASE 비교값1

    처리문

CASE 비교값2

    처리문2

       .

       .

CASE ELSE

처리문n

END CHOOSE

CASE 값에는 단일 값만 오는 것이 아니다여러 개의 값이 올 경우에는 컴마(,) 구분한고,

어디에서 어디까지 할당된 값이 올 경우에는 TO를 사용하여 작성 한다다음은 CASE문장에 올 수 값들이다.

한 개의 값(10)

콤마로 연결된 여러 개의 값 리스트(1,2,3,4)

TO절을 사용한 여러 개의 값 ( 10 TO 30)

IS 뒤의 관계연산자 비교값 IS>10)

 

)

CHOOSE CASE VALUE

CASE 10,20,30  //value 10, 20, 30인경우 수행

처리문1

CASE 40 to 70  // Value 40 -70 사이인 경우 수행

처리문2

.

.

CASE ELSE

   처리문n

END CHOOSE

CASE에서 해당 결과 값이 없는 경우에는 CASE ELSE 문장을 수행한다.

조건의 수가 적은 경우에는 IF문을 사용하는 것이 좋고 , 많을 경우에는 CHOOSE CASE

문을 사용하는 것이 더욱더 효율적이다.

 

15.배열 선언 방법배열을 처리하는 방법과 배열의 크기를 가변적으로 설정하는 동적

열의 구현에 대해서?

하나의 변수명에 인덱스를 두어 자료를 관리하기 위해 사용되는 변수 선언 방식으로 []을 이용하여 배열을 선언한다.

일차원 배열은 관련된 아이템의 집합으로 하나의 크기나, to문을 사용하여 범위를 정의한다.

String name_array[30]

Integer name_array[10 to 20]

첫번째 예제는 1부터 30까지의 인덱스를 갖는 30개의 스트링의 배열을 선언한 것이고 두번째 예제는 10부터 20까지의 인덱스를 갖는 11개의 Integer배열을 선언한 것이다.

to표기법은 기본적으로 1부터 시작하는 인덱스를 재정의 하기 위하여 사용한다.

그러므로 선언된 2개의 배열에서 1자리 코드를 사용하지 않는다면 to표기법을 사용하는 것이 메모리 낭비를 줄 일 수 있다이때 반드시 첨음의 수가 나중의 수보다 작아야 한다.

크기 제한이 없는 배열은 인덱스가 항상 1부터 시작 한다인덱스의 상한값은 그것을

검사할 때 그 시점에서 할당된 제일 큰 인덱스 값에 의해 결정된다제한이 없는 배열

이 처음 생성될 때는 인덱스의 상한값은 0이고 하한값은 1이다.

Array[200] = 100

Array[250] = 50

첫번째 배열 참조는 파워빌더가 200개의 요소를 새로 생성하게 한다그리고 처음 199

    개에는 기본값이 0로 초기화 하고 200번째 요소에는 100이란 값을 할당한다두 번째                

    배열 참조는 부가적인 50개 의 요소를 더  생성하여 배열에 덧 붙인다그리고 250  번째 요소에는 50을 대입한다.크기에 제한이 없는 배열을 선언 할때는 배열을 초기화 해놓고 작업을 한다면 크기 제한이 없는 배열을 사용하는 것은 최적화된 것이라 할 수

    있다파워빌더가 부가적인 메모리를 할당할 때마다파워빌더는 윈도우 오퍼레이팅 시스템을 처리하여야 한다이것은 시간 및 비용이 많이 드는 작업이다그러므로 한번에 최대 크기에 배열을 생성하는 것이 보다 빨리 작업을 수행할 수 있다이것은 항상 가능한 것은 아니지만 반대로 배열이 자주 사용될 경우 고려해 볼만 하다.

 

16.배열의 초기화 UpperBound() 함수 등 배열에 관련된 함수들에 대해서?

  배열의 상한과 하한값의 크기를 구하기 위하여 파워빌더에서는 UpperBound()

  Lowerbound()라는  두개의 함수를 사용한다크기에 제한이 없는 배열의 경우

  LowerBound()는 항상  1이라는 값을 반환 한다.

UpperBound()라는 함수는 일반적으로 배열을 순회하기 전에 사용해야 한다.

)

//올바르지 않음

For count = 1 to UpperBound()(array)

Next

//올바름

Number = UpperBound()(array)

For count = 1 to number

Next

 

다차원 배열은 항상 고정된 크기로만 정의할 수 있고 선언시에 일차원 배열보다 더많은 정보를 담게 된다다차원 배열은 초기화할 수 없다차원의 수와 크기는 단지 사용 가능한메모리의 크기에만 제한을 받는다그리고 다차원 배열은 쉼표(,)로 구분된 리스트를 인덱스로 사용하여 접근할 수있다.

Numarray[4,5] = 55 //2차원 배열 4 5열에 55값으로 대입한다.

Stringarray[34,54] = “kitri” //2차원배열 34 54열에 스트링값 kitri을 대입한다.

 

17.어플리케이션 object에서 데이터베이스와 연결하기 위해 설정하는 스크립트를 알고 있는가?

 

SQLCA.DBMS       = "O90 Oracle9i (9.0.1)" <- 데이터베이스 이름

SQLCA.LogPass    = "SGGZOO" ß로그인 페스워드

SQLCA.ServerName = "MSG" ß 서버이름

SQLCA.LogId      = "SGGZOO" ß 로그인 아이디

SQLCA.AutoCommit = False

SQLCA.DBParm     = "PBCatalogOwner='SGGZOO',DelimitIdentifier='No'"

 

18. Power build의 모든 object 들과 컨트롤들이 어떠한 형태로 상속계층구조에 기반을 두고 있는지 이해하는가?

    어떤 객체를 만들 때 공통된 부분을 미리 만들어 사용함으로써 그객체로부터 상속을 받고추가되는 부분만을 기술하여 사용하면 시스템의 재사용성과 효율성을 높일 수 있을 것이다모든 하위 클래스는 그상위 클래스의 모든 데이터 구조 및 함수들을 그대로 이어받는 새로운 파생 객체를 상속이라 할수있다하위클래스는 상속 받은 상위 클래스의

    특성을 제거할 수는 없으나 상속받은 메소드의 행위를 확장하거나추가할 수 있으며,

선택적으로는 상속받은 메소드를 오버라이딩(Overridding)하여 재정의 가능하다어떤오브젝트 클래스가 프로퍼티를 변경하고자 할 때변경된 프로퍼티는 그 클래스를 상속 받은모든 하위 클래스에 전달된다파워빌더에서는 개발자가 정의한 시스템 클래스가 제공되므로 쉽게 재사용할 수 있으며여기에는 윈도우,메뉴,사용자 오브젝트 등이 상속을 받을 수 있다.

 

19.윈도우의 종류와 이들 각각의 기능상의 차이점?

-메인 윈도우

메인 윈도우는 다른 윈도우에 종속되지 않는 독립적인 윈도우로  SDI에서는 주화면으로 사용하고, MDI에서는 다른윈도우에 겹쳐질 수 있으므로 Sheet로 사용된다.메인 윈도우는 다른 윈도우 (Child, Popup,Response)를 부르는 부모 윈도우가 될수 있다.

-Response윈도우

리스폰스 윈도우는 사용자에게 정보를 요철할 때 사용한다 Model윈도우로 활성화 되며반드시 어떤 결과를 처리해야만 다른 윈도우가 활성화 되어 작업이 가능하다파워빌더에서는 메시지박스가 대표적으로 사용자에게 반드시 어떤 응답을 받아야만 메시지 윈도우가 닫힌다리스폰스 윈도우에서는 자체적인 메뉴를 가질수 없다.

-Popup윈도우

팝업 윈도우는 다른 윈도우(부모윈도우)에서 열리게 되므로 자신을 연 윈도우에 종속된다.

그러므로 팝업 윈도우의 부모윈도우가 최소화 되거나 닫히면 팝업 윈도우도 같이 사라진다그러나 팝업윈도우는 부모윈도우의 경계를 벗어 날 수 있다일반적으로 부모 윈도우를 지원하기 위해 많이 사용된다.

-Child윈도우

자신을 연 부모 윈도우에 종속되며항상 부모윈도우 내에서만 존재하며,메뉴를 가질수 없고,부모 윈도우에 상대적으로 위치하며 부모윈도우가 닫히면 차일드 윈도우는 자동적으로 사라진다.일반적으로 부모윈도우에 보조 되는 자료를 보여줄 때 사용하며 , 인터넷프로그램인 파워빌더 플러그인일 사용할 때 많이 이용한다.

 

20.파워바와 painter바의 기능상의 차이점?

데이터윈도우 오브젝트 작성시 텍스트 메뉴바 ,파워바,페인터바 3종류의 메뉴가 나타난다.

여기서는 페인트바에 표시되어 있는 중요한 기능들이 메뉴바에 포함되어 있다.

 

21.상속이 되는 Object 와 그렇지 못한 Object를 분류 할수 있는가?

상속 구조를 볼 수 있는 방법중 하나(제가아는 유일한 방법?) 
브라우져를 이용해 보십시요

브라우져를 실행하면 객체별로 분리되어 보입니다

거기서 show hierarchy 옵션을 선택하시면
 
상속이 브라우져 ( 탐색기폴더처럼 ) 되어 보입니다

거기서 에디트 (팝업 메뉴중)를 선택하시면 해당 페인트로 이동합니다.

 

22.Instance 변수가 차지하는 역할을 윈도우 Object의 관점에서 설명할 수 있는가?

인스턴스 변수는 오브젝트 (애플리케이션,윈도우,사용자오브젝트,메뉴)내에 정의된다.그러므로 오브젝트 내에서는 어느곳에서나 사용이 가능하다이러한 변수는 접근 레벨에 의해 도트표기법을 사용하여 오브젝트의 외부에서도 사용할 수 있다(Public으로 변수 선언).만일 접근 권한이 Private Protected로 선언 되어 있는 인스턴스 변수를 다른 오브젝트에서 참조하려고 하면 다음과 같은 에러 메시지가 나타난다.

(0001):Error C0158: the property ‘ii_sample’ was found in class

       ‘w_main’,

       But insufficient right are available to access it

인스턴스 변수는 그들이 선언된 오브젝트의 속성으로 효과적으로 사용될 수 있고오브젝트가 애플리케이션에 의해 생성될 때 초기화 된다오브젝트가 소멸될 때인스턴스 변수는 오브젝트를 따라 같이 소멸된다.


23.
전역변수의 사용이 프로그램의 전반에 걸쳐서 어떤 영향을 미치는지 알고 있는가?

전역 변수는 애플리케이션 전체에서 접근할 수 있고실제 애플리케이션 오브젝트에 저장된다.스크립트의 모든 곳에서 변수의 값을 변경할 수 있다그러나 이것은 디버깅을 어렵게 하고 애플리케이션이 수행되는 시간동안 메모리를 점유하게 되므로 전역변수의 개수는 최소한으로 사용하는 것이 좋다또한 전역변수는 애플리케이션이 처음 수행될 때 초기화 된다.

24.SQLCA 시스템 변수에 대해서 어떻게 알고 있는가?

SQLCA는 쿼리가 수행 되었을 때 발생하는 리턴코드이며 정상적으로 수행을 하면

리턴값으로 0을 반환 한다.

 

25.파워스크립트 String의 결합연산자는 무엇이며 의미는?

NOT,And,Or  연산자는 논리 연산자이고결합 연산자(+)는 두문자열이나 BOLB변수의 내용을 합치는데 사용된다두 변수는 반드시 같은데이터 타입 이어야 한다.

) String Lname, Fname, Fullname

Fullname = Lname + ‘.’ + Fname

모든 연산자가 널(null)값의 연산자에서는 예상 밖의 결과가 나오게 된다.

따라서 연산식이 혹시 널이 되지 않았는가를 잘 살펴야 한다산술연산자 관계연사자는 널과의 연산은 항상 널 값을 갖는다.

 

 

26.Power build  전역함수의 사용상의 특징?

Global Function link 되어 있는 모든 라이브러리 내에서 사용 가능 하므로 특정 오브젝트와 관계 없이Application내의 어느 스크립트에서나 호출이 가능한 함수이다.

Global Function은 파워바에서 new >> pbobject탭에서 function아이콘을 선택하여 함수를 수정한다.

 

27.함수나 이벤트 스크립트에서 RETURN 문과 Return코드에 대해서?

함수가 성공적으로 수행되었을 때 호출한 곳으로 리턴 되는 값으로 함수의 리턴 타입은 파워빌더가 제공하는 모든 데이터 타입(integer,long,String) object, control의 객체타입 등이 사용되고 리턴값을 [none]으로 지정하면 함수를 수행 했을 때 값을 돌려주지 않는다.

 

28.파워스크립트를 디버깅 할 때 사용하는 디버거에 대해서 특히 Breakpoint설정에 대해서?

Breakpoint 탭은 현재 설정되어 있는 정지점을 나타내고 정지점을 새로 추가하거나 삭제등을 관리할수 있다.

 

29.비쥬얼사용자 Object 와 넌비쥬얼 사용자 Object의 차이점?

표준 비주얼 사용자 오브젝트는 파워빌더에서 제공하는 컨트롤 들의 기능을 상속 받은 뒤 특별한 기능을 추가하여 작성하는 오브젝트이다그리고 애플리케이션의 필요에 따라 상속된 컨트롤을 수정한다.

 

30.다섯가지 유형의 사용자 Object에 대해서 이해하고 있으며 제작방법?

-커스텀 비주얼 사용자 오브젝트

커스텀 비주얼 사용자 오브젝트는 기존에 만들어진 모든 오브젝트를 조합하여 새로 만들어 하나의 단위로 여러 개의 컨트롤을 가지는 오브젝트이다이것은 컨테이너 역할을 하는 점에서윈도우와 비슷하다 Custom유저오브젝트는 시스템 전체에 걸쳐 반복적으로 사용된는 인터페이슷 구현 할 때 자주 사용한다.

 

-외부 비주얼 사용자 오브젝트

윈도우오브젝트에 파워빌더가 아닌 개발환경에서 생성된 오브젝트 컨트롤을 불러 사용할 수 있는 유저 오브젝트이다.파워빌더에서 외부 사용자 오브젝트를 사용하면 커스텀 DLL을 사용할 수 있다외부 비주얼 유저 오브젝트에서는DLL파일을 연결하여 오브젝트를 만든다이를 사용하기 위해서는 DLL이 해석할 수 있는 클래스 DLL이 응답 하는 메시지 스타일등 DLL관련 정보가 필요하다.

 

 

 

-커스텀 클래스 사용자 오브젝트]

커스텀 클래스 사용자 오브젝트는 아미 만들어져 있는 Custom Class User-Object를 상속 받는 유저 오브젝트이다 그러므로 사용자에게 보이지 않는 프로세싱을 캡슐화 하는데 사용되고 이들 오브젝트는 어떤 파워빌더 오브젝트의 기본 정의로부터도 상속 받지 않으며 오로지 개발자가 직접 선언한 인스턴스 변수함수 및 이벤트에 의해서 완벽하게 표현 된다.

 

-Standard 클래스 사용자 오브젝트

Standard 클래스 사용자 오브젝트는 Standard 비주얼 사용자 오브젝트와 마찬가지로 파워빌더에서 제공하는nonvisual한 오브젝트에서 단일개 상속 받는 것으로 트랜잭션 오브젝트 또는 에러 오브젝트와 같은 것이 여기에 속한다.

 

-표준비주얼사용자 오브젝트

표준 비주얼 사용자 오브젝트는 파워빌더에서 제공하는 컨트롤 들의 기능을 상속 받은 뒤 특별한 기능을 추가하여 작성하는 오브젝트이다그리고 애플리케이션의 필요에 따라 상속된 컨트롤을 수정한다.

 

 

31.Select, Insert,Update,Delete.Connect 등의 SQL문장의 사용법?

-- Select.
-- [1] SELECT(
검색)

-- 
정의) Select FieldNameList From TableName [Where 조건] [Order By 정렬시킬 필드명 [ABC|DESC]]

 

-- [2] 시스템 정보만 얻어오기(시스템 함수 사용)
-- 
현재 서버의 이름을 검색

Select @@servername
-- 
현재 서버의 버전을 검색
Select @@version

 

-- [3] Memors의 모든 필드 검색.
Select Num, Name, Title, PostDate From Memos
-- Memors
의 모든 필드 검색('*'와일드문자 사용 : 모든것).
Select * From Memos

 

-- 참고시간차 주기 : WAITFOR(몰라도 상관없음)
BEGIN
 SELECT * FROM Memos
 WAITFOR DELAY '000:00:05' -- 
특정시간 후에 명령어 진행
END

 

-- [4] Memos에서 Name필드와 PostDate필드만 검색.
Select Name, PostDate From Memos

 

-- [5] 조건검색 : Name이 씨앗인 사람의 모든 것 검색.
Select * From Memos Where Name = '
씨앗'

 

-- 조건검색 : Name이 씨앗인 사람의 Num, Email만 검색.
Select Num, Email From Memos Where Name = '
씨앗'

 

-- [6] 조건검색 : Name ''로 시작하는 사람의 모든것 검색.
-- '%' 
와일드 문자 사용. %->모든것.../like 키워드 사용.

Select * From Memos Where Name like '
%'

 

-- 조건검색 : Name ''자가 들어가는 사람의 모든것 검색.
Select * From Memos Where Name like '%
%'

 

-- 조건검색 : Name ''자로 끝나는 사람의 모든것 검색.
Select * From Memos Where Name like '%
'

 

-- 조건검색 : Name ''자로 끝나는 사람의 Name Email만 검색.
Select Name, Email From Memos Where Name like '%
'

 

-- [7] 조건검색 : Memos 테이블에서 Name ''로 시작하고 [그리고|또는] Email 's'자가 들어가는 사람의 모든것 검색.
-- AND 
연산자 사용.
Select * From Memos Where Name like '
%' AND Email like '%s%'
-- OR 
연산자 사용.

Select * From Memos Where Name like '
%' OR Email like '%s%'

 

--[8] 정렬검색 : Num의 역순(내림차순)으로 정렬.
-- 
오름차순 정렬(ASCending) = 1,2,3 순서대로...(기본값)

-- 내림차순 정렬(DESCending) = 3,2,1 순서대로...
Select * From Memos Order By Num DESC


-- 
정렬검색 : Name 필드를 오름차순으로 정렬
Select * From Memos Order By Name ASC -- ASC는 생략가능.

 

-- Name ''자가 들어가는 사람의 Name Email Num의 역순으로 검색.
Select Name, Email From Memos Where Name like '%
%' Order By Num DESC

 

-- [9] 상위 5개 레코드만 검색.(Top 5)
Select Top 5 * From Memos Order By Num DESC

 

-- [10] 해당 테이블의 전체 레코드 수 반환
Select Count(*) From Memos
Select Count(*) As [
전체레코드수] From Memos
-- 
카운트 결과 값을 '전체레코드수'라는 별칭으로 조회하고자할 때 AS구문 사용.

 

-- 전세계 유일한 문자열 값을 출력시켜주는 함수.
Select newid()
-- 
각 사용자별로 서로 다른 어떤값을 부여해주고자할 떄 newid()라는 내장함수를 사용할 수 있는데 이를 통하면 절대로 똑 같은 값이 나오지않는 문자열을 만들어 낼 수 있다.

 

Insert

행의 삽입 - INSERT

형식

  INSERT [INTO]

    {table_name | view_name}[(column_list)]

  {VALUES | values_list | select_statement}

  - INSERT 

행을 삽입할 테이블 또는 뷰를 지정한다.

전체 행이 아닌 특정 컬럼들을 지정하는 컬럼 리스트를 사용할 수 있다

  - VALUES

삽입할 데이터를 지정한다.

모든 자료형들은 각각의 입력 형식을 가진다

  VALUES('123-45-6789', 'Chen', 'Sue', '900 555-1221',

  '214 Main St. ' , 'Kent' , 'WA' , '98000', 0)

 

디폴트 옵션

DEFAULT VALUES

  INSERT table_name DEFAULT VALUES

  - 모든 컬럼에 대해 디폴트 값을 가지는 행을 삽입한다.

DEFAULT

  INSERT table_name

       VALUES( ..., DEFAULT, .....)

  - 지정된 컬럼에 디폴트 값을 삽입한다.

  - 변수가 values_list에 나타날 수 있다.

 

고려사항

해당 컬럼에 대한 디폴트나 사용자정의 자료형에 대한 디폴트 값이 존재하는 경우에 그 값이 삽입된다.

컬럼이 IDENTITY 속성을 가지거나 timestamp자료형인 경우에는 적절한 값이 삽입된다.

- DEFAULT의 경우에는 IDENTITY속성을 가지는 컬럼에 대해서는 유효하지 않다.

컬럼에 디폴트가 없고 NULL이 허용되는 경우에는 NULL 이 삽입된다.

컬럼에 디폴트가 없고 NULL이 허용되지 않는 경우에는 에러를 반환하고 INSERT는 실패한다.

 

 

부분 데이터의 삽입

NULL이나 디폴트 값을 허용하는 컬럼에 대해서는 데이터를 지정하지 않을 수 있다.

INSERT [INTO]

  [table_name | view_name} (column_list)

  {VALUES | vlaues_list | select_statement}

- INSERT 절에 컬럼 이름을 명시한다.

- VALUES 절의 값들은 각각 column_list의 컬럼들에 대응된다.

열거 되지 않은 컬럼들에 대해서는 DEAFULT와 같이 처리된다.


 

INSERT publishers (pub_id, pub_name)
VALUES ('9975', 'Unbound Press')

SELECT * FROM publishers
WHERE pub_name = 'Unbound Press'

 
 

 

SELECT를 사용한 행의 삽입

SELECT 문을 사용하여 하나 이상의 다른 테이블로부터 이미 존재하는 테이블로 행을 삽입할 수 있다.

        INSERT table_name

                SELECT column_list

                FROM table_list

                WHERE search_conditions

 

고려사항

같은 테이블에서도 가능하다.

삽입할 테이블과 SELECT 결과 집합은 컬럼의 개수컬럼의 순서자료형 등에 호환성이 있어야 한다.

  - 완전히 같은 자료형이거나 SQL서버가 자동적으로 호환성이        있도록 변화 할 수 있는자료형이어야 한다.

- INSERT만을 사용하는 경우와는 달리 한번에 여러 행을 삽입한다.

생략된 컬럼에 대해서는 해당 컬럼에 디폴트가 존재하는지 또는 NULL이 허용되는지를 확인해야 한다.

 

저장 프로시져를 사용한 삽입

저장 프로시져에 의해 반환되는 결과 값을 사용하여 테이블을 조작할 수 있다.

        INSERT [INTO] table_name

        EXECUTE {procedure_name | @procedure_name_var}

        [[@parameter_name=]{value|@variable [OUTPUT]|DEFAULT }

        {,[@parameter_name=]{value|@variable[OUTPUT]|DEFAULT}]...]

        - 저장 프로시져는 로컬 또는 원격 시스템에 있을 수 있다.

        - 결과 정보를 로컬 테이블에 저장하는데 주로 이용한다.

       

고려사항

        - 삽입할 테이블은 반드시 미리 생성 되어 있어야 한다.

        - 테이블에는 저장 프로시져 내의 SELECT 문장에 의한 결과 데이터들이 삽입된다.

 - 저장 프로시져에서의 PRINT, RAISERROR, FETCH등의 결과는 테이블에 삽입되지 않는다.

- SELECT문의 결과로 반환되는 데이터들은 반드시 테이블의 컬럼들과 자료형이 일치해야 한다.

 

 

 

 

SELECT 문의 기본구성

    - SELECT

    - 검색할 컬럼들을 지정

    - FROM

    - 검색할 테이블을 지정

    - WHERE

    - 검색할 테이블 내의 행을 결정

    - WHERE절이 없는 경우에는 해당 테이블의 모든 행들을 검색한다.

 

 

SELECT select_list

        [INTO new_table_]

FROM table_source

        [WHERE search_condition]

        [GROUP BY group_by_expression]

        [HAVING search_condition]

        [ORDER BY order_expression [ASC | DESC] ]

// 참고 : [ ] = 생략가능 { } = 중복가능 | = 선택가능

Update

TABLE 내에 있는 한 개 이상의 열을 변경하기 위해 사용합니다.

사용법은 다음과 같습니다
.

UPDATE student
SET eng_score=85, kor_score=90 WHERE ename='
쎌리
';

student TABLE
의 쎌리학생의 성적을 변경시키는 명령문 입니다


그러니까 이런 구조

INSERT TABLE_NAME
SET ( COLUMN NAMES=VALUE ) WHERE ( 
조건 );

INSERT 
문에서는 WHERE 조건이 없는데

여기서는 사용할수 있습니다.
SQL
을 사용할 때 SELECT 다음으로 많이 사용하는 것이 UPDATE 


Delete

Delete 
TABLE 
내에 있는 한 개 이상의 열을 삭제하기 위해 사용합니다.
사용법은 다음과 같습니다
.
Delete FROM student WHERE ename='
쎌리
';
student TABLE
의 쎌리학생의 정보를 삭제해 버리네요~! 짤렸나보다
.
그러니까 이런 구조네요

Delete TABLE_NAME WHERE ( 
조건
 );
Delete 
문은 UPDATE 문 보다 더 쉽네요
~!
잘못 삭제했을 경우에는 ROLLBACK을 사용하면 되죠
~!
그리고 DML 문은 아니지만 Delete와 같이 DATA를 삭제할 수 있는 명령어가 있어요
.
TRUNCATE
가 바로 그것인데

어떤 TABLE 내의 모든 행을 삭제하고자 할 경우에는 Delete 문을 사용하는 것 보다는
 
TRUNCATE
문을 사용하는 것이 훨씬 효율적입니다
.

TRUNCATE TABLE student ;
TRUNCATE 
문은 삭제된 TABLE을 복구하는 것을 가정하지 않기 때문에
 
수행속도는 Delete 문보다 빠르지만한번 삭제가 되면 복구할 수 없는 단점이 있어요.

 

Connect

 

 

32. 데이터 윈도우 위에 Painter에서 데이터윈도우 Object 위에 배치할 수 있는 컨트롤Object Column Object 이다 Column Object는 데이터윈도우 Object 속의 Object

하여 일명 복합 Object(Composite Object)를 구성한다 Colunm Object의 기능에 대해서?

데이터베이스에서 기본적으로 가져온 칼럼 중 작업 영역에서 칼럼을 삭제 한 후 삭제된 칼럼을 다시 추가 하고자 할 경우 사용한다.

 

33.데이터윈도우 Paint에서 Column Object EDIT 탭에 있는 Style Type에는 크게 여섯가지가 있다 이들 각각의 대해서 유형별 사용법?

checkbox  체크여부 박스이며 체크 되면 Y N같은 값을 가질수 있다.

DropDownDW  여러 속성들을 묶어서 선택할수 있게 할 수 있다.

DropDownList  코드테이블 등의 자료를 처리하거나 다수의 정적인 코드를 사용자로부터 선택 하고자 할 때 사용한다.

EDIT MAKE-날짜나 특수한 형식의 나타낼 때 사용 한다.

RadioButtons여러 개 중에 하나만 선택할 수있게 버튼식으로 표현할수있다.

Inkedit-그림을 넣거나 텍스트를 입력할수있다.

 

34.Column Object Style Type  Edit 스타일에서 Limit , AutoSelection,  Display Only, ShowFocus Rectangle, Password, Required  Property들 각각에 대해서 정확한 사용법?

Limt- 칼럼 텍스트 박스에 입력할 문자의 길이를 나타낸다값이 0일 경우 길이에 제한 없이 입력할 수 있다.

Acceleator- 사용자가 특정한 단축키를 설정할 때 영문자 하나를 입력 하고 Alt+입력키를 선택했을 때 포커스를 컨트롤 내에 이동한다.

AutoSelection-선택된 칼럼을 돋보이게 한다만약 선택되지 않으면 필드에 포커스가 잡히지 않는다.

DisplayOnly-칼럼에 데이터의 출력만 한다.

ShowFocusRectangle-칼럼에 포커스가 잡힐 때 칼럼 주변에 흐린 사각형으로 표시된다.

Empty String is Null- 칼럼에 데이터를 입력하지 않으면 널 값으로 정의된다.

Password-데이터 입력시 애스테리크로(*)로 표기된다 그러므로 입력하는 데이터를 보여주지 않을 경우 사용한다.

Require-잘못된 데이터가 들어왔을 때 다른 컬럼으로 포커스가 이동 하지 않는다.

AutoHorz Scroll-입력되는 데이터가 칼럼 라인길이 보다 클 때 자동으로 수평 스크롤을 정의한다.

Auto vert Scroll- 입력되는 데이터가 칼럼 라인길이 보다 클 때 자동으로 다음 라인을 스크롤한다.

Horz Scroll bar-칼럼필드에 수평 스코롤바를 놓는다.

Vart Scroll bar-칼럼필드에 수직 스크롤바를 놓는다.

Use Code Table-이것을 선택하면 하단에 CODE를 입력할 수 있는 항목이 나타나며, Column항목이 코드값으로 구성되어 있으면 이 항목을 선택하여 코드를 정의한다. Display value 항목에는 화면에 보여주는 데이터를 입력하고 정의된 값을 입력하면 datavalue 에는

내부적으로 처리되는 코드값을 정의한다.

 

35.Column Object  Style Type  EditMask 스타일에서 Mask설정법?

이항목은 사용자가 열에 데이터를 입력할 때 특수 문자를 사용하여 일정한 포맷으로 자료를 편집하여 입력한다예들들면 필드에 에디트 마스크로 ##.###을 선언했으면 파워빌더는 입력을 숫자만 허용하고천단취로,을 표시하는 숫자만을 입력할 수있다.

Mask  필드형식을 설정 하는 항목이다예들 들어 전화번호는 (###)###-####형식으로 될 것이다.

!대문자 하나를 지정한다

^소문자 하나를 지정한다.

# 숫자혹은 숫자형 문자

A알파벳 문자

X모든 문자

 

36. Column Object  Style Type EditMask스타일에서 Auto Skip Property의 기능?

.AutoSkip-정해진 마스크에 값이 채워졌을 때 포커스가 자동으로 다음 탭의 순서로 이동한다.

 

37.Column objectstyle type  DropDownDataWindow 스타일에서 Allow Editng Always Show list Always Show Arrow, lines in DropDown  Property들의 사용법?

Allow Editing-사용자에게 여러 선택 값을 물을 때또는 사용자에게 자신의 값을 직접 입력하게 할 때 사용한다만약 이를 선택하지 않으면 리스트 상자에 있는 값만 사용할 수있다.

Sorted-이 항목을 선택하면 오름 차순으로 값을 보여준다.

Always ShowList  이항목을 선택하면 항상 리스트 박스가 나타난다.만약 선택하지 않으면 열에 포커스가 잡힐 때 열의 리스트 박스가 드롭 다운 될 것이다.

AlwayShowArrow-이 항목을 선탯하면 언제나 리스트 박스를 여는 화살표를 보여준다만약 선택되지 않으면 칼럼에 포커스가 잡힐 때만 화살표가 나타난다.

Dispay  Value,Data value : 화면상에 출력되는 값과 실제로 저장되는 값을 입력한다.

 

38.Column Object Style Type RadioButtons 스타일에서 Column Across Property 

기능에 대해서?

엇갈려 나타나는 열의 수를 정한다.

 

39.데이터윈도우 painter에서 데이터윈도우 Object의 밴드(bend)Property중에서 AutoSize Height기능이란?

자동으로 높이를 맞춘다.

 

40.데이터윈도우에 배치되는 컨트롤이나 Object Teb Order를 지정하여 탭 키를 지정된 순서로 이동하는 방법?

페인트바에서 텝오더를 클릭하면 컨트롤 이나 Object에 빨간색 숫자가 나오는데 그숫자가 작을수록 먼저 선택된다.먼저가야할 곳은 작은 순으로 정리하면된다.

 

41.데이터윈도우 Painter를 사용하여 데이터윈도우의 내용을 정렬(sort)하거나 필터(filter)하는 방법은?

데이터윈도우 오브젝트에서 데이터베이스로부터 검색된 데이터를 소트하려면 Sql Select문에 order by절을 사용한다이렇게 하면 DBMS자체가 소트하여 파워빌더에게 이미 정렬된 로우가 전달된다그러나 DBMS서버의 부하를 줄이거나 SELECT문에서는 사용하지 않고 클라이언트의 파워빌더내에서 정렬 하기를 희망할 것이다이때는 Sort Column을 이용한다.

소트할 컬럼을 Source Data에서 마우스로 선택하여 컬럼 박스로 드래그하고 오름차순으로 소트할 것인지 내림차순으로 소트할 것인지 칼럼의 오른쪽에 있는 체크박스를 지정한다여러 개의 칼럼을 선택할 경우 컬럼의 직접 없고,약간의 연산을 수행하고 난 뒤에 정렬하고 싶은 경우에는 오른쪽에 가져온 소트 키를 더블클릭하여 Modify Expression화면을 열고

직접 식을 입력한다. Setsort() Sort()함수를 이용하여스크립트 내에서 이용할 수 있는데

Setsort()함수는 정렬할 내용을 정의하고 sort()함수는 실제 정렬 작업을 한다.

예를 들어 칼럼을 부서 (dept_id),이름(name)순으로 정렬한다면 다음 2가지중 하나로 작업을 하면 된다.

Setsort(dept_id A,name A)

Setsort(dept_id A, 2A)

칼럼명으로 정렬을 할 경우에는 칼럼과 정렬방법 사이에 공간을 두고 ID index로 정렬할 경우에는 붙여서 사용한다.

Filter-sort와같이 데이터윈도우 버퍼에 있는 내용의 자료를 필터 기능을 사용해서 버퍼의 자료중 일부만을 보여 주고자 할 때 사용된다여기서는 다음 그림과 같이 Specify Filter항목에 원하는 조건을 기술하면 조건에 맞는 데이터는 프라이머리 버퍼에 위치하고 조건에 맞지 않는 데이터는 필터 버퍼에 위치한다그리고 새로운 조건을 주면 그조건에 의해 다시 버퍼의 배열이 이루어진다필터에서도 소트와 같이 Setfilter() filter()함수를 이용하여 스크립트내에서 사용할 수 있다. 3가지 타입으로 조건의 예를 들면 아래와 같으며

문자칼럼명 = 길동

숫자칼럼명 =<5000

날짜칼럼명 <date(2001.8/16)

문자는 양쪽에 따옴표를 붙여주고날짜형일 경우는 date() 함수를 사용해서 타입을 바꾸어주어야 한다.

 

42.데이터윈도우 Painter Rows Menu에서 Retrieve Options Rows As Needed Rows to disk Menu항목의 사용법?

Rows As Needed  한번에 데이터베이스에서 너무 많은 데이터를 가져올 경우 발생되는 시간을 줄이기 위하여 일단 검색되어진 약간의 데이터를 먼저 Retrieve하고 사용자의 요구가 있는 경우 다시 조금씩 Retrieve하고자 할 때 사용한다이 기능은 데이터가 매우 많을 것으로 예상되는 데이터윈도우에 보통 사용되지만 몇몇 다음과 같은 제약이 있다1sort()기능이나 sum,Avg와 같은 기능을 사용할 수 없다이 것은 모든 로우를 Retrieve해야만 구현이 간으하기 때문이다. 2여러 사용자가 공유하는 테이블인 경우에 Rows as Needed 기능을 사용할 수없다이것은 그 동안 테이블은 다름 사람에게 접근 금지가 된다필요 하면 윈도우의 스크립트 내에서 옵션을 변경할 수 있다.

Dw_1.modify(datawindow.retrieve.asneeded=no)

 

Rows to disk- 데이터윈도우가 많은 양의 데이터를 갖고 올 것으로 예상되는 경우 메모리에 읽어온 데이터를 저장하는 것이 아니라 임시 파일에 읽어온 데이터를 저장하여 Swap을 통하여 데이터윈도우에 보여질 데이터를 임시파일에서 교환하도록 한다이기능을 사용하면 속도는 조금 떨어지짖만 사용 메모리를 극대화함으로써 부가적인 성능향상을 꾀할 수있다.

 

43.데이터윈도우 Object update가 되도록 하려면 update property를 지정해 주어야 한다.

Update Properties 설정 다이얼로그 박스의 사용법?

데이터윈도우를 만들어 데이터베이스에 보낼 SQL문장의 기초적인 내용을 정의 하는것으로하나의 테이블만을 갖고 데이터 윈도우가 만들어 졌다면 모든 속성이 자동적으로 정의되나 선택된 테이블이 여러 개 이거나 기본키가 없는 경우에는 개발자가 직접 SQL문을 정의하여야 한다.

 

Allow Updates- 데이터윈도우의 버퍼에 입력 또는 수정된 자료의 저장을 허용할 것인지 결정한다단순한 조회의 기능으로  데이터윈도우를 작성한다면 선택할 필요가 없다.그러나 자료를 입력하고 수정 한다면 반드시 이 체크박스를 선택하고 테이블과 그안에 저장할 컬럼을 지정 해 주어야 한다.

 

Key column  Original Buffer의 키 값과 데이터베이스의 키 값을 비교 하여 두개의 값이 같으면 저장된다즉 사용자가 데이터를 클라이언트에 가져온 이후에 선택된 Row들의 키 값이 바뀌지 않았다면 update()함수는 성공할 것이다이 옵션을 사용할 때에는 주의해야 한다 파워빌더에게 Where절에 키 칼럼을 포함 시킬 것을 명령하면 다른 누군가가조회한 동일한 로우를 변경했을 경우  여러분이 데이터베이스를 갱신할 때에 그사람의 변경 내용은 갱신된다.단일 사용자 데이터베이스 또는 데이터베이스에 Lock을 걸어 놓은 경우에만 이 옵션을 사용한다.

 

Key and Update Column 두가지의 키 값과 update column에서 선택한 칼럼을 Original Buffer의 키 값과 DB의 키 값을 비교한 후에 두개의 값이 같으면 Update/Delete를 실행하고 그중 update column에서 선택한 컬럼이 하나라도 맞지 않으면 update/delete를 실행하지 않는다즉 로우가 조회된 후에 데이터베이스에 있는 어떤 칼럼이 다른 사용자가 먼저 자료를 수정하였다면 갱신은 실패한다.

 

Key and Modifyed column  키 값과 수정된 컬럼을 비교한 후에 저장을 한다즉 이옵션은 파워빌더가 update SQL문장을 만들 때 Where조건을 어떻게 만들 것인지를 결정해 주는 것이다.

위의 세가지 옵션은 데이터윈도우의 사용 목적과 기능들을 고려해서 선택해야 한다예로

한사람만이 해당 테이블을 사용한다면 처음의 Key Column을 선택하면 되고 여러 사람이 동시에 테이블을 사용한다면 반대로 Key Column을 사용해서는 안된다즉 데이터 무결성에 문제가 발생 되기 때문이다.

Key Modification Unique Key Column에서 선택된 컬럼의 값이 수정 되었을 때 즉 기본키 부분이 수정되었을 경우 어떻게 처리를 하는가를 경정 하는것으로 이옵션은 사용자로 하여금 키 값을 변경 하도록 허락하는 경우와 데이터베이스가 키의 변경을 수용해야만 이 옵션이 유효하다.

Use Delete then Insert 옵션은 데이터 윈도우에서 수정된 Row 를 파워빌더가 Delete문을 사용하여 지우고 다시insert문을 사용하여 자료를 입력 한다이 옶견을 사용함으로써 주목해야 하는 것은 Select문에 모든 컬럼을 넣아야 한다 그리고 데이터베이스의 모든 키 값이 바뀌게 되면 전체 Row들이 다시  삽입되어야한다.
Identity Column : 
테이블에 
automatic Incremental이 선택된 경우 정의하며 사용자가 입력하지 않아도 데이터가 저장되면서 자동으로 순차적인 값을 받게 된다.

 

44.데이터윈도우 painter를 사용하여 데이터윈도우 내용을 그룹(group) 짓는 방법?

특정한 칼럼으로 그룹을 만들어 데이터를 구현 할 때 사용 합니다 메뉴에서 새로운 그룹을 생성 하면 기본 4개의 밴드외에 header group , Trailer group 2개의 밴드가 추가되고,일반적으로 그룹으로 묶은 부분합 등의 내용들을 기술한다.

 

45.데이터윈도우의 네 가지 버퍼 Primary buffer, Filter buffer , Delete Buffer, Original buffrt의 사용법?

기본버퍼(Primary Buffer)-서버로부터 Retrieve된 데이터와 Insertrow()함수를 통하여 입력된 데이터가 이 버퍼에 저장되고사용자에 의해 변경된 데이터를 가지고 있다즉 현재 사용자가 보고 있는 Current한 버퍼라고 할 수있다.

 

필터버퍼(Filter Buffer)-filter()함수에 의해 걸러진 값 Filter 조건을 만족하지 않는 데이터를 포함하고 있다이때 filter조건을 만족하는 데이터는 Primary버퍼에 존제힌다.

 

삭제버퍼(Delete Buffer)- 데이터베이스에서 아직 삭제되지 않았지만 데이터윈도우에서 삭제된 데이터를 포함한다데이터는 Deleterow()함수로 Primary 버퍼에서 삭제된 자료를 가진 버퍼이다.

 

Original Buffer-한 칼럼의 데이터를 변경 하여도 database로부터 초기에 Retrieve된 값을 가지고 있는 것이 원본(Original)버퍼이다.즉 수정되기 이전의 데이터나 update()함수에 의해 저장에 성공한 이후의 값을 가진 버퍼이다.사용자가 조회된 데이터를 수정하거나 삭제 추가 등의 작업을 하면 이런 일련의 변화들을 데이터 윈도우 Control은 데이터윈도우 버퍼에 반영한다.그리고 스크립트에서 데이터윈도우 컨트롤에 대해 update()함수를 실행 하면 데이터베이스를 변경하기 위한 SQL을 생성 하여 DBMS로 보내진다.

 

46.데이터윈도우의 SetitemStatus() GetItemStatus()함수의 의미와 사용법?

SetItemStatus()-Row 또는 Column의 수정 상태를 변경한다.수정상태는 update함수가 row에 관하여 생성하게될SQL문장의 타입을 결정한다.

Dwcontrol.SetItemStatus( Row,Column,dwbuffer,status)

GetItemStatus()-Row또는 Row내의 칼럼에 대한 수정 상태를 나타낸다수정상태는 update함수가 row또는Column에 관하여 생성할 SQL문장의 타입을 결정한다.

Dwcontrol.GetItemStatus( row,column,dwbuffer)

 

47.데이터윈도우의 Object에서 또는 데이터윈도우 컨트를에서 아이템 컨트롤에 있는 값을 얻어내는 함수  GETTEXT()애 대해서?

현재칼럼에 있는 텍스트 값을 구한다.

 

48.External데이터윈도우의 사용법?

데이터윈도우 오브젝트를 구현할 때 데이터베이스에서 데이터를 엑세스 하지 않고 사용자가 임의로 테이블과 같은 형식의 데이터를 이용하고자 할 때 External소스를 사용하며 이 External소스는 사용자가 직접 원하는 데이터의 칼럼과 타입을 지정하고 이를 마치 데이터베이스 내의 테이블처럼 취급할 수 있다.우리가 개발하는 데이터윈도우 오브젝트의 대부분은 데이터베이스에 있는 테이블과 연결하여 만들지만 직접 테이블과 연결될 필요가 없는 데이터 윈도우가 있다예를 들면 데이터를 사용자에게 보여주고 더 이상의 테이블과 연결이 필요 없는 경우 (readonly로 조회만 하는경우)이다이렇게 데이터윈도우를 만들어 데이터를 저장하였다면 이 데이터 윈도우는 updateRetrieve와 같은 데이터윈도우 컨트롤의 메소드를 사용할 수 없다 그러므로 External데이터윈도우를 이용하는 것은 단순한 report용이나 조회용으로 사용된다그러므로 데이터를 가지고 와서 사용자에게 보여주고 더 이상의Network Traffic이 일어나지 않도록 하고 실제 데이테베이스에는 변경 없이 데이터를 조작하고자 할 때 Extenal Source를 사용한다.

 

49.Open()함수의 패러매터로 구조체를 넘기는 방법?

Open()함수는 윈도우와 연관된 컨트롤을 불러와서 화면에 나타내는데 사용한다.윈도우의 컨트롤과 속성함수,변수는 윈도우가 열리기 전까지 접근할 수가 없다. Open()함수를 이용하여 윈도우를 여는데 다음과 같이 여러 방법들이 있다.