파워빌더(PowerBuilder) 강의 - 26.DropDownListBox (DataWindow Column Style Type)
파워빌더 기초강의1 2011. 9. 29. 17:04
* Powerbuilder 10.5
저번 강의 숙제를 해결해 보겠습니다.
GetItemString 은 Primary Buffer 에 있는 값을 기본적으로 가져 온다고 했습니다.
데이터를 수정하고 바로 추가 버튼을 누르면 dw 컨트롤 편집 화면에 입력한 데이터가 Primary Buffer 에 반영이 되지 않아서
If IsNull(ls_ename) or ls_ename = '' Then
Return
End If
이 조건에 딱 걸리게 됩니다.
그렇다면 dw 컨트롤 편집 화면의 데이터를 강제로 Primary Buffer 에 반영시키면 되겠죠?
AcceptText 함수를 사용해야겠네요.
여기에 작성했습니다.
이제 확인해 보시죠....
정상적으로 잘 되기는 하는데 말이죠. 사원번호 칼럼값이 중복해서 들어갔습니다.
당연합니다.
Select nvl(max(empno),0) + 1
Into :li_empno_next
From emp
Using SQLCA;
위의 쿼리를 이용해서 DB 에서 바로 데이터를 가져왔으니 항상 동일한 값이 들어올 수 밖에 없습니다.
조금 골치 아프게 됐는데요.
PK(Primary Key) 인 사원번호를 여기서는 추가 버튼을 눌렀을 때, 자동으로 입력되게 했습니다.
만약 사용자가 2명이상이고 동일한 프로그램으로 사원을 추가할 경우에는 문제가 생길 수 있습니다.
어떤 사용자가 추가버튼을 눌러 사원번호 7935 를 입력하고는 저장하지 않고 그대로 있으면,
다른 사용자가 추가 버튼을 눌러도 사원번호는 7935가 입력됩니다.
이 때 나중에 저장하는 사용자의 프로그램에서 PK 중복입력 에러(Duplication Error)가 발생합니다.
지금 강의에서는 이 부분을 지금은 그대로 두고 나중에 해결하려고 합니다. 이 부분을 해결하면 위 화면과 같은 문제도 자연스럽게 해결되기 때문에 지금은 해결하지 않고 넘어가겠습니다.
추가 버튼을 눌러 새로운 로우를 추가한 다음 데이터를 입력하는 부분을 실습하고 있는데요.
1.emp_empno : Primary Key 이므로 empno 칼럼의 다른 데이터와 충돌 나지 않게 데이터를 넣어야 합니다.
2.emp_ename : dw 컨트롤 편집 화면에서 사용자가 직접 넣으면 됩니다.
3.emp_job : dw 컨트롤 편집 화면에서 직접 넣으면 되지만 직책이므로 아무렇게나 넣으면 안될 거 같구요.
직책 목록 같은 데서 선택하게끔 하면 좋을 거 같네요.
4.emp_deptno : 이 넘은 dept 테이블의 deptno 칼럼과 조인되므로 dept 테이블의 deptno 칼럼 값에서
선택하게 하면 좋겠어요.
5.dept_dname, dept_loc : 여기에 넣는 데이터는 실제 DB에 반영되지 않습니다만, dw 컨트롤 편집화면에는
보여져야 하겠죠? emp_deptno 에 값 넣을 때, 함께 넣으면 될 듯 합니다.
1, 2번은 해결이 된 것 같구요.
3.emp_job
목록에서 선택하게 끄럼 구현해 보겠습니다.
d_emp 를 열어보세요.
직급 칼럼(emp_job) 을 클릭 -> 속성창의 Edit 탭 선택 -> Style Type 선택
dw 칼럼의 스타일 형태를 지정할 수 있습니다.
Edit : 편집가능 (default)
CheckBox : 체크박스
DropDownDW : 다른 dw의 데이터를 조회해서 팝업창이 드랍다운 형태로 열려 보여준다.
DropDownListBox : 목록을 직접 입력(하드코딩)해서 팝업창이 드랍다운 형태로 열려 보여준다.
RadioButtons : 라디오 버튼
DropDownListBox 를 선택합니다.
Code Table 의 Display Value에 다음값을 입력합니다.
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
Data Value 는 Display Value와 동일하게 입력하구요.
Always Show Arrow를 체크하면 왼쪽 화면처럼 칼럼의 형태가 변경됩니다.
이제 실행해서 확인해 보세요.
직급을 클릭해도 목록 팝업창이 나오지 않습니다. 먹통이네요. 숙제에요.
힌트) Tab Order
수고하셨습니다.
*질문은 댓글에...
정상적으로 잘 되기는 하는데 말이죠. 사원번호 칼럼값이 중복해서 들어갔습니다.
당연합니다.
Select nvl(max(empno),0) + 1
Into :li_empno_next
From emp
Using SQLCA;
위의 쿼리를 이용해서 DB 에서 바로 데이터를 가져왔으니 항상 동일한 값이 들어올 수 밖에 없습니다.
조금 골치 아프게 됐는데요.
PK(Primary Key) 인 사원번호를 여기서는 추가 버튼을 눌렀을 때, 자동으로 입력되게 했습니다.
만약 사용자가 2명이상이고 동일한 프로그램으로 사원을 추가할 경우에는 문제가 생길 수 있습니다.
어떤 사용자가 추가버튼을 눌러 사원번호 7935 를 입력하고는 저장하지 않고 그대로 있으면,
다른 사용자가 추가 버튼을 눌러도 사원번호는 7935가 입력됩니다.
이 때 나중에 저장하는 사용자의 프로그램에서 PK 중복입력 에러(Duplication Error)가 발생합니다.
지금 강의에서는 이 부분을 지금은 그대로 두고 나중에 해결하려고 합니다. 이 부분을 해결하면 위 화면과 같은 문제도 자연스럽게 해결되기 때문에 지금은 해결하지 않고 넘어가겠습니다.
추가 버튼을 눌러 새로운 로우를 추가한 다음 데이터를 입력하는 부분을 실습하고 있는데요.
1.emp_empno : Primary Key 이므로 empno 칼럼의 다른 데이터와 충돌 나지 않게 데이터를 넣어야 합니다.
2.emp_ename : dw 컨트롤 편집 화면에서 사용자가 직접 넣으면 됩니다.
3.emp_job : dw 컨트롤 편집 화면에서 직접 넣으면 되지만 직책이므로 아무렇게나 넣으면 안될 거 같구요.
직책 목록 같은 데서 선택하게끔 하면 좋을 거 같네요.
4.emp_deptno : 이 넘은 dept 테이블의 deptno 칼럼과 조인되므로 dept 테이블의 deptno 칼럼 값에서
선택하게 하면 좋겠어요.
5.dept_dname, dept_loc : 여기에 넣는 데이터는 실제 DB에 반영되지 않습니다만, dw 컨트롤 편집화면에는
보여져야 하겠죠? emp_deptno 에 값 넣을 때, 함께 넣으면 될 듯 합니다.
1, 2번은 해결이 된 것 같구요.
3.emp_job
목록에서 선택하게 끄럼 구현해 보겠습니다.
d_emp 를 열어보세요.
직급 칼럼(emp_job) 을 클릭 -> 속성창의 Edit 탭 선택 -> Style Type 선택
dw 칼럼의 스타일 형태를 지정할 수 있습니다.
Edit : 편집가능 (default)
CheckBox : 체크박스
DropDownDW : 다른 dw의 데이터를 조회해서 팝업창이 드랍다운 형태로 열려 보여준다.
DropDownListBox : 목록을 직접 입력(하드코딩)해서 팝업창이 드랍다운 형태로 열려 보여준다.
RadioButtons : 라디오 버튼
DropDownListBox 를 선택합니다.
Code Table 의 Display Value에 다음값을 입력합니다.
ANALYST
CLERK
MANAGER
PRESIDENT
SALESMAN
Data Value 는 Display Value와 동일하게 입력하구요.
Always Show Arrow를 체크하면 왼쪽 화면처럼 칼럼의 형태가 변경됩니다.
이제 실행해서 확인해 보세요.
직급을 클릭해도 목록 팝업창이 나오지 않습니다. 먹통이네요. 숙제에요.
힌트) Tab Order
수고하셨습니다.
*질문은 댓글에...
'파워빌더 기초강의1' 카테고리의 다른 글
파워빌더(PowerBuilder) 강의 - 28.ItemChanged event (DataWindows) (12) | 2011.10.01 |
---|---|
파워빌더(PowerBuilder) 강의 - 27.DropDownDW (DataWindow Column Style Type) (11) | 2011.09.30 |
파워빌더(PowerBuilder) 강의 - 25.GetItemString method (DataWindows) (6) | 2011.09.29 |
파워빌더(PowerBuilder) 강의 - 24.SetItem method (DataWindows) (16) | 2011.09.27 |
파워빌더(PowerBuilder) 강의 - 23.GetItemNumber method (DataWindows) (12) | 2011.09.26 |