Database(오라클,MS-SQL등)가 DB바인딩을 지원한다면 먼저 DisableBind=1로 바꿔주어야 합니다.

(하지만 평상시에는 DisableBind=0으로 해야 DB처리속도가 빠르답니다.)

바꾸어 주지 않으면 쿼리문 안의 변수들값이 ?로 나오게 됩니다.


따라서 DisableBind를 필요할때만 임시로 1로 바꿔어주고 다시 돌려놓으면 됩니다.


나의 경우는 체크박스를 만들어 체크를 해제해놓고 필요할때 체크를 하면 DisableBind=1로 바뀌게 했지만

해당 데이터윈도우의 이벤트에서 아래와 같이 스크립팅하면 됩니다.

(파워빌더에서 이벤트 수행순서는 아래 1, 2, 3의 순서로 실행됩니다.)

===============================================================================================

1. retrievestart()

 - 임시로 바인딩상태를 바꿔준다.

IF keydown(keyshift!) and keydown(keycontrol!) then        //Ctrl + Shift + 조회시

//IF cbx_2.checked = True THEN

SQLCA.DBParm = "DisableBind=1"

END IF


2. sqlpreview()

 - 해당 SQL을 파일로 만들고, 결과를 메모장으로 실행하여 보여준다. (Ctrl + Shift + 조회시에만)

IF keydown(keyshift!) and keydown(keycontrol!) THEN

FileOpen('.\temp_sql_' + this.classname() + '.txt',StreamMode!,Write!,LockWrite!,Replace!)

long  ll_i

FileWrite(1, '/*########## ' + this.classname() + ' = "' + this.dataobject + '" ##########*/~r~n~r~n~r~n')

For ll_i = 1 to len(sqlsyntax) step 32765

FileWrite(1, mid(sqlsyntax, ll_i, 32765))

Next

FileClose(1)

Run("notepad .\temp_sql_" + this.classname() + ".txt") 

END IF


3. retrieveend()

 - 바인딩상태를 원래대로 되돌린다.

IF keydown(keyshift!) and keydown(keycontrol!) then        //Ctrl + Shift + 조회시

//IF cbx_2.checked = True THEN

SQLCA.DBParm = "DisableBind=0"

END IF

===============================================================================================


최근게시물 보기