2012-06-04 14 views
1

일부 데이터를 데이터 윈도우에 채우고 있습니다. 일부 열 이름은 "요청 번호", "상태"등입니다.PowerBuilder에서 데이터 윈도우를 처리하는 방법

"상태"열에는 "보류 중", "활성", "만료 됨"과 같은 값이 포함될 수 있습니다.

DataWindow가 채워질 때마다 PowerBuilder에서 상태가 "활성"인 레코드 수를 계산하려고합니다.

레코드 수를 얻은 후에 일부 정적 텍스트에서 개수를 채울 것입니다.

PowerBuilder를 처음 사용하는 사람이라면 누구나이 일을 어떻게 수행 할 수 있습니까?

감사

답변

4

이 당신에게 당신의 답변을 얻을 것이다, 그러나 우리는 개발자가 "물결표 지옥"으로 알고있는 파워 빌더 무엇을 소개합니다.

ll_Count = Long (dw.Describe ("Evaluate('sum (if((status = ~~~"Active~~~"),1,0))',1)")) 

물결 - 막무가내 문자열 평가의 각 단계는 다음 평가를위한 아래로 표현 종기 무엇과 관련이있다. Describe() 내부

Evaluate(<expression>, <row>) 주어진 행에 <expression>의 값을 반환합니다 (~ ~ ~ 아래로 비등하고 ~ 당신의 문자열은 큰 따옴표로 묶여있는 경우 유용하다 "로 요약된다"). (<row>은 전체 데이터 세트에서 작동하는 sum() 작업과 관련이 없으므로 유효한 행 (예 :이 예에서는 하나 이상의 행)이 맞는지 확인해야합니다.

행운을 빕니다. ,

테리.

+0

감사합니다. 그것은 완벽하게 작동했습니다. –

+1

그 표현식 - 합 (if ((status = "Active"), 1,0))을 자신의 데이터 윈도우의 숨겨진 계산 된 필드에 넣은 다음 숨겨진 필드를 평가할 수 없었습니까? 물결표에 떨어질 수도 있습니다. – Slapout

+0

첫 번째 반응은 아니오였습니다. 원하는 것보다 더 자주 평가 되었기 때문에 (예 : 스크롤 할 때마다) 비효율적이었습니다. 게다가 PowerBuilder를 원한다면 물결표를 좋아하는 법을 배워야합니다. 그러나 지금은 내 반응이 아니오입니다. 왜냐하면 숨겨진 것이 아니기 때문입니다. 그것은 바닥 글에 statictext 표시를 대체해야합니다. 나는이 솔루션을 더 좋아한다. – Terry

3

하나의 해결책은 다음 행을 계산 얻을, 당신의 기준을 사용하여 DW 데이터를 필터링하는 것입니다. 같은

뭔가 :

dw_ctrl.SetFilter("status='Active'") 
dw_ctrl.Filter() 
ll_count = dw_ctrl.RowCount() 
//... 
//don't forget to reset filter after that 
dw_ctrl.SetFilter("") 
dw_ctrl.Filter() 
+0

이 솔루션은 또한 아마 Slapout에서 언급 한 계산 된 필드를 사용합니다. 이 함수를 사용했다면 데이터 윈도우 컨트롤에서 SetRedraw (false)를 먼저 수행 한 다음 SetRedraw (true)를 수행하면 깜박임을 피할 수 있습니다. –

관련 문제