PowerBuilder/error

[PB] Invalid DataWindow row/column specified at line ...

새싹_웹_개발자 2024. 10. 29. 20:30

PowerBuilder 버전: 12.5

오류 메시지: Invalid DataWindow row/column specified at line _ in function _ of object _.

 

DataStore 객체로 조회한 특정 행의 값을 GetItem...() 함수로 가져올 때 위 오류가 발생했습니다.

 

SELECT 쿼리: 

SELECT 
	T1.CODE AS CODE, 
	T2.COLUMN1 AS COLUMN1, 
	T2.COLUMN2 AS COLUMN1, 
	T2.COLUMN3 AS COLUMN3 
FROM TABLE_1 T1, TABLE_2 T2 
WHERE T1.CODE = T2.CODE

PowerBuilder 코드: 

Integer li_i, li_count, li_code
String ls_column1, ls_column2, ls_column3

DataStore lds_temp

...

li_count = lds_temp.RowCount()

FOR li_i = 1 TO li_count
	li_code = lds_temp.GetItemNumber(li_i, 'CODE') // 오류 발생
	li_code = lds_temp.GetItemNumber(li_i, 'T1.CODE') // 오류 발생
	li_code = lds_temp.GetItemNumber(li_i, 'TABLE_1_CODE') // 테이블명 + "_" + 칼럼명 = 정상 실행
NEXT

...

 

GetItemString(), GetItemNumber() 함수로 DataStore 조회 결과 값을 가져올 때는 칼럼명 앞에 테이블명을 붙여 TABLE_NAME_COLUMN_NAME 형태로 가져와야 오류가 발생하지 않습니다.

 

기존 코드에는 테이블명이 없었고 제 기억에는 테이블명이 없어도 정상적으로 실행됐던 것 같은데 원인은 아직 파악하지 못했습니다.

 

추후 찾게 되면 추가하겠습니다.

 

+ 2024. 11. 04.

이유는 모르겠으나 동일한 환경으로 impdp 한 다른 DB는 테이블명 없이 칼럼명만으로 값을 가져올 수 있습니다.

lds_temp.Object.DataWindow.Syntax로 확인해 봐도 칼럼명에 테이블명은 안 들어가 있네요.

스키마, Owner는 동일하고 expdp/impdp 중 문제가 생긴 게 아닌가 싶습니다...