
📌 1. 기본 흐름
- SyntaxFromSQL을 사용하여 DataWindow의 Syntax를 생성
- LibraryCreate 함수를 사용하여 PBL에 새로운 DataWindow 객체를 저장
📌 2. 코드 예제
아래 예제는 SyntaxFromSQL을 이용해 DataWindow의 Syntax를 생성하고, 이를 LibraryCreate로 PBL 파일에 저장하는 방식입니다.
string ls_syntax, ls_error, ls_pbl, ls_dw_name
string ls_sql
integer li_result
// SQL 문 작성
ls_sql = "SELECT id, name, price FROM products"
// DataWindow Syntax 생성
ls_syntax = SQLCA.SyntaxFromSQL(ls_sql, "Tabular", ls_error)
IF ls_syntax = "" THEN
MessageBox("Error", "SyntaxFromSQL 실패: " + ls_error)
RETURN
END IF
// PBL 경로 및 DataWindow 이름 지정
ls_pbl = "C:\PB_Projects\my_library.pbl"
ls_dw_name = "d_products"
// 기존 DataWindow 삭제 (있다면)
LibraryDelete(ls_pbl, ls_dw_name)
// 새 DataWindow 생성
li_result = LibraryCreate(ls_pbl, ls_dw_name, ls_syntax, ls_error)
IF li_result = 1 THEN
MessageBox("Success", ls_dw_name + " DataWindow가 성공적으로 생성되었습니다.")
ELSE
MessageBox("Error", "LibraryCreate 실패: " + ls_error)
END IF
📌 3. 코드 설명
단계설명
① | SyntaxFromSQL을 이용해 DataWindow의 Syntax 생성 |
② | 기존에 같은 이름의 DataWindow가 있으면 LibraryDelete로 삭제 |
③ | LibraryCreate를 이용해 PBL에 새로운 DataWindow 추가 |
④ | 성공 여부를 확인하고 MessageBox로 결과 출력 |
📌 4. 주의할 점
- PBL 경로가 정확한지 확인
- ls_pbl에 지정한 PBL 경로가 올바르게 설정되어 있어야 합니다.
- DataWindow 이름 중복 확인
- 같은 이름의 DataWindow가 존재하면 LibraryDelete로 삭제 후 새로 생성합니다.
- DataWindow 생성 후 적용
- PBL에 저장된 DataWindow는 PowerBuilder IDE에서 바로 확인할 수 있습니다.
- dw_1.DataObject = "d_products"를 설정하여 UI에서 사용할 수도 있습니다.
위 방법은 PowerBuilder 11.5 이후 버전에서 가능.
PowerBuilder 10.5에서는 LibraryImport()로 처리.

//dw.buttonclicked
String ls_btn, ls_sql, ls_error, ls_syntax
String ls_prst, ls_prst_style
String ls_pbl, ls_dw
Long ll_rv
ls_btn = dwo.name
this.AcceptText()
ls_sql = gf_null2space(this.object.sql [1])
ls_prst = gf_null2space(this.object.prst[1])
ls_pbl = gf_null2space(this.object.pbl [1])
ls_dw = gf_null2space(this.object.dw [1])
choose case ls_btn
case "b_sql"
/* ------------------------------------------------------------ */
// SyntaxFromSQL
/* ------------------------------------------------------------ */
if len(ls_sql) = 0 then
mbox("SQL을 입력하세요.!");return;
end if
ls_prst_style = "style(type=" + ls_prst + ")" //"style(type=grid)"
ls_syntax = SQLCA.SyntaxFromSQL(ls_sql, ls_prst_style, ls_error)
IF ls_syntax = "" THEN
this.object.msg[1] = ls_error
ELSE
this.object.syntax[1] = ls_syntax
this.object.msg [1] = "SyntaxFromSQL OK!"
END IF
case "b_crt"
/* ------------------------------------------------------------ */
// LibraryCreate
/* ------------------------------------------------------------ */
if len(ls_pbl) = 0 then
mbox("PBL을 입력하세요.!");return;
end if
if len(ls_dw) = 0 then
mbox("DW을 입력하세요.!");return;
end if
/* ------------------------------------------------------------ */
// LibraryImport
/* ------------------------------------------------------------ */
ls_syntax = this.object.syntax[1]
ll_rv = LibraryImport(ls_pbl, ls_dw, ImportDataWindow!, ls_syntax, ls_error)
if ll_rv = 1 then
this.object.msg [1] = "LibraryImport OK!"
else
this.object.msg [1] = ls_error
end if
end choose
'SW Engineer & Developer > Project ezPo' 카테고리의 다른 글
Django REST Framework 첫번째 Test (1) | 2025.02.09 |
---|---|
ezPo 프로젝트 소개 (0) | 2025.02.09 |