블로그 이미지
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

달력

« » 2011.7
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
31

공지사항

태그목록

최근에 올라온 글

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
, |
# 파워빌더 함수 
* 파워빌더에서 함수는 다음과 같이 구분된다.

1) 내장함수 
 - 오브젝트 관련 함수 
 - 오브젝트 비관련 함수 
2) 사용자 정의 함수 
 - Global 함수 
 - Object-Level 함수 
 - 외부(External) 함수 

# 내장 함수 
파워빌더는 숫자형, 문자열처리, 데이타변화 등을 지원하는 500여개의 내장 함수를 지원한다.
이들 내장함수는 각 컨트롤등에 관련된 오브젝트 관련함수와 이와는 상관없이 사용할 수 있는 비 오브젝트 관련 함수가 있다.

* 오브젝트 관련함수 
- 오브젝트에서 발생한 이벤트처리
- 오브젝트의 속성변환
- 오브젝트 관련정보 얻음 
 예) Open(w_main) // w_main 윈도우를 연다. 
 dw_1.RowCount() // dw_1의 현재 Row 갯수를 얻어 온다.

* 비 오브젝트 관련함수 
데이터형 변환, 산술함수, 문자열처리, 시간처리, 파일처리, 프린팅, DDE관련함수
 예) Date(), Sqrt(), Left(), Day(), FileOpen(), Print(), OpenChannel()

# 함수 호출 방식 
* 함수를 호출시에는 함수명, 인수의 테이터타입, 인수의 갯수가 일치해야 한다.
  (사용할 함수의 인자 타입과 갯수는 파워빌더의 도움말을 통해 알아보는 것이 좋다.)
   형식) 함수명( {인자1, 인자2, .....} )
* 대부분의 내장함수는 처리의 결과를 돌려주기 위한 리턴값이 존재한다. 개발자는 이 리턴값을 지정하여 사용할 수 있다. 
 예) Integer iCount , iCount_2
  String sValue = "100" 
  iCount = integer(sValue) // integer() 함수는 문자열 100 을 정수로 변환하여 돌려준다.
  iCount2 = dw_1.GetRow() // dw_1의 현재 행번호를 돌려준다.

# 사용자 정의 함수
파워빌더는 사용자가 원하는 함수를 정의해서 사용할 수 있다. 정의된 함수는 내장함수와 똑같은 방식으로 사용된다. 함수 이름을 정의하는 데 있어서 규칙은 다음과 같다. 최대 40자 까지 허용된다.
- 반드시 영문자로 시작해야 한다.
- 영문자, 숫자, 특수문자(-, $, #, %, _ )를 사용할 수 있다. 
- 대소문자 구분을 하지 않는다.
- 한글이나 한자나 사용할 수 없다. 

# 사용자 정의 함수 만들기
Declare>Window Funtions... 를 선택해서 New를 선택
 
* Name에는 함수의 이름을 적어준다.
* Access 는 pulbic일때는 어플리케이션 전체에서 사용이 가능하고, 
  private 는 선언된 오브젝트에서만 사용가능하지만 상속이 되지 않고 
  protected는 private와 같고 상속된 자손에서도 사용가능하다. 
* Return 란은 최종적으로 함수내에서 돌려줄 값의 타입을 정해준다. 아무것도 돌릴 값이    없다면 None 이다.
* arguments 란에서 아규먼트가 존재한다면 이름과 타입과 넘기는 방식을 정해준다. 
  옆의 버튼으로 추가, 삭제, 삽입이 가능하다.


Posted by SITD
, |
* 자식 윈도우와 응답윈도우를 제외한 모든 윈도우는 메뉴를 갖는다. 메뉴란 사용자가 현재 활동 윈도에서 선택할 수    있는 명령 또는 옵션들의 목록이다. 파워빌더에서는 메뉴 내의 각 선택을 메뉴 객체로 정의된다. 

# 메뉴 만들기
파워패널에서 메뉴버튼을 클릭하여 New를 선택한 후 메뉴 페인터를 연다. 
 
* Menu Bar Items 칸에 주메뉴를 적고 밑에다 하위 메뉴를 입력한다. &키 와 조합하면 단축키를 만들 수 있다. 그리    고 ' -' 은 메뉴에서 구분선으로 나타난다. 주 메뉴의 추가는 상단의 스크롤바를 움직여서 조정한다. 
* Genaral 탭 
- Menu Item Name : 메뉴의 이름을 적는다. 
- Lock Name : 메뉴항목이 나중에 변경되더라도 메뉴의 이름은 변경되지 않도록 하여 스크립트가 작성되어 있는 경                      우에도 재 입력이 필요없도록 해준다.
- MDI Microhelp : 프로그램 좌하단의 헬프 자리에 표시될 내용 

* Style 탭 
  - Checked : 메뉴옆에 체크표시가 나타날 것인지의 여부
  - Enabled : 메뉴 오브젝트가 선택될수 있을 것인지의 여부
  - Shift Over/Down : 이 메뉴로부터 상속된 메뉴를 추가할 때 우측 또는 아래로 메뉴가 이동할 수 있을지의 여부

* Shortcut 탭 
   메뉴 오브젝의 핫키를 설정하는 곳이다. 

* Toolbar 탭 
   - Text: 커서를 대었을 때의 풍선도움말의 내용이다.
   - Space Before : 아이콘들의 간격설정이다. 1이상면 분리선이 생긴다.
   - Order : 왼쪽부터 아이콘들의 순서를 정한다.
   - Display Down: 툴바버튼이 눌린상태로 나타날 것인지 여부
   - Bar Index : 툴바의 번호이다. 다른 버튼에 2번을 준다면 새로운 툴바가 생성된다.

* Picture 탭 
   - 툴바의 버튼으로 사용할 아이콘을 정하는 탭이다. 

* 메뉴가 완성되면 각 항목들에 대해 스크립트 버튼을 눌러 해당 스크립트를 기술해 주면 된다.
* 메뉴를 윈도우에 붙히는 방법은 해당 윈도우의 속성창에서 Menu Name란에 해당 메뉴를 연결시켜준다. 

Posted by SITD
, |
* 데이터윈도우 객체는 데이터베이스에 저장된 데이터를 검색, 표현, 조작하기 위해 사용한다.
* 데이터윈도우를 만들기 위해서는 먼저 데이터베이스에 연결이 되어 있어야 한다. 새로운 데이터베이스를 만드는     방법은 앞장의 데이터베이스 부분에 설명되어있다.

# 데이터윈도우 객체 만들기
* 파워바에서 DataWindow 버튼을 클릭하고 Select 대화상자에서 New를 선택한다. 
   - Data Source와 Style을 정한후 OK 한다. 
   - Quick Select는 하나의 테이블만 사용하는 경우 적합하고 여러개의 테이블로 구성하려면 SQL Select를 선택한         다. Query를 소스로 하는 경우는 Query를 선택한다. 

* Data Source 선택
1) Quick Select - 한 테이블 또는 외래키로 연결된 여러 테이블사용 컬럼선택, 선택기준, 소트만 지정하고 그룹핑이                          나 계산필등은 지정할수 없다.
2) SQL Select - Select 문장에 더 많은 제어가 가능하다. 
3) Query - 미리 정의되어 있는 Query 사용
4) Stored Procedure - 저장 프로시저 사용
5) External - 데이터가 DDE 응용으로 부터 Import 되거나 TXT 나 DBF 파일 같은 외부파일을 사용

* Presentation Style 선택
1) Tabular - 각페이지마다 맨 위에 헤드가 있고 그 밑에 칼럼이 디스플레이된다. 
2) freeform - 페이지위에서 밑으로 배열되고 , 라벨다음에 컬럼이 디스플레이된다
3) Grid - 액셀과 같은 폼의 형태를 제공하고 사용자가 컬럼과 헤딩을 이동시킬수 없다. 
4) Label - 그림9.5 처럼 라벨인쇄 폼을 제공 
6) Group - Tabular 형식과 유사하나 행을 그룹핑해서 그룹화된 Tabular 데이터윈도우를 만든다.
5) Composit - 한 객체내에 여러개의 데이터윈도우를 결합하는 형태이다. 한 페이지에 하나 이상의 데이터윈도우를                      인쇄하는 데 유용하다.
6) Graph, CrossTab - 텍스트 표현방식이 아니라 그래픽적으로 데이터를 디스플래이한다. 

# 데이터윈도우 생성 
 - 여기서는 가장 보편적으로 많이 사용된는 SQL Select, Tabular 형식의 예를 들어 데이터윈도우를 생성하는 방법       을 알아본다. 
* SQL Select, Tabular를 선택하고 OK를 하고 사용될 테이블들을 선택한 후 OK한다.
* 테이블을 선택하면 외래키로 지정된 항목은 자동적으로 조인이 된다. 조인에는 여러가지 조건이 있는 데 연결된 선    가운데있는 조인상자를 클릭하면 원하는 조건을 선택할 수 있다. 
* 그림처럼 디스플래이 하고자 하는 칼럼들을 선택하면 화면 상단에 선택이 되고 이 항목들이 화면상에 보여지게 된    다. 
* 화면하단의 탭들에서는 원하는 조건을 지정해 줄수가 있다. 
  Sort - 선택하는 칼럼을 기준으로 정렬 조건을 지정한다. 
  Where- 테이블 간의 칼럼이나 아규먼트와의 조인 조건을 지정한다.
  Group - 그룹으로 묶을 항목을 결정한다.
  Having - Having 조건을 정의한다.
  Compute - 계산 칼럼을 추가한다.
  Syntax - SQL 문을 보여준다. 
* 아규먼트 지정 
- 실제로 데이터윈도우를 작성하여 출력을 보면 조건이 맞는 테이블의 모든 데이터가 디스플래이 된다. 만약 사용자    가 어떤 특정 정보만 보고 싶다면 아규먼트를 지정함으로써 해결할 수 있다. 즉 학번이 **** 인사람, 이름이 ****인    사람, 성적이 A 인 사람 등만 보고자 하는 경우이다. 
   아규먼트는 여러개라도 가능하다.
* 아규먼트 지정방법 
   Design>Retrieval Arguments... 를 선택
   Name란에 아규먼트 이름을 지정하고 type에서 아규먼트의 데이터형을 지정한다. 
   그 후에 [그림9.8]에서 where 탭에서 원하는 칼럼과 조건을 정해준다. 

# 데이터 윈도우 에디터
- 조건을 정해준 후 툴바의 SQL 버튼을 클릭
  여기에서 사용자는 원하는 디스플래이 형태로 작업할 수 가 있다.
 
# 데이터 윈도우의 저장
- 모든 작업이 끝나면 저장 버튼을 눌러 저장한다. 보통 데이터윈도우는 d_ 로 접두어를 붙힌다.
- 만약 Query로 저장을 하고자 한다면 저장 버튼을 눌러 저장하면 된다. 
- 미리 보기 버튼을 눌러 데이터가 제대로 나오는지 확인 해 본다. 아규먼트가 있는 경우 해당 값을 정해주어야 미리    보기가 가능하다.

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

[PB]매뉴얼 (05) 컨트롤  (0) 2011.07.19
[PB]매뉴얼 (06) 파워스크립트  (0) 2011.07.19
[PB]매뉴얼 (07) 함수  (0) 2011.07.19
[PB]매뉴얼 (08) 메뉴  (0) 2011.07.19
[PB]매뉴얼 (10) 데이터윈도우 객체 강화  (0) 2011.07.19
Posted by SITD
, |

최근에 달린 댓글

글 보관함