블로그 이미지
SITD

카테고리

분류 전체보기 (34)
1.DB (4)
2.OS (3)
3.PROGRAMMING (14)
4.학업 (0)
5.영어 (0)
6.KSIT (5)
7.증권 (1)
8.EXCEL (0)
9.Graduate (2)
기타 (5)
Total
Today
Yesterday

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

공지사항

태그목록

최근에 올라온 글

결론만 간단히, .h파일에 넣어서 처리했다.

템플릿 함수의 경우 h에 선언을 넣고 cpp에 정의를 넣었을 때,

오브젝트 파일 만들 때는 오류가 발생하지 않지만, 다른 소스에서 해당 헤더를 참조하여 컴파일할 때 오류가 발생한다.

이런 함수는 선언된 적이 없다는 오류인데(undefined reference to), 

해결 방법은 3가지 정도 있는 듯 하다

1. template(typename T> 위에 export를 둔다

2. #include "xx.cpp" 를 추가한다.

3. 헤더 파일이 구현 부를 넣는다.

이중 1번은 export를 수행하는 컴파일러가 있는지 없는지도 불분명할 정도로 보편적이지 않고, 옳지 않다는 의견이 많다.
2번은 표준에 상당히 위배된 느낌이라서 3번을 사용했다.
템플릿 함수의 특성 때문에 헤더 파일에 소스를 추가할 경우, 확장자를 hpp로 하자는 의견도 있는데(출처 2) 여기까진 안했다.

컴파일 할 때 순서에 따른 문제가 아닐까 싶은데, 정확한 원인은 모르겠다.
단지, 템플릿 함수는 컴파일 타임에 템플릿 함수를 호출하는 객체들의 형태에 맞는 소스를 만든다고 들었다
(즉, typename T로 int, float, double이 들어간다면, 3가지 타입의 함수를 자동으로 만든다)
이게 .h에 있을 땐 가능한데(정확힌 include됐을 때), .cpp에 있을 땐 컴파일 타임에 못 만드는게 아닐까 싶다.



출처 1 :  http://ttriton.tistory.com/tag/undefined%20reference%20to
출처 2 :  
http://kldp.org/node/47258 
Posted by SITD
, |
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()  모디파이 함수를 이용하면 실행 시에 데이터윈도나 데이터윈도의 내의 어떠한  coponent의 속성이라도 변경할 수가 있다.  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로 조회만 하는경우)이다이렇게 데이터윈도우를 만들어 데이터를 저장하였다면 이 데이터 윈도우는 update Retrieve와 같은 데이터윈도우 컨트롤의 메소드를 사용할 수 없다 그러므로 External데이터윈도우를 이용하는 것은 단순한report용이나 조회용으로 사용된다그러므로 데이터를 가지고 와서 사용자에게 보여주고 더 이상의 Network Traffic이 일어나지 않도록 하고 실제 데이테베이스에는 변경 없이 데이터를 조작하고자 할 때 Extenal Source를 사용한다.

 

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

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

Posted by SITD
, |
Accelerator Key(액셀레이터 키)
- 파워빌더에서 컨트롤이나 메뉴 아이템을 선택할 때 ALT키와 함께 사용하는 키를 말합니다. 윈도우즈 3.1과 윈도우즈 95에서는 니모닉 액세스 캐릭터즈(Mnemonic Access Characters)라 부르고 모티프에서는 니모닉스(Mnemonics)라 부르며, 매킨토시에는 이러한 용어가 없습니다. Shortcut Key 참조

Access Key(액세스 키)
- Accelerator Key참조

ActiveX Control(액티브 X 컨트롤)
 - 윈도우 ActiveX 참조

Ancestor(앤시스터) 
- 한 클래스에 대해 기본적인 기능들이 정의되어 있는 오브젝트로서 여기에서 계승을 받아 디센던트(Descendant) 오브젝트를 만듭니다. 

Any(애니) 
- 현재 지정된 값의 데이터 타입을 받을 수 있는 데이터 타입으로 넘겨받는 데이터 타입에 따라 변경이되는 데이터 타입입니다. 

Application Framework(어플리케이션 프레임웍) 
- 서로 연관성이 있는 기본 클래스들의 집합으로 필요한  오브젝트를 계승 받을 수 있습니다.

Application Object(어플리케이션 오프젝트) 
- 윈도우, 메뉴, 함수, 혹은 데이터윈도우처럼 파워빌더 라이브러리에 저장되어 있는 하나의 오브젝트로서 어플리케이션이 시작되는 출발점입니다. 
  이 오브젝트는 어플리케이션에서 사용하는 라이브러리 이름이라든가 어플리케이션이 시작될 때와 종료될 때 해야 하는 작업의 내용, 폰트에 관한 사항 등 어플리케이션 전체에 관한 정보를 가지고 있습니다. 

Asynchronous Request(에이싱크러너스 리퀘스트, 비동기 요청)
- 분산 어플리케이션에서, 클라이언트에서 호출한 함수가 서버에서 나중에 처리되는 것을 말합니다.
  클라이언트가 서버에 비동기 요청을 한 후, 서버가 처리하는 동안 다른 작업을 할 수 있습니다.

Base Class Object(베이스 클래스 오브젝트)
- 서로 계승관계에 있는 오브젝트들을 트리 구조로 나타낼 때 제일 위쪽에 위치합니다.
  베이스 클래스 오브젝트는 주로 일반적인 기능을 가지고 있고, 각각의 디센던트 오브젝트는 필요에 따라 계승 받은 기능을 수정해서 사용합니다.
  파워오브젝트(PowerObject)가 모든 파워빌더 오브젝트의 베이스 클래스 오브젝트가 됩니다.

Blob(블랍)
- 데이터 타입으로서 범위가 정해져 있는 않은 데이터를 저장할 때 사용합니다.
   (예를 들어 바이너리, 이미지 혹은 라지 텍스트)

Boolean(불리언)
- 참이나 거짓을 갖는 데이터 타입

BreakPoint(브레이크 포인트)
- 파워빌더에서 어플리케이션을 디버거 모드에서 실행을 할 때 잠시 중단을 하는 시점을 정하는 위치입니다.
   예를 들면, 함수를 부르는 문장 바로 전에 브레이크포인트를 지정하면, 실행이 되다가 그 시점에서 잠시 실행을 멈춥니다. 브레이크포인트는 스톱이라고도 부릅니다.

Cascading Menu(캐스케이딩 메뉴)
- 드롭다운 메뉴 아이템을 선택했을 때 옆에 나타나는 메뉴로서 캐스케이딩 메뉴 안에 또 캐스케이딩 메뉴를 가질 수 있습니다.

Char(캐릭터)
 - 한 자리의 글자, 숫자 혹은 기호를 저장하는 기본적인 데이터 타입으로 캐릭터라 표기하기도 합니다.

Child Class(차일드 클래스)
- 페어런트(Parent) 클래스 안에 있는 클래스로 네스티드(Nested) 클래스라고도 부릅니다.
  Class 참조

Child DataWindow(차일드 데이터윈도우)
- DataWindow Child 참조

Child Window(차일드 윈도우)
- 페어런트 윈도우(메인 윈도우)에 종속되어 있는 윈도우로서 페어런트 윈도우 영역 안에서만 존재 할 수 있습니다.
  차일드 윈도우의 위치는 페어런트 윈도우에 상대적입니다.
  차일드 윈도우를 페어런트 윈도우 밖으로 이동하면 페어런트 윈도우 안에 있는 부분만 보이고 페어런트 윈도우 밖으로 나간 부분은 화면이 잘립니다.
  페어런트 윈도우를 이동하면 차일드 윈도우는 상대적 위치를 유지하며 같이 이동됩니다.
  차일드 윈도우를 최소화 하면 페어런트 윈도우 안에 아이콘으로 나타납니다.

Class(클래스)
- 특정 오브젝트 타입에 대한 정의로서 그 오브젝트의 프로퍼티(Property), 이벤트, 함수, 스트럭쳐 그리고 스크립트 등을 정의합니다.
  한 클래스에 속해 있는 모든 인스턴스(Instance)는 그 형태와 기능에 있어서 동일하지만 변수 값, 프로퍼티 등 데이터는 각기 다릅니다.

Class Hierarchy(클래스 하이러키)
- 트리 구조로 표현된 클래스들 간의 관계 베이스 클래스는 한 개이지만 계승받는 클래스들의 숫자는 제한이 없습니다.

Class Library(클래스 라이브러리)
- 재사용이 가능하고 확장할 수 있는 클래스들의 집합으로 파워빌더에서는 클래스를 오브젝트라고 부릅니다.(예를 들어 윈도우 오브젝트, 메뉴 오브젝트 등)

Class User Object(클래스 유저 오브젝트)
- 유저 오브젝트 페인터를 통해서 만드는 오브젝트로서 보이지 않는 오브젝트로 클래스 유저 오브젝트를 사용하기 위해서는 스크립트 내에서 그 오브젝트의 인스턴스를 만들어서 안에 정의되어 있는 함수를 호출합니다.
  주로 비즈니스 룰이나 한 개의 단위로 작업해야 할 내용들을 정의하기 위해 클래서 유저 오브젝트를 사용합니다.
  클래스 유저 오브젝트에는 2가지 종류가 있습니다. 스탠더드(Standard)와 커스텀(Custom) 클래스 유저 오브젝트

Code Table(코드 테이블)
- 에디트 스타일에 사용할 테이블로서 디스플레이 값과 데이터 값을 갖습니다.
  디스플레이 값은 사용자가 보는 값이고 데이터 값은 데이터베이스에 저장되어 있는 값입니다.

Composite Report(컴퍼지트 리포트, 복합 보고서)
- 한 개 이상의 중첩 리포트로 구성됩니다.
  데이터 소스를 갖지 않으며 다른 리포트의 저장소로만 작용합니다.

Computed Field(컴퓨티드 필드, 계산 필드)
- 데이터 윈도우, 리포트 혹은 폼에 만들어진 필드로서 실행 중 클라이언트에서 계산된 값을 나타낼 때 사용됩니다.
  컬럼, 상수, 함수, 연산자 등을 사용해서 계산할 수 있습니다.
  예를 들어, 봉급과 상여금 컬럼을 가지고 있는 데이터윈도우에 봉급 + 상여금 값을 갖는 필드를 만들 수 있습니다.

Connection Object(커넥션 오브젝트)
- 분산 어플리케이션에서 클라이언트와 서버간에 커넥션을 설정하기 위해 필요한 오브젝트로 클라이언트 쪽에서 만들어지며, 서버에 관한 정보를 가지고 있습니다.

Context Object(컨텍스트 오브젝트)
- 파워빌더 오브젝트의 일종으로 어플리케이션이 특정 서버의 서비스를 참조할 때 사용되는 오브젝트입니다.

Control(컨트롤)
- 그래픽 오브젝트로서 윈도우 디자인을 향상시키고 사용자와 어플리케이션 간에 인터페이스가 됩니다.
  컨트롤도 이벤트를 가질 수 있어서 스크립트를 트리거(Trigger) 시키거나 함수를 호출할 수 있습니다.

Cursor Type(커서타입)
- 화면에 나타난 커서의 모양을 말합니다.

Custom Class User Object(커스텀 클래스 유저 오브젝트)
- 사용자가 프로퍼티나 함수들을 정의한, 보이지 않는 클래스 유저 오브젝트로 비즈니스 룰 등과 같이 보이지 않는, 한 단위로 처리해야 할 작업등을 정의할 때 사용합니다.
  파워빌더와 논비주얼 오브젝트 시스템 오브젝트로부터 계승받아 만들어 갑니다.

Custom Visual User Object(커스텀 비주얼 유저 오브젝트)
- 한 개 이상의 컨트롤로 이루어진 유저 오브젝트입니다.
  예를 들어 자주 함께 사용되는 컨트롤들을 유저 오브젝트로 만들어서 스크립트까지 작성해 놓으면 다음에 반복 작업 없이 쉽게 사용할 수 있습니다.

Database Interface(데이터베이스 인터페이스)
- 파워빌더에서 데이터베이스에 연결하는 인터페이스를 말하며 두 가지 방법으로 연결할 수 있습니다.
  파워소프트 ODBC 인터페이스를 통해서 연결하거나 파워소프트에서 제공하는 다이렉트 데이터베이스 인터페이스를 통해서 연결할 수 있습니다.

Database Profile(데이터베이스 프로파일)
- 파워빌더나 개발 환경에서 특정 데이터베이스에 연결할 때 필요한 정보들로서 PB.INI나 IM.INI파일에 저장되어 있는 파라미터들을 말합니다.

Data Source(데이터 소스)
- 데이터 윈도우 오브젝트에 가져올 데이터 소스로 어떤 경우에는 데이터를 선택하는 방법이 되기도 합니다.
  보통 윈도우 페인터에서 지정할 수 있으며 5가지 유형이 있습니다.
  Quick Select, SQL Select, Query, External, Stored Procedure

DataStore(데이터스토어)
- 스크립트를 통해서만 조정할 수 있는 보이지 않는 데이터윈도우입니다.

Data Type(데이터타입)
- 파워스크립트는 인티저나 스트링과 같은 스탠더드 데이터 타입, 윈도우 등과 같은 시스템 오브젝트 데이터 타입 외에도 정렬같은 이뉴머레이티드(Enumerated) 데이터 타입이 있습니다.
  각 DBMS마다 파워빌더 데이터 타입과 대응되는 데이터 타입이 있지만 정확하게 1 대 1 대응이 된다고는 할 수 없습니다.

Data Value(데이터 벨류)
- 데이터베이스에 저장되어 있는 값을 지칭합니다.
  Display Value 참조.

DataWindow Child(데이터윈도우 차일드)
- 데이터윈도우 오브젝트 안에 있는 드롭다운 데이터윈도우입니다.

DataWindow Control(데이터윈도우 컨트롤)
- 윈도우나 커스텀 유저 오브젝트에 올려 놓는 컨트롤로 데이터윈도우 페인터에서 작성한 데이터윈도우 오브젝트가 지정됩니다.

DataWindow Object(데이터윈도우 오브젝트)
- 관계형 데이터베이스나 혹은 비관계형 데이터베이스(엑셀, 디베이스 파일 등)에 있는 데이터를 가져오고 보여주고 조작할 수 있도록 만들어진 오브젝트로 데이터윈도우 오브젝트는 사용자가 SQL문장을 사용하지 않고도 데이터베이스에 있는 데이터를 볼 수 있고 수정할 수 있도록 합니다.

DataWindow Plug-in(데이터윈도우 플러그-인)
- 웹 브라우저에서 파워빌더 리포트 파일을 볼 수 있게 하는 기능입니다.

Date(데이트)
- 스탠더드 데이터 타입으로 날짜를 나타낼 때 yyyy-mm-dd형태로 나타냅니다. 
  yyyy : 1000~3000까지의 숫자로 연도를 나타내며,
  mm : 01~12까지의 숫자로 월을 나타내고,  
  dd : 01~31까지의 숫자로 일을 나타냅니다.

DateTime(데이트타임)
- 스탠더드 데이터 타입으로 데이트와 타입으로 이루어집니다.
  데이터베이스로부터 데이트타임 타입의 값을 읽고 쓰는데만 사용됩니다. 

DBMS(DataBase Management System)
- 데이터베이스 메지니먼트 시스템. 데이터베이스 관리에 필요한 소프트웨어입니다.

DDE(Dynamic Data Exchange)
- 다이나믹 데이터 익스체인지. 윈도우즈 어플리케이션 간에 데이터를 교환하는 프로시져로 윈도우즈 표준에 따릅니다.

Debug Mode(디버그 모드)
- 어플리케이션 실행 모드로서 에러를 찾기 위해 브레이크포인트를 삽입할 수 있고, 스크립트를 한줄 씩 진행하면서 변수의 값들을 볼 수 있습니다.

Decimal(데시멀)
- 스탠더드 데이터 타입으로 18자리까지의 소수를 표시합니다.
  소수점은 18자리 중 어느 위치에 있어도 관계없으며 자리 수로 계산되지 않습니다.
  줄여서  DEC로 표기하기도 합니다. 

Declaration(디클러레이션) 
- 변수나 함수의 선언을 말합니다.

Descendant(디센던트)
- 앤시스터 오브젝트로부터 모든 기능(프로퍼티, 변수들, 함수, 이벤트 스크립트)을 계승받은 디센던트 오브젝트.

Display Case(디스플레이 케이스)
- 영문의 경우 캐릭터 타입의 데이터를 나타낼 때 대문자, 소문자 혹은 대소문자를 혼합해서 사용할 수 있습니다.
  기본적인 제공은 Any로 입력된 형태 그대로 보여집니다.

Display Format(디스플레이 포맷)
- 데이터가 보여지는 형태, 예를 들어 화폐를 나타낼 때 앞에 달러 표시를 붙여서 보여준다거나 음수 값을 나타낼 때 색깔을 달리해서 보여줄 수 있습니다.
  파워빌더에는 미리 제공되는 여러 가지 디스플레이 포맷이 있고 사용자가 정의해서 사용할 수도 있습니다.

Display Value(디스플레이 벨류) 
- 사용자가 보는 값으로 코드 테이블에 지정된 데이터 값과 대응됩니다.

Distributed Computing(디스트리뷰트 컴퓨팅, 분산 컴퓨팅)
- 클라이언트/서버 환경에서 어플리케이션을 작성하거나 실행 시킬 때:
 * 비즈니스 로직을 서버에서 관리할 수 있고,
 * 어플리케이션 기능을 클라이언트와 서버로 나눌 수 있어서 클라이언트 쪽의 부담을 줄일 수 있습니다.
 * 어플리케이션을 쉽게 확장 할 수 있고 관리할 수 있습니다.
  이러한 분산 컴퓨팅은 비즈니스 로직과 사용자 인터페이스를 분리할 수 있는 자연스런 방법을 제공합니다.
  분산 어플리케이션에서는 클라이언트에서 서버에 있는 오브젝트가 제공하는 서비스를 호출 할 수 있습니다.
  마치 로컬 오브젝트에 정의되어 있는 함수나 이벤트처럼 서버에 있는 오브젝트에 정의되어 있는 함수나 이벤트를 클라이언트 쪽에서 호출해서 사용할 수 있습니다. 

DDL(다이나믹 링크 라이브러리)
- 다이나믹 링크 라이브러리. 필요에 따라 자동적으로 메모리에 올리거나 내리는 라이브러리 입니다.
  여러 개의 윈도우 어플리케이션에서 공통으로 사용할 수 있어서 메모리를 효과적으로 사용할 수 있습니다.

Dot Notation(도트 노테이션, 도트표기)
 - 오브젝트나 컨트롤에 정의되어 있는 함수를 호출하거나 속성값을 구하기 위해 다음과 같이 표기합니다.
  Object.Funtion
  Object.property
  페어런트 오브젝트나 프로퍼티 등을 표시하면 더욱 복잘해 질 수 있습니다. 

Double(더블)
- 소수를 나타낼 수 있는 스탠더드 데이터 타입으로 소수점 이하 15자리까지 표시할 수 있으며, 2.2E-308부터 1.7E+308까지 표기할 수 있습니다.

Drawing Obejct(드로잉 오브젝트)
- 이벤트를 가지지 않는 컨트롤. 4개가 있습니다. 라인, 원, 사각, 타원

Drop Area(드롭 에어리어)
- 드래그 모드에 있는 오브젝트가 드롭될 수 있는 범위입니다.

DropDown Menu(드롭다운 메뉴)
- 메뉴바에 있는 메뉴 아이템을 선택했을 때 리스트가 아래쪽으로 나타납니다.

Drop Lines(드롭 라인즈) 
- 그래프에서 축과 데이터 값을 연결해주는 선을 말합니다.

Dynamic Linking(다이나믹 링킹)
- 어플리케이션이 함수가 필요할 시점에 실행모듈에는 존재하지 않는 함수를 DLL에서 호출하여 사용하는 방식입니다.

Dynamic Link Library(다이나믹 링킹 라이브러리)
- DLL 참조

Dynamic Lookup(다이나믹 룩업)
- 앤시스터에서 존재하지 않는 함수나 이벤트를 디센던트에서 찾도록 하는 방식입니다.

Edit Mask(에디트 마스크)
- 입력된 값을 검증할 수 있는 포맷이나 컨트롤로 데이터의 디스플레이 형태를 조정합니다.

Edit Style(에디트 스타일)
- 데이터윈도우, 리포트, 폼 등에서 컬럼의 데이터가 보여지는 형태입니다.
  파워빌더 리파지토리에 재사용할 수 있는 형태로 저장되어 있습니다.
  데이터 타입이 맞는다면 데이터베이스나 테이블에 관계없이 사용할 수 있습니다.
  데이터윈도우에서도 지정할 수 있지만 데이터윈도우에서 지정하면 재사용이 불가능합니다.

Encapsulation(인캡슐레이션)
- 연관성이 있는 데이터와 프로시저를 함께 묶어서 생각하는 방법으로 인캡슐레이션을 통해서 오브젝트는 데이터와 그 데이터를 다루는 방법(이벤트와 함수들)을 포함합니다.

Enumerated Data Type(이뉴머레이트 데이터 타입)
- 특정 프로퍼티에 대한 값들을 정의하는 데이터 타입으로 뒤에 느낌표를 붙여서 사용합니다.
  예를 들어 정렬은 왼쪽(Left!), 오른쪽(Right!), 중앙(center!) 등의 값을 갖습니다.

Event(이벤트)
- 오브젝트나 컨트롤에 정의되어 있어서 스트립트를 트리거 시킵니다.
  이벤트는 사용자의 마우스 클릭이나 데이터의 입력 등에 의해서 트리거되거나 스크립트 문장이 수행되면서 발생합니다.

Exe File(이엑스이 파일)
- 실행파일. 파워빌더 어플리케이션을 사용자에게 나누어 줄 수 있는 파일 형태입니다.

Export Name(엑스포트 네임)
- 라이브러리 엔트리를 도스 파일로 전환 시킬 때 라이브러리 페인터에서 지정해주고 기본적으로 제공해주는 파일명으로 파일명의 확장자는 SRx입니다.
  x는 엔트리의 종류를 나타냅니다.
  예를 들어 윈도우의 경우는 확장자가 SRW가 되고 데이터윈도우의 경우는 확장자가 SRD가 됩니다.

Expression(익스프레션)
- 변수, 상수, 연산자, 함수 등의 조합으로 데이터 타입과 값을 갖습니다.
  일반적으로 함수의 인수나 지정문의 오른쪽에 사용해서 상수 값 대신 사용할 수 있습니다.

Extended Attributes(익스텐디드 애트리뷰트)
- 데이터베이스 컬럼의 확장된 정보로 디스플레이 포맷, 에디트 스타일, 컬럼의 넓이 높이 등을 포함합니다.
  데이터베이스 페인터나 테이블 페인터에서 정의할 수 있고 데이터베이스 안에 파워빌더 시스템 테이블에 저장됩니다.
  파워빌더에서 새로운 데이터윈도우나 리포트, 폼 등을 만들 때 이러한 확장 애트리뷰트를 기본값으로 사용합니다.

External Visual User Object(엑스터널 비주얼 유저 오브젝트)
- 사용자가 정의한 오브젝트로서 파워빌더 밖에서 만들어진 컨트롤(윈도우 시스템)을 포함한 오브젝트입니다.

Floating Toolbar(플로팅 툴바)
- 파워빌더에서는 툴바의 위치를 조정할 수 있고 화면의 좌우상하 뿐만 아니라 페인터 작업 영역이나 윈도우 위에도 디스플레이 시킬 수 있습니다.
  이렇게 페인터 작업 영역 위에 혹은 윈도우 위에 디스플레이 되는 툴바를 플로팅 툴바라 합니다.

Focus(포커스)
- 현재 키보드로부터 입력받을 수 있는 상태의 컨트롤이나 컬럼, 그래픽 오브젝트를 가리킵니다.
  드롭다운리스트박스나 리스트박스가 포커스를 가지면 첫번쨰 아이템에 점선 박스가 나타납니다.
  데이터윈도우 오브젝트의 컬럼이 포커스를 가지면 그 컬럼의 첫번째 행에 점선의 박스가 나타납니다.

Foreign Key(포링키)
- 다른 테이블의 프라이머리 키 값을 갖는 컬럼으로 포린 키로 연결되어 있는 테이블에 대응되는 값이 반드시 있어야 합니다.

Form(폼)
- 데이터베이스에 데이터를 입력하고 수정할 때 사용되는 전자문서형태입니다. 데이터베이스에 있는 데이터를 디스플레이 하기도 하고, 있는 데이터를 삭제하거나 수정할 수도 있습니다.
  아무것도 없는 폼을 사용해서 데이터를 입력할 수도 있습니다.

Function(펑션, 함수)
- 파워빌더에는 여러가지 함수가 내장되어 있고 사용자가 정의해서 사용할 수도 있습니다.
  객체지향 프로그램에서는 함수를 메소드라 부릅니다.

Garbage Collection(가비지 콜렉션)
- 파워빌더에서 실행 중, 필요 없어진 오브젝트를 표시하고 메모리에서 그 오브젝트를 제거하고 다시 메모리를 요구하는 기능입니다.

Global Function(글로벌 펑션, 전역함수)
- 사용자가 정의한 함수로 특정 오브젝트에 포함되어 있는 함수가 아니고 어플리케이션 어디에서도 호출할 수 있는 함수입니다.
  글로벌 펑션은 스트링을 다루는 함수 등과 같은 파워빌더의 빌트-인(Built-in)함수와 대응됩니다.

Global Structure(글로벌 스트럭처, 전역 구조체)
- 사용자가 정의한 구조체로 특정 오브젝트에 포함되어 있는 구조체가 아니고 어플리케이션 어디에서도 참조할 수 있습니다.

Global Variable(글로벌 베리어벌, 전역변수)
- 어플리케이션의 어디에서나 사용할 수 있는 변수입니다.

Graph(그래프)
- 파워빌더에서는 두 가지 방법으로 그래프를 작성할 수 있습니다.
  유저 오브젝트나 윈도우 위에 그래프 컨트롤을 올려놓고 데이터를 넣을 수 있고, 또 한가지 방법은 데이터윈도우 안에 그래프 오브젝트를 작성하면 데이터 윈도우에 조회된 데이터를 사용하게 됩니다.

Inheritance(인헤리턴스, 상속)
- 윈도우나 메뉴, 유저 오브젝트를 작성할 때 기존에 있는 오브젝트로부터 게승을 받아 만들 수가 있습니다.
  계승을 받아 작성하면 아래와 같이 몇 가지의 장점이 있습니다.
 * 앤시스터 오브젝트를 수정하면 변경된 사항이 디센던트 오브젝트에 자동적으로 반영됩니다.
 * 디센던트는 앤시스터의 스크립트을 계승받습니다.
 * 스크립트 코드와 오브젝트에 통일성, 일관성을 줄 수 있습니다.
 
INI File(아이앤아이 파일)
- 개발 환경의 초기값들을 저장하고 있는 파일입니다.

Instantiate(인스턴시에이트)
- 객체 지향 프로그램에서 클래스에 속한 한 개의 오브젝트(인스턴스)를 생성하는 과정입니다.

Library(라이브러리)
- 파워빌더에서 작성된 오브젝트를 저장하는 도스파일로 확장자가 PBL입니다.
  오브젝트의 소스코드와 컴파일된 바이너리 코드로 구성됩니다.
  파워빌더에서는 다음과 같은 오브젝트를 파워빌더 라이브러리에 저장합니다.
  어플리케이션, 파이프라인, 리포트, 데이터윈도우, 프로젝트, 스트럭쳐, 폼, 프락시, 유저 오브젝트, 함수, 쿼리, 윈도우, 메뉴 등
  PBL 파일 참조

Machine Code(머쉰 코드)
- 플랫폼 특정 언어로 P 코드에 비교하여 빠른 수행 속도를 가집니다.
  Pseudo Code 참조.

Main Window(메인 윈도우)
- 독립된 윈도우로 페어런트 윈도우라고도 합니다.
  MDI 어플리케이션을 작성하면 MDI 프레임 윈도우가 제일 먼저 오픈되지만, MDI 어플리케이션이 아닌 경우에는 메인 윈도우가 제일 먼저 오픈됩니다.

MAPI(Message Application Program Interface)
- 메시지 어플리케이션 프로그램 인터페이스. 마이크로소프트에서 만든 함수들의 집합으로 어플리케이션에 전자 우편 기능을 주고자 할 때 사용합니다.
  파워빌더 메일 함수는 MAPI를 사용합니다.

MDI Application(Multiple Document Interface, 엠디아이 어플리케이션)
- 멀티플 다큐먼트 인터페이스 어플리케이션. 한 개의 프레임 안에 여러 개의 쉬트를 동시에 오픈한 상태에서 작업할 수 있도록 합니다.
  MDI 프레임의 구성요소는 다음과 같습니다.
  메뉴바, 클라이언트 에어리어, 시트, 툴바, 그리고 마이크로헬프를 보여줄 수 있는 스테이터스 에이리어로 구성됩니다.
  MDI시트는 MDI프레임의 클라이언트 에어리어에 열리는 윈도우입니다.
  MDI시트의 타입은 MDI프레임을 제외한 어느 타입이든 상관없습니다.
  SDI Application 참조

MenuBar(메뉴바)
- 윈도우나 어플리케이션에서 사용자가 선택할 수 있는 최상위의 메뉴 아이템을 윈도우의 상단에 출력합니다.

Menu-Level Variable(메뉴-레벨 베리어블)
- 메뉴에 포함된 인스턴스 변수나 쉐어드 변수, SQL커서, SQL프로시져 등입니다.

MicroHelp(마이크로헬프)
- 메뉴 아이템이나 툴바에 있는 아이콘을 클릭했을 때, 윈도우 하단에 있는 스테이터스 바에 디스플레이 되는 간단한 설명으로 마우스 버튼을 누르고 있을 동안에는 마이크로 헬프가 디스플레이됩니다.

Nested Class(네스티드 클래스)
- Child Class 참조.

Object(오브젝트)
- 객체지향 프로그램에서 데이터와 그 데이터를 다루는 메소드를 같이 가지고 있는 자체적으로 완전한 모듈입니다.
  파워빌더에서는 라이브러리에 저장될 수 있는 그래픽 엔티티(어플리케이션, 데이터윈도우, 윈도우, 메뉴, 유저 오브젝트)를 말합니다.
  그러나 트랜잭션 오브젝트, 커스텀 클래스 유저 오브젝트, 스트럭처 등과 같이 눈에 보이지 않는 오브젝트도 있습니다.
  각각의 오브젝트는 그 모양과 기능을 특징 짓는 속성들이 있습니다.
  오브젝트의 속성을 변경하거나 알기 위해서 함수나 연산자, 파워스크립트 문장 등을 사용할 수 있습니다. 오브젝트의 속성을 변경함으로써 그 오브젝트의 모양을 조정할 수 있습니다. 오브젝트는 함수를 호출하거나 스크리브를 트기러 시킬 수 있는 이벤트도 가집니다.

Object-Level Function(오브젝트-레벨 펑션)
- 특정 윈도우나 메뉴, 유저 오브젝트 혹은 어플리케이션 오브젝트에 포함되어 있는 함수로 시스템 오브젝트는 내장 오브젝트-레벨 함수를 가지고 있습니다.
  사용자가 정의한 오브젝트-레벨 함수는 오브젝트 정의의 일부이며 그 오브젝트 안에 있는 스크립트에서는 언제든지 사용할 수 있습니다.
  또한 사용자가 정의한 오브젝트-레벨 함수를 자체 내 뿐만 아니라 어느 스크립트에서든지 참조할 수 있도록 정의할 수 있습니다.

Object-Level Structure(오브젝트-레벨 스트럭쳐)
- 특정 윈도우나 메뉴, 유저 오브젝트 혹은 어플리케이션 오브젝트에 포함되어 있는 스트럭처로 오브젝트-레벨 스트럭처는 그 오브젝트 정의의 일부이며 그 오브젝트 안에 있는 스크립트에서는 언제든지 사용할 수 있습니다.

OCX(OLE Custom Control)
- OLE 커스텀 컨트롤. OCX는 대체로 어플리케이션에서 제공하는 기능들을 포함하고 있고, 이러한 기능들을 함수나 이벤트, 속성 등을 통해 클라이언트 어플리케이션에 제공합니다.

ODBC(Open Data Base Connectivity)
- 오픈 데이터베이스 컨넥티비티. 마이크로소프트사에서 개발한 스탠더드 API로서 하나의 어플리케이션에서 ODBC 드라이버가 있는 데이터 소스라면 다 참조할 수 있도록 했습니다.
  SQL문을 스탠더드 데이터 참조 언어로 사용합니다. 파워빌더에서는 ODBC를 통해서 대부분의 모든 DBMS에 연결 할 수 있습니다.

OLE(Object Linking and Embedding)
- 오브젝트 링킹 앤 임베딩. 한 어플리케이션 내에서 다른 프로그램(서버 어플리케이션)과 데이터를 사용할 수 있도록 합니다.
  데이터 자체는 서버 어플리케이션의 포맷으로 남아있습니다.
  한 어플리케이션 안에 OLE 오브젝트를 포함하게 되면 그 OLE 오브젝트의 서버 어플리케이션을 기동할 수 있습니다. OCX 참조

Painter(페인터)
- 파워빌더 개발 환경 안에서 폼, 쿼리, 리포트 등의 오브젝트를 만들고 데이터를 다루는데 필요한 툴들을 제공하는 윈도우를 페인터라 부릅니다.

PainterBar(페인터 바)
- 현재 열려있는 페인터에 종속되어 있는 툴바로 페인터바에 있는 아이콘들은 각 페인터마다 다르고, 이들을 이용해 오브젝트를 만들 수 있습니다.

Parent Object(페어런트 오브젝트)
- 현재 오브젝트를 포함하고 있는 오브젝트입니다.
  예를 들어 윈도우는 그 안에 있는 컨트롤들의 페어런트 오브젝트가 됩낟.

PBD(PowerBuilder Dynamic Library)
- 파워빌더 다이나믹 라이브러리. 어플리케이션이 실행될 때 메모리에 로드 되는 라이브러리로 실행 중에 파워빌더는 실행 파일에 저장되는 PBD를 참조합니다.
  PBD에 실행 중 동적으로 로드되어야 할 오브젝트가 포함되어 있으면 반드시 도스 패스에 걸려 있어야 합니다.

PB.INI File(피비.아이앤아이 파일)
- 파워빌더 초기 파일. 파워빌더 개발 환경을 조정해주는 파라미터들을 저장하고 있습니다.

PBL(PowerBuilder Library)
- 파워빌더 라이브러리 파일. 피블이라 발음됩니다.
  Library 참조.

PBR(PowerBuilder Resource)
- 파워빌더 리소스 파일. 확장자가 PBR인 ASCII파일. 리소스 파일 안에는 스크립트에서 동적으로 지정된 리소스들의 파일명이 열거되어 있습니다.
  비트맵, 아이콘, 커서 등이 리소스에 포함될 수 있습니다.

PBU(PowerBuilder Unit)
- 파워빌더의 단위. PBU는 가상 인치를 정의합니다.
  가상 인치는 운영체제에 따라 픽셀의 배수로 정의되며 디스플레이 장비에 의해 결정됩니다. PBU를 사용함으로써 모든 플랫폼에서 어플리케이션을 실행 동일한 화면을 볼 수 있습니다.

P Code(P 코드)
- Pseudo Code 참조

Pipeline(파이프라인)
- 같은 데이터베이스 안에 혹은 다른 데이터베이스 안에 데이터를 복제하기 위해 사용할 수 있는 오브젝트로 데이터 파이프라인 페인터에서 생성합니다.
  파이프라인 오브젝트를 사용하는 용도는 같은 DBMS 안에서 혹은 다른 DBMS로 테이블에 있는 데이터를 다른 테이블로 옮긴다든가 혹은 테이블을 새로 생성해서 데이터를 옮길 수 있습니다.

Polymorphism(폴리모피즘, 다형상화)
- 인수의 개수나 순서는 다르지만 같은 오브젝트 안에 같은 이름으로 정의되어 있는 함수를 사용하는 방법입니다.
  파워빌더는 인수를 비교해서 어떤 함수를 호출할 것인지 결정합니다.

Popup Menu(팝업메뉴)
- 특정 이벤트가 발생하고 난 후에 디스플레이 되는 메뉴. 팝업 메뉴를 디스플레이 하기 위해서는 스크립트 내에서 PopMenu()라는 함수를 사용해서 화면에 디스플레이할 위치를 결정해 주어야 합니다.
  주로 오른쪽 마우스 버튼을 클릭했을 때 팝업 메뉴가 디스플레이 되도록 작성합니다.

Popup Window(팝업 윈도우)
- 윈도우 내에서 이벤트의 결과로 열리며, 팝업 윈도우를 연 윈도우 위에 열리고 그 윈도우가 닫혀도 팝업 윈도우는 닫히지 않습니다.
  팝업 윈도우는 페어런트 윈도우를 가질 수도 있고 갖지 않을 수도 있습니다.
  페어런트 윈도우가 최소화되면 팝업 윈도우는 숨겨지고, 페어런트 윈도우가 최대화되면 팝업 윈도우가 보입니다.(항상 페어런트 윈도우 앞에 열립니다)
  팝업 윈도우가 페어런트 윈도우가 없으면 독립적이고 팝업 윈도우를 연 윈도우에 가려질 수 있습니다.(뒤쪽으로 열릴 수 있습니다.)
  팝업 윈도우를 최소화하면 아이콘이 팝업 윈도우를 연 윈도우(페어런트 윈도우이든 아니든) 밖에 디스플레이 됩니다.

Position Pointer(포지션 포인터)
- 디스크 파일 상에서 다음 기록할 위치를 나타냅니다.
  매번 읽기, 쓰기 후에 자동적으로 이동됩니다.

PowerBar(파워바)
- 파워빌더에서 가장 기본이 되는 툴바로 파워빌더가 기동되면 화면 상단에 메뉴바 밑에 디스플레이됩니다.
  파워바를 통해서 각 페인터를 열 수 있고 도움말을 볼 수 있으며 작성 중인 어플리케이션을 디버깅 또는 실행할 수 있습니다.

PowerBuilder Window Plug-in(파워빌더 윈도우 플러그-인)
- 웹 브라우저에서 파워빌더 차일드 윈도우를 보여주는 기능으로 이 윈도우는 모든 컨트롤을 가질 수 있고 다른 윈도우를 부를수도 있습니다.

PowerObject(파워오브젝트)
- 파워빌더의 모든 시스템 오브젝트가 계승 받는 베이스 클래스입니다.

PowerPanel(파워패널)
- 리스판스 윈도우로 각 페인터를 열 수 있는 아이콘들을 제공합니다.
  파워패널은 조정할 수 없기 때문에 모든 페인터에 대한 아이콘들을 가지고 있습니다.
  주로 파워바를 사용해서 페인터를 열지만 파워바에 아이콘으로 등록되어 있지 않은 페인터를 열기 위해서는 파워패널을 사용하면 편리합니다.

PowerScript(파워스크립트)
- 파워빌더 언어를 지칭하며 파워스크립트는 고급 객체 지향 언어로서 파워빌더 환경을 위해 개발된 언어입니다.





Posted by SITD
, |
1. 배열(Array)처리 함수  
LowerBound : 지정한 배열의 하위 경계
UpperBound : 지정한 배열의 상위 경계

2. Bolb관련 함수  
Blob        : 텍스트 데이터를 Blob 데이터로 변환 또는 복사
BlobEdit   : PB가 지원하는 데이터를 Blob변수로 복사
BlobMid   : Blob 데이터 문자열에서 N번째 문자를 반환 
Len         : 문자열의 길이

3. 데이터형 검사 및 변환 함수  
Char         : blob,정수,문자열을 문자로 바꿔서 반환
Dec          : 문자열의 내용을 십진수로 바꿔서 반환
Double      : 문자열의 내용을 Double로 바꿔서 반환
Integer      : 문자열의 내용을 정수로 바꿔서 반환
Long         : 문자열의 내용을 long으로 바꿔서 반환
Real          : 문자열의 내용을 실수로 바꿔서 반환
Date          : 데이터베이스로부터 읽은 DateTime값에서 Date부분만 빼온다.
DateTime   : Date나 Time을 DateTime 값으로 변환한다.
IsDate       : 지정한 문자열이 유효한 Date값을 지녔는지 검사한다.   
IsNull        : 넘어온 인자가 NULL인지 검사한다.
IsNumber   : 지정한 문자열이 숫자값을 지녔는지 검사한다.
IsTime       : 지정한 문자열이 유효한 Time값을 지녔는지 검사한다.
String        : 지정한 형식으로 문자열을 얻는다.
Time          : 데이터베이스로부터 읽은 DateTime값에서 Time부분만 빼온다.

4. 날짜,요일,시간 처리 함수  
Day             : 일자를 구한다(1에서 31 사이의 정수)
DayName     : 주간의 요일명을 구한다.
DayNumber  : 주간의 요일을 숫자로 표현한다.(예를들면 일요일은1, 목요일은 5)
DaysAfter     : 지정한 날짜에 n일전,후를 구한다.
Hour            : 주어진 시간의 시 값을 구한다.
Minute         : 주어진 시간의 분 값을 구한다.
Month          : 주어진 날짜의 월 값을 구한다.(1에서 12까지)
Now             : 클라이언트의 시스템 시간을 구한다.
RelativeDate  :주어진 날짜를 기준으로 n일 후 날짜를 구한다.
RelativeTime  :주어진 시간을 기준으로 n초 후 시간을 구한다.
Second         : 주어진 시간의 초 값을 구한다.
Today           : 클라이언트의 현재 날짜를 구한다.
Year             : 주어진 날짜의 년 값을 구한다.(1000에서 3000년까지임)

5.DDE클라이언트 함수  
CloseChannel        :OpenChannel함수로 열린 DDE서버 어플리케이션의 채널을 닫는다.
ExecRemote           : 서버 어플리케이션에게 명령 실행을 요구한다.
GetDataDDE           : 연결된 서버 어플리케이션으로부터 새로운 데이터를 받아온다.
GetDataDDEOrigin   : 연결된 서버 어플리케이션으로부터 원래의 데이터를 받아온다.
GetRemote             : 서버 어플리케이션에게 데이터를 요구한다.
OpenChannel         : DDE서버 어플리케이션을 연다.
RespondRemote      : 서버에게 명령 또는 데이터가 클라이언트에게 받아들여졌는지를 알려준다.
SetRemote              : 서버 어플리케이션에게 지정한 값을 설정하도록 한다.
StartHotLink            : 서버 어플리케이션과의 연결을 시작한다.
StopHotLink            : 서버 어플리케이션과의 연결을 종료한다.

6. DDE서버 함수  
GetCommandDDE          : 클라이언트 어플리케이션이 보낸 명령을 구한다.
GetCommandDDEOrigin  : 어떤 클라이언트 어플리케이션이 명령을 보냈는지 구한다.
GetDataDDE                  : 클라이언트 어플리케이션이 보낸 데이터를 구한다.
GetDataDDEOrigin          : 어떤 클라이언트 어플리케이션이 데이터를 보냈는지 구한다.
RespondRemote            : 클라이언트에게 명령 또는 데이터가 서버에게 받아들여졌는지를 알려준다.
SetDataDDE                  : 클라이언트 어플리케이션에게 데이터를 보낸다.
StartServerDDE              : 파워빌더를 서버로 동작하게 한다.
StopServerDDE             : 파워빌더가 서버로 동작하는 것을 중지한다.

7. 파일처리 함수  
FileClose  : 파일 닫기
FileDelete  : 파일 삭제
FileExists  : 파일 존재 유/무
FileLength : 파일 길이
FileOpen   : 파일 열기
FileRead   : 파일 읽기
FileSeek   : 파일 내 위치 이동
FileWrite   : 파일에 쓰기
GetFileOpenName  : 파일 열기 공통 다이얼로그 열기
GetFileSaveName   :파일 저장 공통 다이얼로그 열기

8. 라이브러리 함수  
LibraryCreate    : 라이브러리 생성
LibraryDelete    : 라이브러리 삭제
LibrarDirectory  : pb라이브러리 파일의 모든 오브젝트의 리스트를 구한다.
LibraryExport    : 라이브러리 파일의 모든 오브젝트를 Export한다.
Library Import    : 지정한 라이브러리 파일에서 오브젝트를 Import한다.

9.MAPI함수  
mailAddress                : 메일 메세지에 주소를 주거나 주소 리스트를 보여준다.
mailDELETEMessage   : 메일 메시지를 지운다.
mailGetMessages        : 메지시 id를 얻어온다.
mailHandle                  : 내부 메일 시스템 핸들을 얻어온다.
mailLogOff                   : 메세징 시스템과의 세션을 끊는다.
mailLogOn                   : 메세징 시스템과의 세션을 시작한다.
mailReadMessage        : 메일 메시지를 읽는다.
mailRecipientDetails      : 지정된 수취인의 주소 정보를 보여준다.
mailResolveRecipient    : 불분명한 수취인 명을 결정한다.
mailSaveMessage        :사용자 수신함에 새로운 메시지를 생성하거나 기존에 있는 메시지를 대체한다.
mailSend                     : 메일 메시지를 보낸다.

10. 수치 처리 함수  
Abs            : 수치의 절대값을 얻는다.
Ceiling        : 지정한 수보다 크거나 같은 최소 정수를 구한다.
Cos            : 주어진 각도의 코사인 값을 구한다.
Exp             : e를 Number만큼 거듭제곱한 값을 구한다.(e=2.71828182845904)
Fact            : 계승값을 구한다. Number의 계승값은 1*2*3*...* Number이다.
Int               : 소수점 이하를 버리고 가장 가까운 정수로 변환한다.
Log             : 지정 숫자의 자연로그값을 구한다.
LogTen        : 지정한 숫자에 대해 밑이 10인 로그값을 구한다.
Max            : 두 수 중 큰 수를 구한다.
Min             : 두 수 중 작은 수를 구한다.
Mod            : 두 수를 나눈 나머지를 구한다.
Pi               : 3.14159265358979를 구한다.
Rand          : 난수를 구한다.
Randomize  : 난수 발생기를 초기화한다.
Round        : 숫자를 지정한 자릿수로 반올림한다.
Sign           : 숫자의 부호를 결정한다. Number가 양수이면 1을 표시해주고 0이면 0, 음수이면 -1을 표시한다.
Sin             : 주어진 각도의 사인 값을 구한다.
Sqrt            : 양의 제곱근을 구한다.
Tan            : 주어진 각도의 탄젠트 값을 구한다.
Truncate     : 숫자의 소수점 이하를 버리고 정수로 변환한다.


11. 출력(Print)함수  
Print                 : 현재 글꼴로 문자열을 인쇄한다.
PrintBitmap        : 지정한 인쇄공간에 비트맵 이미지를 인쇄한다.
PrintCancel       : 인쇄를 취소한다.
PrintClose         : 현재 페이지를 프린터에 보내고 인쇄를 멈춘다.
PrintDefineFont  : 인쇄작업시 폰트를 정의한다. 파워빌더는 각각의 인쇄 작업에 대해 8가지 폰트를 제공한다.
PrintLine           : 지정한 위치에 지정한 굵기로 타원을 그린다.
PrintOpen         : 현재 페이지를 프린터에 보내고 새로운 페이지를 셋한다.
PrintOval          : 지정한 위치에 지정한 굵기로 타원을 그린다.
PrintPage         : 지정한 위치에 지정한 굵기로 둥근 모서리의 사각형을 그린다.
PrintRect          : 지정한 위치에 지정한 굵기로 사각형을 그린다.
PrintRouneRect : 지정한 위치에 지정한 굵기로 둥근 모서리의 사각형을 그린다.
PrintSend         : 지정한 문자열을 프린터에게 보낸다.
PrintSetFont      : 현재 인쇄 작업에 대한 글꼴을 지정한다.
PrintSetSpacing: 라인간 너비를 지정한다.
PrintSetup        : 프린터 설정 다이얼로그 박스를 부른다.
PrintText          : 지정한 위치에 지정한 문자를 인쇄한다.
PrintWidth         : 현재 글꼴에서 지정된 문자열의 너비를 구한다.
PrintX              : 커서의 X좌표를 구한다.
PtintY              : 커서의 Y좌표를 구한다.



12. 문자열 처리 함수  
Asc         : 문자열의 첫번째 문자의 ASCII값을 구한다.
Char        : 주어진 ASCII값에 해당하는 문자를 구한다.
Fill           : 지정한 문자를 반복시켜서 문자열을 만든다.
Left          : 문자열의 시작부터 지정한 수의 문자를 읽어온다.
LeftTrim    : 문자열의 시작에 있는 공백을 없앤다.
Len         : 문자열의 길이를 구한다.
Lower      : 주어진 문자열 내의 대문자를 소문자로 고친다.
Mid         : 주어진 문자열에서 시작 위치와 끝 위치를 지정해 문자열의 일정 부분만을 구한다.
Pos         : 다른 문자열에서 주어진 문자열의 위치를 찾는다.
Replace   : 문자열의 일부를 다른 문자열로 바꾼다.
Right        : 문자열의 끝에서 주어진 수의 문자를 얻어온다.
RightTrim  : 문자열의 끝에 있는 공백을 없앤다.
Space      : 지정한 길이로 공백 문자열을 얻는다.
Trim         : 문자열의 시작과 끝의 공백을 없앤다.
Upper      : 지정한 문자열 내의 소문자를 대문자로 고친다.



13. 시스템 및 환경 함수(System and Environment)  
Clipboard          : 윈도우의 클립보드의 내용을 얻는다.
GetApplication   : 현재 어플리케이션의 핸들을 구한다.
CommandParm   : 어플리케이션 실행시 지정된 파라미터가 있을 경우 그값을 구한다.
DoScript            : 애플 스크립트(AppleScript)를 실행한다.(매킨토시 버전에만 해당)
GetEnvironment  :시스템의 운영체제와 프로세서 등과 같은 정보를 얻는다.
Handle              : Window SDK함수를 부르기 위해 사용한다.
Post                 : 지정한 윈도우에 대한 메시지를 메시지 큐에 마지막에 삽입한다.
ProfileInt           : 지정한 프로파일에서 숫자값을 얻어온다.
ProgileString     : 지정한 프로파일에서 문자열을 얻어온다.
Restart             : 모든 스크립트의 실행을 중지하고, 모든 윈도우를 닫으며 데이터베이스에 
 
                        Commit한후 연결을 끊고 다시 어플리케이션을 실행시킨다.
Run                 : 지정한 어플리케이션을 실행시킨다.
Send               : 지정한 윈도우에 메시지를 순차적으로 보낸다.
SetProfileString : 지정한 프로파일 값을 저장한다. 
ShowHelp        : 윈도우 3.x에 있는 도움말(Help)파일을 읽어 파워빌더 어플리케이션에서 사용할 수 있다.
SignalError       : 어플리케이션 레벨에서의 시스템 에러를 발생한다.
Yield               : 반복문 안에서 다른 오브젝트나 어플리케이션의 메시지가 발생됐는지를 체크할수 있게 한다.



14. 시간처리 함수  
CPU        : 현재 실행중인 PB어플리케이션 프로그램의 시작 시간부터 현재까지의 CPU시간을 구해준다.
Idle         : 사용자가 아무런 입력이 없이 지정한 시간이 흐르면 Idle이벤트 발생시킨다.
Timer      : 지정한 윈도우에 일정한 간격의 타이머를 지정하여 Timer이벤트를 발생시킨다.



15. 그밖의 함수  
Beep               : 정해진 시간(초단위)동안 경고음을 발생한다.
DBHandle        : DBMS의 핸들을 반환한다.
IsValid            : 지정한 윈도우가 열려있는지 검사한다.
KeyDown         : 사용자가 특정한 키를 눌렀는가 검사한다.
MessageBox   : 메시지 박스를 출력한다.
PixelsToUnits   : 픽셀(Pixel)을 PB의 Unit로 바꾼다.
RGB               : 특정 색상을 표현하는 Long형 값을 반환한다.
SetNull            : 변수의 유형에 상관없이 변수를 Null로 지정한다.
SetPointer       : 마우스 포인터를 지정한 모양으로 바꾼다.
TypeOf           : 오브젝트의 형을 결정한다. 예를들면 CheckBox, Picture, RadioButton 등이다.
UnitsToPixels  : PB의 Unit를 픽셀(Pixel)로 바꾼다.


1. UpperBound(배열명,{배열차원}) : 가끔 사용 
   (1) 개념 : 배열의 가장높은 경계값을 알아낸다. 
                 Option으로 배열의 차원을 지정할 수 있으며 Default 차원은 1차원이다. 
   (2) Return : integer(배열의 가장높은 경계값) 
   (3) 예제 
       가) 
       integer li_number[7] , li_return 
       li_return = UpperBound(li_number) // li_return 은 7이 된다. 
       나) 
       string ls_name[5,6] integer li_return 
       li_return = UpperBound(ls_name,1) // li_return 은 5가 된다 
       li_return = UpperBound(ls_name,2) // li_return 은 6이 된다 

   (4) 메모 : 가변길이 선언 배열에서 ( ls_text[] ) 
                 위의 함수를 사용하여 0이 Return되면 배열이 아직 현 메모리에 적재되지 않았음을 의미한다. 
   (5) 상대함수 : LowerBound() 


2. IsDate(string) : 자주 사용 
   (1) 개념 : 특정한 String이 정확한 Date인지를 확인한다. 
   (2) Return : Boolean ( Date가 맞으면 True 아니면 False이다. ) 
   (3) 예제 boolean lb_check 
       lb_check = IsDate("1996/05/22") // lb_check 는 True이다 
       lb_check = IsDate("1996/00/22") // lb_check 는 False 이다 

   (4) 메모 : 특정한 String등을 Date로 변환시키기 직전에 많이 사용한다. 
   (5) 유사함수 : Isnull() , Isnumber() , Istime() , Isvalid() 


3. Date(datetime) , : 자주사용 Date(string) , Date(year,month,day) 
   (1) 개념 : datetime , string , 년월일의 integer값을 Date 변수타입으로 변환한다 
   (2) Return : Date ( Valid 한 Date가 아닐때는 1900-01-01을 Return한다 ) 
   (3) 예제
       datetime ldt_this date ld_new 
       ld_new = Date(ldt_this) 
       IF ld_new = Date("1900-01-01") THEN 
          Messagebox("ERROR",'정확한 일자가 아닙니다 !!') 
          return 
       END IF 
       ld_new = Date("1996/08/15") ld_new = Date(1999,11,23) 

   (4) 유사함수 : DateTime() 


4. Control명.ClassName() : 가끔사용 ClassName(변수명) 
   (1) 개념 : 특정한 Object의 Class명을 String으로 알아낸다. 
   (2) Return : String ( Error 발생시에는 empty string "" 이 반환된다) 
   (3) 예제 
       가)
       string ls_name 
       ls_name = Parent.ClassName() 
       IF ls_name = "w_insa001u" THEN 
          sle_1.text = ls_name 
       END IF 

       // 어떤 Object의 Dragdrop Event 에서 
       string ls_name
       dragobject ldr_what 
       ldr_what = DraggedObject()
       ls_name = ldr_what.ClassName() 
       IF ls_name = 'em_delete' THEN 
          ldr_what.Drag(end!) Messagebox("Drag Object",'Drag된 Object 는 '& + ls_name + '입니다') 
       END IF 

       나) 
       long ll_qty
       string ls_class 
       ls_class = ClassName(ll_qty) // ls_class 는 'long' 을 받아온다 
       ls_class = ClassName(this) // ls_class 는 현 Object 의 Class 명칭을 받아온다 

5. Object명.PostEvent(event명) : 자주사용 
   (1) 개념 : Script가 쓰여진 현 Event가 끝난뒤 특정 Object의 Event를 수행하게 한다. 
                 위의 function은 script가 쓰여진 위치에 관계없음으로 그 이후에 어떤 scrip가 있다면 
                 그것을 모두 수행한후에 실행된다. 

   (2) Return : Boolean (성공하면 true , event가 없거나 script가 없으면 false) 

   (3) 예제 
       cb_close.PostEvent(clicked!) // object에 기본적으로 있는 event일때 
       cb_close.PostEvent("ue_keydown") // User가 정의한 event일때 

6. Object명.TriggerEvent(event명) : 매우 자주사용 
   (1) 개념 : 현 Event에서 어떤 특정Object의 특정Event를 즉각적 수행하고 돌아온다. 
                 Script가 쓰여진 위치가 중요하다 

   (2) Return : Boolean (성공하면 true , event가 없거나 script가 없으면 false) 

   (3) 예제 
       cb_check.TriggerEvent(clicked!) // object에 기본적으로 있는 event일때 
       cb_check.TriggerEvent("ue_check") // User가 정의한 event일때 

   (4) 메모 : 어떤 Event의 Script를 수행한다는 면에서는 Postevent와 Triggerevent는 동일하며 
                 두 이벤트 중 어떤것을 써야할지의 선택기준은,
                 * 현재의 Event가 수행되고 난뒤 
어떤 Event를 이어서 수행시키느냐 (Postevent) ,
                 * 즉각적으로 어떤 Event를 
수행하느냐 (Triggerevent)
                 의 차이이다. 



'3.PROGRAMMING > Power Builder' 카테고리의 다른 글

[PB] 핵심정리  (0) 2011.08.05
[PB]용어정리  (0) 2011.07.20
[PB]매뉴얼 (01) 파워빌더의 환경  (0) 2011.07.19
[PB]매뉴얼 (02) Application 객체  (0) 2011.07.19
[PB]매뉴얼 (03) 데이터 베이스 만지기  (0) 2011.07.19
Posted by SITD
, |
# 개요
파워빌더는 그래픽 응용 개발 환경이다. 파워빌더를 사용해서 서버 데이터베이스에 접근하는 강력한 그래픽 응용들을 개발 할 수 있다. 파워빌더는 주문입력, 회계, 생산관리 시스템 등과 같은 응용들을 개발하는데 필요한 모든 도구들을 제공한다.
 
# 어플리케이션의 구성
파워빌더 어플리케이션들은 윈도우들로 구성되며, 윈도는 컨트롤들을 포함하고 있다. 
파워빌더에서는 버튼, 체크상자, 드롭다운 리스트상자 등과 같은 표준 컨트롤들 외에도 파워빌더만의 독특한 컨트롤들을 사용할 수 있다. 

# 페인터 
개발자는 페인터들을 사용해서 어플리케이션의 구성요소인 객체들을 만든다. 각 페인터는 한가지 종류의 객체를 만드는데 사용된다. 예를 들어, Window페인터에서는 윈도우를 만든다. 거기서 윈도의 속성들을 정의하고, 윈도에 버튼들과 컨트롤들을 추가한다.

# 이벤트와 스크립트
파워빌더는 이벤트 구동방식이다. 이벤트 구동방식이란 사용자의 어떤 행동들에 따라 프로그램의 흐름이 제어되는 방식이다. 즉 마우스를 움직인다던가 클릭을 한다던지 메뉴를 선택하는 행동하나 하나가 모두 이벤트의 발생이며 개발자는 이런 사용자의 이벤트에 대응하는 스크립트를 작성함으로써 프로그램을 제어할 수 있다.

그리고 반대로 스크립트로 이벤트를 기동시킬 수도 있다. 예를 들어 버튼이 Clicked 이벤트에 윈도우를 여는 스크립트를 작성하면 사용자가 클릭할 때 윈도우가 열리면서 윈도우의 Open 이벤트가 기동되는 것이다. 

페인트 또는 도구

용도

Application 페인터

어플리케이션에 관한 정보(이름, 객체들을 저장할 PBL파일 등) 명세

Project 페인터

어플리케이션에 포함될 구성요소들을 명세해서 실행파일을 생성

Window 페인터

어플리케이션에서 사용할 윈도 만들기

UserObject 페인터

윈도에서 반복사용할 사용자객체 만들기

Menu 페인터

윈도에서 사용할 메뉴 만들기

Structure 페인터

어플리케이션에서 사용할 구조체 만들기

Function 페인터

사용자정의 함수 만들기

Query 페인터

Data Window 객체와 리포트에서 재사용할 SQL 문장을 그래픽하게 정의하고 저장하기

Data Pipeline

한 데이터 소스에서 다른 데이터 소스로 데이터를 이동

Configure ODBC

ODBC를 사용하는 데이터 소스 정의

Database Profiles

특정한 데이터베이스에 연결하기 위한 파라메터들을 정의하고 이름 부여

Table 페인터

테이블생성 및 변경과 키, 인덱스 정의, 테이블 사이의 관계정의

Database 페인터

데이터베이스유지, 사용자 접근 제어와 데이터베이스의 데이터 조작

Browser 페인터

시스템 객체와 개발자가 정의한 객체들에 관한 정보(속성, 이벤트, 함수, 전역변수 등)를 보여주거나 복사, 익스포트, 인쇄 기능

Library 페인터

PBL 파일을 만들고 유지

File Edit 페인터

소스와 초기화파일 같은 텍스트 파일 편집

Run Window페인터

특정한 하나의 윈도우 실행

Run 페인터

사용자가 실행하는 것과 똑같이 현재 응용 실행

Debug 페인터

중단점과 감시창을 설정하여 어플리케이션을 실행하면서 변수 등을 검사해서 에러 찾기

Data Window 페인터

데이스베이스의 내용을 사용자와의 인터페이스를 통해 제어할 수 있는 데이터 윈도우를 제작

Exit

현재의 윈도우를 종료



# Custom Button 추가 
- 툴바에 사용자 정의 버튼을 추가하는 방법 
1. 커스텀 버턴을 추가하려는 툴바(파워바)위에서 오른쪽 클릭하여 팝업메뉴를 띄우고 Customize를 선택한다.

2. 대화상자가 뜨면 Custom 라디오 버튼을 체크하고 Selected palette 부분에서 원하는 아이콘을 드래크하여 Current toolbar 영역으로 옮긴다. 

3. 대화상자가 뜨는데 각 항목을 기입한후 OK 한다. 

      Commnad Line - 형식: @MenuBarItem.MenuItem
       예) @File.Open - file 메뉴의 Open을 실행함 
# Custom Button의 수정
Current toolbar에 있는 아이콘을 더블클릭한후 동일하게 함

















'3.PROGRAMMING > Power Builder' 카테고리의 다른 글

[PB]용어정리  (0) 2011.07.20
[PB]파워빌더 함수 정리  (0) 2011.07.19
[PB]매뉴얼 (02) Application 객체  (0) 2011.07.19
[PB]매뉴얼 (03) 데이터 베이스 만지기  (0) 2011.07.19
[PB]매뉴얼 (04) 윈도우  (0) 2011.07.19
Posted by SITD
, |
1. Application Object
#개요 
파워빌더는 동시에 여러개의 어플리케이션에 대해 작업할 수는 없다. 
어플리케이션이란 서로 관계있는 작업들을 수행하는 파워빌더 윈도우들의 집합으로 개발자가 사용자에게 배포하는 것이다. 
어플리케이션 객체란 응용으로 들어가는 시작점이며 Window객체, Menu객체, DataWindow 객체 등처럼 별개의 객체로 PBL 파일에 저장된다. 
어플리케이션 객체는 사용될 폰트, PBL파일의 관리, 시작과 종료시의 처리 등을 포함하고 있다. 

#Application 객체 만들기 
개발자가 제일 처음 해야 할일이 어플리케이션 객체를 만드는 일이다. 
1) Application 페인터에서 File>New>Select New Application Library 대화상자가 디스플래이 된다. 
2) Application 객체를 저장할 PBL 선택 또는 입력하고, '저장' 한다. 그러면 Save Application 대화상자가 디스플래     이 된다.
        Application - 응용의 이름을 적는다. (PBL파일과 다를 수 있음)
        Comments - 주석입력 
3) Application 객체 이름과 주석을 입력하고 OK 버튼 클릭 
4) 그림2.2 의 창이 뜨는데 '예'를 선택하면 MDI 프레임으로 '아니오'를 선택하면 SDI프레임으로 어플리케이션이 생       성된다. 
MDI - 기본적인 메인 프레임이 존재하고 그 안에 귀속되어 여러 메뉴나 윈도우를 포함하는 형식으로 일반적으로 우            리가 대하는 프로그램 틀 형식이다.(파워빌더 자체가 MDI형식이다.)
SDI - 윈도우 하나가 단독으로 실행되는 형식이다. 윈도우의 계산기나 메모장이 그 예이다.

# Application의 속성 
1) 메뉴 Entry>Property 또는 어플리케이션 아이콘에 오른쪽 마우스클릭, 팝업메뉴에서 선택 
2) 어플리케이션 전반에 해당되는 사항들을 설정하는 곳이다. 

용 도

Text Font

윈도우, 사용자객체, DataWindow 객체 내의 정적 텍스트의 디폴트 폰트

Column Font

DataWindow 객체 내로 검색된 데이터의 디폴트폰트

Header Font

DataWindow 객체의 디폴트 헤드 폰트

Label Font

DataWindow 객체의 디폴트 라벨 폰트

Icon

창의 제목표시줄 앞에 사용될 프로그램 아이콘 지정

Variable Types

디폴트 전역 객체들

Libraries

PBL파일의 탐색 경로(여기에 등록하면 여러 개의 PBL파일을 하나의 어플리케이션으로
사용할 수있다)



# Application 스크립트 
1) 메뉴 Entry>Script를 선택하면 스크립트 입력 창이 뜬다. 
   창 왼쪽 위를 보면 Select Event라는 드롭다운리스트박스가 있는데 어플리케이션 객체가 가질 수 있는 이벤트가      표시된다. 
* 다음은 Application 객체가 가지는 이벤트들이다.

이벤트

발생시기

Open

사용자가 프로그램을 시작할 때(데이터베이스와의 연결등에 관한 스크립트를 기술함)

Close

사용자가 프로그램을 종료할 때(데이터베이스와 연결 종료 스크립트)

SystemError

실행중에 치명적 에러가 발생 했을때

ConnectionBegin

분산 컴퓨팅 환경에서 클라이언트가 서버에 연결할 때

ConnectionEnd

분산 컴퓨팅 환경에서 클라이언트가 서버와의 접속을 종료할 때

Idle

마우스나 키입력없이 일정 시간이 경과했을 때



2) 어플리케이션이 실행될 때 제일 먼저 실행되는 것이 어플리케이션 객체 스크립트이다. 이 이벤트를 선택하고 본문에 거기에 합당한 스크립트를 기술한다. 이것은 어플리케이션
객체뿐만 아니라 파워빌더 전체의 모든 객체들에 공통으로 적용되는 방식이다. 

# Transaction Object
1) Transaction Object란?
    트랜젝션 Object란 데이터베이스와 스크립트 사이에 존재하는 커뮤니케이션 영역이다.
    파워빌더는 데이터베이스와 스크립트 사이에 대화를 위해 이것을 사용한다. 
    즉 특정 데이터베이스와 연결 작업을 해주는 역할은 파워빌더가 사용하는 Default transaction Object인                   SQLCA(SQL Communication Area)를 사용할 수 있다.

2) Transaction Object의 Attribute는 다음이다.

Database

Data Type

설명

DataBase

String

연결하고자하는 데이터베이스 이름

UserID

String

데이터베이스에 연결할 유저 ID 또는 이름

DB Parm

String

DBMS 명시

DB Pass

String

데이터베이스에 연결할 유저의 Password

Log CK

String

The Isolation Level

Log ID

String

서버에 Log On 하기 위한 유저의 이름 또는 ID

Log Pass

String

서버에 Log On 하기 위한 유저의 password

Server Name

String

데이터베이스가 존재하는 서버의 이름

Auto Commit

String

Auto Commit 여부(True/False)



3) 파워빌드 실행파일이 있는 폴더에 보면 pb.ini라는 환경파일이 있다.  파워빌더에서 사용하는 모든 어플리케이션       에 대한 정보가 기록되어있다.  편집기로 살펴보면 아래와 같이 Attribute들이 할당된 것을 알 수가 있다. 

DBMS=ODBC
Database=
User ID=
Database Password=
Log Password=
ServeName=
LogID=
Lock=
DBParm=Connectstring='DSN=example'
Prompt=0

(위 내용은 여러분의 것과는 다를 수 있습니다.)

4) 그리고 여러분은 자신만의 ini 파일을 만들 수도 있습니다. 편집기로 위와 같은 Attribute들을 정의하고 확장자를 ini로 해주면 되죠. 그리고 어플리케이션의 open 이벤트에서 ProFileString 함수를 이용해 Transaction Object의 Attribute 값을 가져오도록 스크립트를 기술하면 됩니다.

ProfileString(Parm1, Parm2, Parm3, Parm4)
Parm1: ini파일 이름
Parm2: Section 이름
Parm3: Key 이름
Parm4: Default

예) SQLCA.dbpass = ProfileString("ex.ini", "database", "dbpass", "")

- 이 말은 지금 어플리케이션의 dbpass는 ex.ini파일의 [database]섹션을 찾아 dbpass에 할당된 값을 읽어오라는   소리입니다.

5) 이렇게 기술한 뒤에 다음과 같이 스크립트를 추가해 데이터베이스와 연결해 준다. 

   Connect Using SQLCA;
   (이 문장을 빠뜨리면 데이터베이스와 연결이 되지 않습니다.)
   그 후에 최초로 열 윈도우의 이름을 지정한다.
   Open(윈도우명)
   - 기본적으로 SQL문 명령어 뒤에는 세미콜론(;)으로 끝을 낸다.


























Posted by SITD
, |
이 장에는 파워빌더에서 데이터 페인터를 사용하고 테이블을 생성하고 관리하는 내용들에 관해 다룰 것입니다. 테이블 설계방법이나 데이터 모델링은 메뉴에서 '데이터모델링' 부분을 참고하십시오

# 데이터베이스 연결의 이해
   파워빌더는 데이터베이스연결을 위한 두가지 방식을 지원한다. 

* ODBC Driver
* Native Database Driver(Non-ODBC)

ODBC란? - 마이크로소프트사에 의해 개발된 표준 API(Application Programming Interface)로써, 어프리케이션이                   ODBC-Complient Driver가 존재 할 경우 Data Source를 접근 할 수 있게 해준다. 

ODBC Driver - ODBC를 사용해서 데이터베이스를 연결하려면 2가지 요소가 필요하다.
* Data Source에 대한 ODBC Driver
* 파워빌더의 ODBC와 인터페이스를 담당하는 pbodb60.dll

Native Database Driver(Non-ODBC)연결을 위한 요소
* Database에 대한 네트워크상의 SQL처리를 위한 모듈
* 파워빌더 Database Interface

# 데이터베이스 페인터
1. 새로운 어플리케이션을 생성했다면 이제 데이터베이스 아이콘을 클릭해본다.
   기본적으로 앞에 열었던 데이터베이스가 열릴 것이다. 각 항목을 클릭한 후 Open하면 테이블들을 그래픽 적으로      보여준다. 그리고 New를 선택하면 새로운 테이블을 추가할 수 있도록 해준다. 그럼 여기서 새로운 어플리케이션      에 사용할 새 페디터베이스를 작성해 보겠습니다. 여기서는 ODBC를 사용해서 데이터베이스 연결을 하겠습니다.      그리고 데이터베이스는 파워빌더에서 제공하는 SQL AnyWhere을 이용합니다.
   Cancel버튼을 눌러 닫고 File>Create Database 를 선택한다.

   데이터베이스 이름을 정해주고 OK를 클릭한다. 기본 지정되는 아이디와 암호는 DBA, sql 이다. 
   이번에는 테이블이 하나도 없는 깨끗한 상태일 것이다. 여기서 New를 선택하여 새로운 테이들을 추가하면 된다.

# 데이터 베이스 관리
- 데이터베이스는 데이터를 저장하기 위한 전자 저장 장소이다. 데이터베이스는 데이터가 일관성을 유지할 수 있도     록 설계되었으며, 사용자는 데이터베이스에 접근, 수정, 공유할 수 있다.

& 키
관계형 데이터베이스는 무결성을 보증하기 위해 키를 사용한다.

& 기본키
테이블에서 각 행을 유일하게 구분하는 하나 이상의 컬럼들이다. 예를 들어 두 사람의 이름은 같을 수 있지만 ID 번호는 유일한 것이다. 이 ID가 기본키(주요키)가 된다.

& 외래키 
다른 테이블의 기본키를 포함하는 하나 이상의 컬럼들이다.

& 인덱스
인덱스로 정의된 데이터를 검색할 때 데이터베이스 성능을 향상 시키기 위한 하나 이상의 컬럼들이다. 자주 사용하게되는 컬럼을 인덱스로 명세한다. 

& 뷰 
같은 테이블들과 컬럼들로부터 자주 데이터를 선택한다면, 뷰를 생성할 수 있다. 뷰에 이름을 붙여서, 이 뷰는 참조할 때 마다 관련된 SELECT문을 실행한다. 뷰는 물리적으로 존재하는 것이 아니라 뷰의 정의만 데이터베이스에 저장되고 사용될 때마다 다시 생성된다. 

# 테이블 속성 수정
Database 페인터에서 Table Property 버튼클릭 또는 해당 테이블에서 오른쪽클릭 후 선택.
그러면 테이블 속성창이 뜨는데 필요한 부분을 조정한다.

설정

General

테이블에 대한 주석

Data Font

Data Manipulation 페인에서 데이터에 사용할 폰트

Heading Font

Data Manipulation 페인에서 헤더에 사용할 폰트

Label Font

Data Manipulation 페인에서 라벨에 사용할 폰트

Primary Key

테이블의 주요키 설정



# 테이블닫기와 드롭
테이블을 닫으면 Database페인터(하얀 작업공간)에서 테이블을 제거하는 것이고 테이블 드롭은 데이터베이스에서 테이블을 완전히 삭제 하는 것이다. 

& 고립된 테이블 정보 삭제
   - 파워빌더 밖에서 테이블을 드롭하면 확장속성을 포함한 테이블에 대한 정보가 리포지토리에 남아있게된다. 이때      는 Design>Synchronize PB Attributes를 선택해 정보를 삭제해 준다.

# 뷰(View)
뷰를 사용하는 이유
* 자주 사용되는 SELECT문장에 이름을 붙이기 위해
* 테이블 내의 데이터 접근을 제한하기 위해
* 여러 테이블에서 얻는 정보에 쉽게 접근하기 위해 
뷰는 물리적으로 데이터베이스에 저장되지 않고 참조될때마다 연관된 Select문장이 실행된다.
또한 뷰는 수정할 수 없고, 삭제 후 다시 만들야 한다는 특징이 있다.

& 뷰만들기 
Object>New>View하고, [그림3.1]의 Select Table 창이 뜨면 필요한 테이블들을 선택한다.
그리고는 원하는 컬럼들을 클릭한 후 Return 버튼을 클릭하면 뷰이름을 입력하라고 한다.
이름을 정해주고 Create버튼을 누르면 뷰가 생성된다.

# 조인(Join)
* 뷰가 한 테이블 이상을 포함하면, 공통인 컬럼으로 테이블을 조인해야한다.
* View페인터가 열릴 때 한 테이블 이상을 포함하면, 파워빌더는 자동으로 조인해 준다.
  파워빌더에서 자동 조인의 기준은 다음이다.
  - 기본키/외래키 관계가 있는 컬럼
  - 키가 없으면 컬럼이름이나 데이터 타입으로 추정해서 조인한다.
* 테이블을 조인하려면, Join 버튼 또는 Design>Show>Join하고 그림에서 원하는 컬럼을 클릭한다.
           
&. 동등조인 이외의 조인을 선택하려면, 테이블사이에 있는 조인상자를 클릭하고 원하는 조인을 선택한다. 
 
# 데이터 조작(Data Manipulation)
& 사용목적
* 테스트를 목적으로 데이터를 보거나, 데이터를 입력
* 디스플래이 포맷, 검증규칙, 편집스타일의 테스트 

& Data Mainpulation 페인터 열기 
*  세 버튼중 하나를 선택 또는 Object>Edit Data

& 데이터 검색 
* Retrieve 버튼을 클릭하면 데이터베이스로 부터 데이터를 읽어서 갱신한다.

& 기존데이터수정
* 해당 컬럼에 새로운 값을 입력하면 됨 

& 데이터 소트와 필터링(sorting and filtering)
* Data Manipulation 페인터에서 정의된 소트 기준과 필터는 테스트를 위한 것이며 테이블에 저장되거나, Data           Window페인터에서는 적용되지 않는다. 

& 행소트 : Row>Sort 선택
* 소트할 컬럼을 왼쪽 창에서 드래그해서 오른쪽 창으로 옮긴다.
* 컬럼상자의 순서가 소트 순서이다.
* 취소하려면 컬럼상자의 컬럼을 드래그해서 상자 밖으로 옮긴다.
* Ascending 체크박스를 이용해 오름차순과 내림차순을 지정한다.

& 행 필터링: Row>Filter 선택
* Boolean조건이 true가 되는 행만 디스플래이
* 필터를 제거하려면 필터를 정의한 표현식을 없앤다.
* 데이터베이스를 갱신할 때, 필터된 행도 갱신된다.

& 외부 소스에서 데이타 가져오기(Importing data)
* Data Manipulation 페인터에서 Rows>Import하고 파일을 선택한다. Import된 데이터는 Update Database 버튼으   로 데이터베이스에 저장 할 수 있다.
* 파일의 내용은 SQL 문으로 보통 데이터를 insert 하기 위해 사용된다. 테이블 데이터가 잘못되었을 때 데이터 량이   많다면 일일이 다시 쳐 넣어야 하므로 미리 파일로 저장해놓고 있으면 간단히 import 시킬 수 있다.



Posted by SITD
, |
# 개요 
윈도우는 가장 기본적인 인터페이스 요소이다. 이 장에서는 윈도우의 종류와 속성, 상속, 이벤트 등에 대해 알아보도록 합니다.

# 윈도우 열기
 윈도우 페인트 버튼을 클릭한다.
 
기존의 작업하던 창을 열려면 목록에서 선택하고 OK 버튼을 누르면 되고 새로운 창을 만들기 위해서는 New 버튼을 누른다. New 버튼을 클릭하면 아무것도 없는 밋밋한 윈도우 하나가 만들어 지는데 여기에다 사용자가 원하는 모든 인터페이스를 설계하는 것이다.

# 상속(Inherit)
* Inherit 버튼을 클릭하면 상속받은 윈도우를 만들수 있다. 상속의 의미는 기존의 윈도우에 정의된 스타일이나 이벤      트, 함수, 스크립트, 컨트롤 등을 동일하게 가지는 윈도우를 만든다는 의미다. 예를 들어 사용하는 모든 윈도우에      공통으로 사용되는 스크립트가 있다던지 윈도의 색깔이나 폰트 크기를 일치시키는 경우, 또는 종료 버튼 같이 공통    적으로 사용되는 컨트롤이 있는 경우 일일히 똑같은 작업을 반복하는 것보다 미리 만들어진 윈도우에서 상속받아      사용하는 것이 훨씬 편할 것이다. 그러므로 상속은 일종의 복사라고도 볼수 있으며 문서편집기에서 사용하는 스타    일 기능과 유사하다고 볼수 있다. 
* 상속을 받았을때 원래의 윈도우를 조상윈도우, 상속받은 윈도우를 자식윈도우라 한다.
   여기서 주의 할 점은 조상윈도우를 변경하면 자식윈도우에서는 자동적으로 변경사항이 적용된다. 그리고 조상윈도    우가 삭제되면 자식윈도우는 사용할 수가 없으니 주의.
* 자식윈도우는 조상윈도우에 있던 컨트롤은 삭제 할 수가 없다. 다만 필요없는 컨트롤이라면 visible 속성을 이용해    보이지 않게 할 수 밖에 없다. 그리고 자식윈도우에서 다시 상속받는 다중상속도 가능하다. 

# 윈도우의 종류
1) 메인(Main) 윈도우 
    독립형 윈도우로 다른 윈도 위나 밑에 겹쳐질 수 있다. MDI 어플리케에션에서는 MDI 프레임이 메인 윈도우이다.
2) 자식(Child) 윈도우 
    팝업 윈도우나 메인윈도우를 부모로 해서 열리는 윈도우다. 부모윈도우에 완전히 종속되며 자신의 메뉴를 가질 수     없고 부모 윈도우의 영역을 벗어 날 수 없다.
3) 팝업(Pop-Up) 윈도우 
   팝업윈도우도 부모 윈도우와 연관은 되지만 팝업윈도우는 부모윈도우의 영역을 벗어날 수 있으며 팝업윈도우가 떠    있는 상태에서도 부모윈도우를 엑세스 할 수있다.
4) 응답(Respose) 윈도우
   계속 진행하기 위해서는 어떤 메시지에 반응을 해야만 하는 윈도우이다. 변경된 정보를 저장하기 않고 종료하려 할    때 이 응답윈도우를 사용함이 적합하다. 
5) MDI 프레임 
자식 윈도우를 포함 할 수 있는 부모 윈도우를 만드는 타입이다. MDI 프레임은 왼쪽 하단에 마이크로 헬프가 포함된 것과 그렇지 않은 두가지 타입이 있다. 

# 윈도우의 속성
새로 만들어진 윈도우 컨트롤에서 더블클릭을 하던지 오른쪽 클릭후 Property를 선택하면 속성창이 뜬다.
 
* General 탭 
Title : 윈도우의 이름을 쓴다.
Menu Name : 윈도우에 어떤 메뉴를 연결 할 것인지를 결정한다.
Visible : 윈도우를 화면에 보일 것인지의 여부 결정
Enabled : 윈도우의 활성화 여부 결정 
Border : 윈도우의 바깥 부분을 경계로 둘러쌀 것인지의 여부 결정
Title Bar : 윈도우의 제일 위에 있는 막대로 윈도우의 타이틀이 그 안에 존재한다.
Control Menu : 어플리케이션 아이콘을 포함하는 윈도우 좌측상단의 아이콘을 나타낼지의 여부 
Maxmize Box : 최대화 버튼을 사용할 것인가
Minimize Box : 최소화 버튼을 사용할 것인가
Resizable : 윈도우의 크기를 조정할 수 있을지의 결정
Window Type : 위에 설명한 윈도우의 종류중에서 선택 

* Position 탭 
포지션 탭에서는 윈도우의 위치나 크기를 좌표 값으로 정할 수 있고 초기 상태를 정할 수 있다. 

* Point 탭 
윈도우에서 마우스가 움직일때 포인터의 모양을 선택한다.

* Icon 탭 
윈도우의 좌상단에 나타날 아이콘을 선택한다.

* Scroll 탭
윈도우가 모니터 화면보다 큰 경우 윈도우의 스크롤 여부를 선택한다.

* ToolBar 탭 
윈도우의 툴바특성들을 지정한다. 

& 옵션 변경 
Design>Options 메뉴를 선택하면 윈도우의 Grid에 대한 옵션과 각 컨트롤 들에 대해 사용 될 접두어등을 정할 수 있다. 

& 윈도 저장 
File>Save 를 선택 이름은 아무거나 상관없지만 w_ 로 시작하여 의미를 두는 습관을 들이는 것이 편리하다. 

& 윈도 미리보기 
Preview 버튼이나 Design>Preview 를 선택한다. 미리보기 상태에서는 데이터베이스의 연결이나 이벤트 기동, 속성변경등은 안된다. 


Posted by SITD
, |
& 윈도우가 준비되었다면 이젠 사용자의 대화에 필요한 컨트롤들을 배치할 차례이다.
   컨트롤이란 우리가 윈도우 환경에서 익숙한 버튼이나 리스트박스, 라디오버튼, 체크박스 등을 말한다. 물론 파워빌    더는 4GL 언어이므로 이런 컨트롤들을 끌어다 윈도우에 배치시키는 것으로 개발자의 수고를 들어준다. 즉 우리는    만들어진 컨트롤들을 적절히 사용만 하면 되는 것이다. 여기에 스크립트를 추가해 생명력을 불어 넣어야 하지만 그    건 다음장에서 다루기로 하고 여기선 컨트롤에 대해 알아본다.

이벤트를 가지는 컨트롤

 

Button

사용자가 클릭하면 어떠한 동작을 하는 컨트롤

 

Picture Button

일반 버튼과 유사하나 버튼내에 지정된 그림을 나타나게 할 수 있다.

 

Single Line Edit

사용자가 직접 입력할 수 있도록 해주는 컨트롤

 

Multi Line Edit

여러 라인의 줄을 입력할 수 있도록 해주는 컨트롤

 

Edit Mask

사용자의 입력을 지정된 형태로 포맷하도록 마스크할 수 있는 컨트롤

 

RichText Edit

Windows에서 지원하는 모든 폰트, 크기, 색상등을
사용할 수 있는 컨트롤. 워드프로세서와 유사하다.

 

Group Box

사용자 인터페이스를 깔끔하게 하는데 사용된다.

 

Tab

많은 정보를 나타내는 화면에서 자주 사용된다.

 

Radio Button

일반적으로 옵션을 선택하기위해 자주 사용

 

Check Box

Yes/No, True/False의 관계를 확인하기 위해 사용됨

 

List Box

다수의 텍스트라인을 보여줄 수 있는 컨트롤로써 항목이 많으면 스크롤 바가 생성된다.

 

Picture List
Box

리스트박스와 동일하나 리스트의 항목옆에 그림을 포함하는 기능을 가진다.

 

Tree View

데이터를 계층적인 트리의 형식으로 보여줌

 

Drop Down
List Box

리스트박스와 같은 형식에 에디터 할 수 있는 기능이 있다.

 

Drop Down
Picture List Box

드롭다운리스트박스와 동일하고 그림을 포함할 수 있다.

 

List View

다양한 형태로 열거된 항목을 나타낼 수 있다. 윈도우즈의 탐색기 우측창과 같은 형식이라고 보면 된다.

 

HScrollBar

수평 스크롤 기능

 

VScrollBar

수직 스크롤 기능

 

Picture

비트맵 이나 RLE 파일을 보여주는데 쓰인다.

 

DataWidnow

데이터윈도우 오브젝트를 보여주기 위한 컨트롤

 

Ole

Excel, Visio Ole를 지원하는 프로그램에서 객체를 놓을 수 있다.

 

User Object

사용자가 임의로 컨트롤을 만들 수 있게 지원

 

Graph

데이터를 그래프의 형태로 보여줄수 있다.

이벤트가 없는 컨트롤


그리기 컨트롤

기능은 없고 화면구성을 정리하는데 도움을 준다.



* 탭순서 정의
Design>Tab Order : 
탭순서는 사용자가 탭키를 누를때 포커스가 이동하는 순서를 말한다. 그러므로 개발자는 탭순서를 올바르게 설정해야한다. 

* 가속키 정의
버튼등에 가속키를 정의하는 방법은 가속키로 사용할 문자앞에 & 를 붙히는 것이다. 그러면 Alt 키와 작용했을 때 해당 컨트롤에 포커스를 줄수 있다.
가속키로 지정되면 문자밑에 밑줄이 생긴다. (N)



















'3.PROGRAMMING > Power Builder' 카테고리의 다른 글

[PB]매뉴얼 (03) 데이터 베이스 만지기  (0) 2011.07.19
[PB]매뉴얼 (04) 윈도우  (0) 2011.07.19
[PB]매뉴얼 (06) 파워스크립트  (0) 2011.07.19
[PB]매뉴얼 (07) 함수  (0) 2011.07.19
[PB]매뉴얼 (08) 메뉴  (0) 2011.07.19
Posted by SITD
, |
# 파워스크립란?
파워빌더는 이벤트 구동 방식의 프로그램이다. 즉 어떤 이벤트가 발생하면 거기에 알맞은 반응을 한다는 것이다. 이 응답을 처리하는 것이 파워스크립트언어이다.

# 스크립트 작성방법
해당 컨트롤에서 우클릭후 Script를 선택 또는 스크립트 버튼을 클릭한다. 그러면 스크립트 페인트가 열린다. 
 
* 이벤트표시창에는 이 컨트롤이 가질수 있는 이벤트들이 표시되고 이벤트 옆에 그림이 표시된것은 이 이벤트에 스      크립트가 존재한다는 의미이다. 그리고 파워스크립트에서 주석 처리는 일반적인 언어와 마찬가지로
   한 라인을 선택할 때는 문장앞에 //을 써주면 되고 
   문단으로 처리할 때는 /* 내용 */ 이런식으로 해준다.
   파워빌더는 라인이나 문단을 블록으로 설정하고 주석버튼을 누르면 그 부분을 주석으로 달아주는 편리한 기능을      제공한다. 스크립트를 다 작성 했으면 나가기 버튼으로 컨트롤 편집 화면으로 돌아갈 수 있다. 
   만약 이때 에러가 있다면 스크립트 종료가 불가능하다. 그러므로 항상 스크립트 작성 후엔 컴파일 버튼을 눌러 에      러가 없는지 확인하도록 한다. 

* 컴파일 시 나타나는 에러에 대한 설명
Errors : 컴파일 할 수 없는 치명적 에러
Compiler Warnings: 현재 이벤트의 스크립트에서 벗어나기 전에 수정 필요.
                             선언되지 않은 변수 사용등 문법 에러시 발생
Obsolete : 컴파일은 가능하지만 신형 버전으로 대체 필요
Database Warnings: 데이터베이스 관리자로부터 오는 에러 (삽입 SQL을 사용하면, 컴파일할 때 데이터베이스 관리                              자에 연결된다.) 파워빌더는 Databse Warinings를 갖는 경우에도 컴파일하고 객체를 저장할                                수 있는데, 이것은 컴파일 할 때의 환경과 실행환경이 다를 수 있기 때문이다.


# 변수 선언
사용자로부터 입력된 자료나 프로그램 중 계산된 값, 데이터베이스에서 조회된 값등을 저장하는 기억 장소를 변수(Variable)라고 한다. 파워 스크립트에서 모든 변수는 사용전에 선언되어야만 한다. 변수의 종류는 다음의 종류가 있다.

1) 전역변수(Global Variable)
전역변수는 한 어플리케이션 전체에 걸쳐 적용되는 변수이다. 모든 스크립트에서 접근할 수가 있다. 즉 어플리케이션이 실행될때 메모리가 할당되고 종료될 때 제거된다. 
선언방법은 Declare>Global Variables..를 실행하고 선언

2) 공유변수(Shared Variable)
공유변수는 오브젝트와 연관된 변수이다. 모든 이벤트, 함수 , 컨트롤들이 접근할 수 가 있다. 또한 선언된 윈도우가 닫히더라도 메모리에서 제거되는 것이 아니라 어플리케이션이 종료될 때 까지 남아있으며 다시 그 윈도우가 열리면 바로 접근가능하다.
선언방법은 Declare>Shared Variables..

3) 인스턴스 변수(Instance Variable)
공유변수와 비슷하나 선언된 윈도우가 닫히면 메모리에서 제거된다는 특징이 있다. 
선언방법은 Declare>Instance Variables.. 

4) 지역변수 (Local Variable)
컨트롤이나 오브젝트의 스크립트에서 직접 정의되는 변수이다. 이것은 특정 이벤트나 함수내에서만 사용 될 수 있다. 

& 변수선언의 규칙
1) 반드시 문자로 시작해야한다.
2) 최대 40문자를 허용하나 공백은 없어야한다.
3) 대문자, 소문자를 구별하지 않는다.
4) 숫자, 문자와 특수문자($, #, %, _, -)의 조합이 가능하다.

& 변수의 초기화 
변수를 선언한 후에는 초기값을 할당해야 한다. 값이 할당되지 않으며 파워빌더에서 기본값이 할당되나 특정 초기치를 줄려면 다음과 같이 초기화를 한다. 

int a = 1
string text = "name"

* 주의점 - 변수를 선언함에 있어 동일한 이름의 변수는 사용을 자제한다. 전역변수로 선언한 변수가 동일한 이                  름으로 지역변수로으로 선언되어 있다면 파워빌더는 그 변수를 지역 변수로 간주한다. 
* 파워빌더의 변수 우선순위
   지역변수 > 인스턴스변수 > 전역변수> 공유변수 


& 데이터 타입 
파워빌더의 표준데이터 타입은 다음과 같다. 

데이터타입

설명

Boolean

True or False

Integer

부호있는 16bit 범위: -32768 ~ 32767

UnsignedInteger, Uint

부호없는 16bit 범위: 0 ~ 65535

Long

부호있는 32bit 범위: -2147483648 ~ 2147483647

UnsignedLong, Ulong

부호없는 32bit 범위: 0 ~ 4294967295

Decimal, Dec

부호가 있는 10진수로써 자리수는 18자리

Real

부호있는 6자리 실수 범위: 1.17E-38 ~ 3.4E+38

Double

부호있는 실수 자리수는 15자리

Date

년도 표시 예) 1990-01-01

Time

24시간 시간표시 예) 23:50:55:999999

DateTime

Date Time을 합친 형태

Blob

범위가 정해져 있지 않은 큰 자료형의 저장
) 그림, 방대한 문서

Enumerated

오브젝트의 특징을 지정하기 위한 변수(!로 끝남)

Char, Character

한개의 ASCII 문자를 갖는 변수

String

0 에서 60000자리의 ASCII

DragObject

Drag 가능한 모든 Object를 의미하는 값



# 파워스크립트 문장 
* Assign 문 
변수에 값을 할당하기 위해 "="을 사용한다.
연속적인 변수할당은 할 수 없다.
text = "Welcome"
rate = .5
a = b =0 //에러

* IF 문 
조건이 참인 경우 THEN 이후 문장을 수행하고 그렇지 않으면 ELSE 이후 문을 실행한다.

  IF count > 99 THEN //count 가 99 보다 크면 
     count = 0          //count 는 0
  ELSE                 //그렇지 않다면 
     count = 1          //count 는 1
  END IF             //IF 문 마침 


* CHOOSE CASE 문 
CASE에 나오는 조건대로 분기할 수 있는 형태를 제공 

CHOOSE CASE ave
CASE IS < 5                      //ave가 5보다 작으면
     ave = ave * 0.5
CASE 10 TO 20                   //ave가 10에서 20 사이면
     ave = ave / 10
CASE ELSE                      // 그외의 경우
     ave = ave * ave
END CHOOSE

위외 같이 choose 문은 유연하게 사용된다. 여기서 IS 는 조건절 ave 를 가리키는 것으로 ave < 5 같은 식으로 쓰면 에러가 발생한다. 

* DO ... LOOP 문 
DO...LOOP 문은 조건을 만족할 때까지 계속 반복문을 실행한다. 수행중 CONTINUE 를 만나면 반복의 시작으로 가며 EXIT 문을 만나면 반복문을 빠져나온다. 

Int A = 1                              Int A = 1
DO UNTIL A > 15                 DO
    BEEP(A)                             BEEP(A)
    A++                                    A++ 
LOOP                                LOOP UNTIL A > 15
 
Int A =1                               Int A = 1
DO WHILE A < 15                 DO
    BEEP(A)                             BEEP(A)
    A++                                     A++ 
LOOP                                 LOOP WHILE A < 15 

 4 개다 비슷한 표현식들인데
UNTIL 문은 조건이 만족되면 루프가 끝나고 
WHILE 문은 조건이 거짓이 되면 루프가 끝난다는 차이가 있다.
그리고 DO .. LOOP 형식은 조건을 검사하기 않고 일단 한번은 실행시킨다는 차이가 있다. 
>>BEEP(n) - n 초 만큼 비프음을 낸다. 최대치는 10 이다. 

* FOR ... NEXT 문 
정해진 조건 동안 반복문을 수행한다. 

FOR n = 5 TO 25
    A = A +10
NEXT 


* GOTO 문 
스크립트에서 제어를 정해진 곳으로 옮길 때 사용 

IF A = 5 THEN
    GOTO HERE  
ELSE 
    A = 0 
END IF 

HERE:

A가 5라면 HERE 레이블이 있는 곳으로 이동해 A 는 5의 값을 그대로 가지고 그렇지 않다면 A는 0 의 값을 가지게 된다. LABEL은 끝에 : 을 붙혀준다.

* HALT 문 
Application 을 즉시 종료시키는 문장 

IF A <> 1 THEN HALT
IF A = 1 THEN HALT CLOSE

A 가 1 이 아니라면 즉시 어플리케이션을 종료 한다. 만약 A 가 1 이라면 종료는 하되 CLOSE 이벤트에 스크립트가 있다면 그것을 실행하고 종료한다.

* CALL 문 
 조상 스크립트를 호출할때 사용된다.

CALL w_emp::Open                     // w_emp윈도우의 open 될때의 스크립트를 호출
CALL w_emp.cb_close::Clicked    // w_emp의 컨트롤(cb_close)의 클릭 이벤트를 호출 

















'3.PROGRAMMING > Power Builder' 카테고리의 다른 글

[PB]매뉴얼 (04) 윈도우  (0) 2011.07.19
[PB]매뉴얼 (05) 컨트롤  (0) 2011.07.19
[PB]매뉴얼 (07) 함수  (0) 2011.07.19
[PB]매뉴얼 (08) 메뉴  (0) 2011.07.19
[PB]매뉴얼 (09) DataWindow 객체  (0) 2011.07.19
Posted by SITD
, |

최근에 달린 댓글

글 보관함