Q&A

  • Sort, 중복제거, CalcField에 관해서
좀 복잡한 질문인 것 같아 죄송합니다.
하지만 도무지 어떻게 해야할 지 감이 안와서 질문드립니다.

파워빌더에서는 데이터윈도우에서 ComputeFiled를 쓰면 쉽게 해결되는 문제입니다.

예로 다음과 같은 데이터가 있을 때,

name       phone          
----------------------
aaa        123
bbb        456
ccc        123
bbb        321
aaa        654


이것을 계산필드를 하나 추가해서 다음과 같이 DBGrid에 나타내려고 합니다.

No(계산필드)   name       phone
-------------------------------
1              aaa        123
2              bbb        456
3              ccc        123
4              bbb        321
5              aaa        654
6              bbb        789

그리고 헤더를 클릭하면 다음과 같이 표현하려고 합니다.

No(계산필드)   name       phone   (name 헤더를 클릭한 경우)
-------------------------------
1              aaa        123
중복됨      aaa        654
3              bbb        456
중복됨       bbb        321
중복됨       bbb        789
6              ccc        123

No(계산필드)   name       phone   (phone 헤더를 클릭한 경우)
-------------------------------
1              aaa        123
중복됨        ccc        123
3              bbb        321
4              bbb        456
5              aaa        654
6              bbb        789

위 경우 계산필드(No)에는 클릭한 헤더의 위 Row 값과 자신의 값을 비교해서 같으면 "중복됨"이라고
표시되고 아니면 Row Number가 표시됩니다.

중복제거의 경우도 계산필드의 값이 "중복됨"이라고 표시된 것만 거꾸로 해서 지우면 쉽게 중복제거도 할 수 있을텐데 어떻게 해야할 지 막막합니다.

거의 몇주째 이것 가지고 책도 찾아보고 인터넷에서도 뒤져봐도 도무지 해결이 안됩니다.
꼭 좀 해결해 주시기 바랍니다.
감사합니다.
2  COMMENTS
  • Profile
    major 2002.09.28 21:09

    안녕하세요...

    이거 그러시면 디비 그리드에 나타낸것을 출력을 하는 건가여?
    그러시다면 계산 필드에 순번은 이미 들어 가있지요?
    그렇다면 필드 이벤트에 보시면 Get Text이벤트가 있는데여...
    거기에다가 전역 변수로 하나 만들어서 전역변수에 값을 넣어 두고 그 전역 변수랑 데이타 값이랑 체크해서 값을 "중복됨" 이라고 넣어주고 아니면 순번을 그대로 보여주면 될것 같아여....

    그럼 수고 하시고요...

    혹시 모르시면 연락을 주세여...

  • Profile
    신종태 2002.09.29 03:13
    답변 주셔서 감사합니다.
    대충은 이해하겠는데요, 그리드에서 현재 줄의 필드 값이랑 이전 줄의 필드 값을 비교해야 하는데 그건 어떻게 하죠?

    if (name = name[-1])

    이런 식으로 비교할 수 있다면 쉽게 해결될 수 있을 것 같은데요...
    죄송한데요 자세한 답변 부탁드립니다.
    감사합니다.