* Powerbuilder 10.5


지난 시간에 만든 d_emp를 통해서 DB 로부터 받아온 데이터를 보여주도록 하겠습니다.


w_list 를 오픈하세요.


 


dw 컨트롤을 선택해 보세요. Name이 dw_1 로 되어 있네요. dw_emp 로 수정하겠습니다.
그러고 보니 dw 컨트롤의 Name 은 dw_ 로 시작하네요.

dw : d_
dw 컨트롤 : 
dw_
윈도우 :
w_
커맨드버튼 : cb_

관례적인 명명법입니다.


dw와 dw 컨트롤을 연결시키겠습니다.

dw_emp 의 DataObject 속성 입력란에 d_emp 라고 입력합니다.
또는
DataObject 속성 입력란 오른편에 ... 라고 되어 있는 버튼을 눌러 d_emp 를 선택합니다.

그럼 다음과 같이 됩니다.



그리고

조회버튼(cb_search)을 클릭하면 dw_emp 에 데이터를 조회하도록 할 건데요. 



1. SQLCA 와 dw_emp 연결하기

먼저, SQLCA 를 통해서 연결해 놓은 오라클 세션을 dw_emp에서 사용할 수 있도록 설정해야 합니다.
(오라틀 세션(session)은 오라클과 연동하기 위한 논리적인 연결 단위입니다.
여기서는 이해 안 돼도 상관 없습니다. SQLCA 를 통해서 오라클과 연결되어 있다는 뜻으로 이해하시면 됩니다.)

w_list 의 open 이벤트에 들어갑니다. open 이벤트에 들어가는 방법은 다음과 같습니다.

윈도우 레이아웃에서 윈도우의 빈 공간(컨트롤이 위치하고 있지 않은 공간)

더블클릭
또는
마우스 우클릭 - Script

이렇게 하면 w_list 의 이벤트 중 가장 자주 사용되는 이벤트(open)로 들어갑니다.
w_list 의 다른 이벤트에 들어가려면 이벤트 목록에서 다른 이벤트를 선택하면 됩니다.

open 이벤트에 다음과 같이 입력합니다.

dw_emp.SetTransObject(SQLCA)



SetTransObject 부분에 커서를 두고 shift + F1
-> 도움말 항목에서 SetTransObject method(DataWindows) 를 선택합니다.



 


설명
   DataWindow control 또는 DataStore 가 Transaction object 를 사용할 수 있도록 한다.
   Transaction object 는 데이터베이스와 연동하기 위해 필요한 정보를 제공한다.

문법
PowerBuilder
   integer : 반환값의 데이터타입
   
반환값
   성공:1
   에러:-1
   인수값이 null 이면 null 반환


SetTransObject(대소문자 구분안함) 는 내장함수입니다.

method 는 Funtion 과 Event 모두를 포함합니다.

지금 SQLCA 는 오라클 testdb 의 scott 계정에 접속되어 있는데요.(test 어플리케이션 open이벤트 참조)
w_list 의 open 이벤트에 스크립트를 작성했으므로, w_list 가 열릴 때 dw_emp 가 SQLCA 를 사용할 수 있습니다.
SQLCA 는 Global (전역) 변수이므로 어디서나 참조가 가능합니다. (Global 변수에 대해서는 나중에 설명합니다.)




2. dw_emp 에서 데이터 조회하기

조회버튼의 clicked 이벤트에 들어가야 합니다.

조회버튼을 더블클릭하세요
또는
조회버튼 - 마우스 우클릭 - script



여기다가 다음과 같은 스크립트를 입력합니다.

dw_emp.Retrieve()




Retrieve 부분에 커서를 두고 shift + F1
-> 도움말 항목에서 SetTransObject method(DataWindows) 를 선택합니다.




설명
   데이터베이스로 부터 rows 를 조회하여 DataWindow control 또는 DataStore 에 담는다.
   만약 인수들이 포함되어 있다면 인수값은 SQL SELECT 문의 조회용 인수로 사용된다.

문법
   long : 반환값의 데이터타입

반환값
   성공 : 조회된 row의 수
   실패 : -1
   dw 컨트롤에 할당된 dw가 없으면 : -1




이제 파빌을 실행해 보세요. (ctrl + R)
그리고 조회버튼(cb_search)을 클릭합니다.



위와 같은 화면이 나오면 성공입니다.


만약, SetTransObject 를 호출하지 않고 Retrieve 를 호출하면, 다음 메시지가 나타납니다.


 


데이터베이스 transaction 정보가 없으니 SetTransObject 를 호출하라는 뜻입니다.


프로그래밍을 할 때, 일부러 코드를 생략해서 나타나는 에러 메시지를 확인해보세요. 나중에 동일한 에러 메시지를 발견했을 때, 해결하기가 수월해집니다.







SetTransObject 와 Retrieve 의 뜻을 도움말을 통해서 확인해 봤는데요.
도움말에는 정확한 뜻과 사용법 그리고 예제 등이 수록되어 있기 때문에 모르는 함수나 Object 가 나왔을 때, 도움말을 확인하는 습관을 가지는 것이 바람직합니다.


여기서 숙제 하나 내겠습니다.
지금은 w_list 윈도우를 열고 조회버튼을 클릭해야 조회가 됩니다.
w_list 윈도우가 열릴 때 자동으로 조회가 되도록 수정해 보세요.


수고하셨습니다.



* 질문은 댓글에...

Posted by A4M
,