* 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

수고하셨습니다.


*질문은 댓글에...


Posted by A4M
,