* Powerbuilder 10.5

 

 

 

 

윈도우함수(Window Function)는 선언된 윈도우에서만 접근할 수 있습니다.

이와 다르게 전역함수(Global Function)는 모든 오브젝트에서 접근할 수 있습니다.

 

73강에서 만들어 놓은 gf_connect 가 바로 전역함수입니다.

 

test 어플리케이션의 open 이벤트를 보면 DBMS 접속 스크립트가 있습니다.

이 부분을 gf_connect 로 대체해 보겠습니다.

 

DBMS 접속을 두가지 방법으로 구현했는데요.

하나는 오라클 네이티브(native) 방식이고 다른 하나는 ODBC 방식입니다.

gf_connect에는 네이티브 접속 스크립트를 작성하고 또 다른 함수를 만들어 ODBC 접속 스크립트를 작성해 보겠습니다.

 

test 어플리케이션의 open 이벤트를 엽니다.

 

// Native (Profile MyTestDB)
SQLCA.DBMS = "O10 Oracle10g (10.1.0)"
SQLCA.LogPass = "tiger"
SQLCA.ServerName = "TestDB"
SQLCA.LogId = "scott"
SQLCA.AutoCommit = False

 

이 부분이 네이티브 접속 스크립트입니다.

클립보드에 복사한 뒤 gf_connect 를 열고 붙여넣습니다.

 

 

 

 

인수를 추가합니다.

함수 프로토타입 -> 빈공간 마우스 우클릭 -> 팝업에서 Add Parameter 클릭

 

 

 

 

string 타입 인수 as_server, as_id, as_pw 를 추가합니다.

스크립트에서

"tiger" 는 as_pw 로

"TestDB" 는 as_server 로

"scott" 는 as_id 로 수정합니다.

 

 

 

 

test 어플리케이션의 open 이벤트를 엽니다.

기존의 스크립트는 코멘트 처리하고 바로 밑에

gf_connect("TestDB", "scott", "tiger")

를 작성합니다.

 

 

 

 

실행하면 문제없이 잘 작동합니다. 만약 에러가 발생한다면 오타일 가능성이 높습니다.

지금까지 네이티브 접속 스크립트를 gf_connect 로 대체했습니다.

 

 

 

 

ODBC 접속 스크립트도 해보겠습니다.

 

New 아이콘 -> PB Object탭 -> Function 클릭합니다.

Return Type : (None)

Function Name : gf_connect_odbc

 

gf_connect 와 동일하게 인수를 만듭니다.

test 어플리케이션의 open 이벤트에서 ODBC 스크립트를 복사해서 붙여넣습니다.

test1.pbl 을 선택해 저장합니다.

 

 

 

 

SQLCA.DBParm = "ConnectString='DSN=TestDB_odbc;UID=scott;PWD=tiger',PBCatalogOwner='scott'"

 

에서 PBCatalogOwner='scott' 는 파빌 카탈로그 테이블 오너를 지정하는 부분인데 파빌 DB Profile 로 접속할 때 필요하고 어플리케이션 실행 단에서는 불필요합니다. 그래서 다음과 같이 수정합니다.

 

SQLCA.DBParm = "ConnectString='DSN=TestDB_odbc;UID=scott;PWD=tiger'"

 

여기서 TestDB_odbc, scott, tiger 리터럴을 인수로 치환해야 합니다.

인수 치환 과정은 다음과 같습니다.

 

SQLCA.DBParm = "ConnectString='DSN=TestDB_odbc;UID=scott;PWD=tiger'"

->

SQLCA.DBParm = "ConnectString='DSN="+"TestDB_odbc"+";UID="+"scott"+";PWD="+"tiger"+"'"

->

SQLCA.DBParm = "ConnectString='DSN="+as_server+";UID="+as_id+";PWD="+as_pw+"'"

 

 

 

 

 

이 함수를 저장하고 test 어플리케이션의 open 이벤트를 열어 다음과 같이 작성합니다.

 

 

 

 

 

전역함수는 모든 오브젝트에서 호출하여 사용할 수 있다는 점을 명심하시기 바랍니다.

 

수고하셨습니다.

 

 

 

 

 

 

 

 

 

 

Posted by 신선봉(닉네임)

댓글을 달아 주세요

  1. 알렉 2018.09.18 09:27 신고  댓글주소  수정/삭제  댓글쓰기

    수고 많으십니다. 혹시 global function 과 object와의 차이점이 뭔지 알고 싶습니다.

    • Favicon of http://all4museum.tistory.com BlogIcon 신선봉(닉네임) 2018.09.18 11:44 신고  댓글주소  수정/삭제

      파워빌더 -> NEW 화면-> PB Object 에서 파워빌더에서 제공하는 object 를 볼 수 있습니다.
      거기에 Function이 있는데 이게 Global Function 입니다.

      object > function > global function



티스토리 툴바