Q&A

  • 이런 어설픈 질문 드려 죄송합니다.
환절기 입니다..감기조심 하세여..
이곳에 많은 질문과 답을 얻고 있는 초보 델피언입니다.
DB 관련해서 공부를 하고 있느데요..
이걸 어떻게 질문 드려야 할지 고민입니다.

db 오라클이구요..
테이블명 123
필드구성

행    고객번호    시작            끝
1       001        20010101     20010228
2       001        20010301     20010430
3       001        20010401     20010531
4       001        20010501     20010731
5       003        20010101     20010228
6       003        20010201     20010430
7       003        20010401     20010531
8       003        20010601     20010731
9       003        20010101     20010228
10      005        20010301     20010430
11      005        20010401     20010531
12      005        20010601     20010731
13      006        20010101     20010228
14      006        20010301     20010430
15      006        20010401     20010531
16      007        20010601     20010731
                     .
                     .
                     .
                     .

이렇게 구성이 되어 있구요..
여기서 고객번호는 중복이 있구요..
맨위 행(1) '끝' 과 (2) 행 '시작'을 비교해서 (2)행 '시작'이 크면
추출하고 아니면 (2)행 '끝' 과 (3)행 '시작을 비교하고..
고객번호가 바뀌면 그 고객번호의 처음부터 다시 하는거거든요..
빈 고객번호도 있구요...

결과:
그리드에

       001        20010401     20010531
       001        20010501     20010731
       003        20010201     20010430
       003        20010401     20010531
       003        20010101     20010228
       005        20010401     20010531
                          .
                          .
                          .
                          .

이렇게 나오면 되는겁니다.
설명드리기도 힘드네요...

머리에서 빙빙돌기만 하고 ..도와 주세요..
감사합니다.
2  COMMENTS
  • Profile
    김경록 2003.10.11 06:44
    oracle 버젼이 어떤지 알고 싶군요..

    해결 방법은
       1.  Inline view를 만들어서 rowid가 자신의 rowid에 대해서
           큰 것을 비교하여 끝과 다음행(rowid가 큰 view에서 참조되는 시작)비교
           하여 출력
           (모든 oracle 버젼에서 구현가능)
       2.  analytic function을 사용하여 다음행의 시작을 가져와
            현 행의 끝과 비교하여 조건이 맞다면 출력
            (단점, Oracle 8i부터 지원함)

    1.  select 고객번호, 시작, 끝1
           from (  
          select b.고객번호, b.시작  시작, b.끝1, a.시작 끝2
              from table1   a,
                     table1   b
            where a.rowid > b.rowid
          )
      where 끝1 <= 끝2

       이것 비스무리하게 되지 않을까여?

    2.  select 고객번호, 시작 , 끝
          from (
         select 고객번호, 시작, 끝 끝1,
                  nvl(lead(시작,1) over (partition by 고객번호 order by 고객번호, 시작), 끝) 끝2
           from table
          )
      where 끝1 <= 끝2

    요렇게 하면 안될가여???
    될텐데..



  • Profile
    별볼일없는 2003.10.09 20:22



    답변이 될지 모르겠지만... 제가 잔머리는 좀 쓰거든요 참고 하시길...

    그리드를 DBGrid만 아니면 그러니깐 stringGrid 일경우에요

    그리드에 데이터를 모두 불러 들여서 grid에서 for를 돌려

    체크를 하는겁니다. 조건에 맞으면 넘어가고 조건에 맞이 않으면 row를 삭제

    하구요 그러면 간단히 될거 같은데요

    조건식은 대충 이렇게 나올거 같네요 ^^;
    var
      aa  : string //고객명을 받는 변수
    begin
      aa := stringgrid.cells[0,1] ;
      for i:=0 to stringgrid.rowcount -1 do begin
        if i > 0 then //=>이조건은 필요없겠네.. ㅡㅡ;
          begin
            if stringgrid.cells[0,i] = aa then
              begin
                 if stringgird.cells[2,i] > stringgird.cells[2,i+1] then
                   stringgrid.removerow(i) ;
              end
            else
              aa := stringgrid.cells[0,i] ;//새로운 고객명을 넣는다.
          end ;
      end ;

    아! 그리고 그냥 stringgrid 는 removerow 속성이 없습니다.
    StringAlignGrid 를 써야 합니당...
    이상 지나가던 잔머리 였슴당
    • K모씨
      2003.10.10 20:08
      우선 파스칼 책을 참고하시는게 좋을 것 같습니다. 간단히 말씀드리면 Program XXXXXX uses &nbs...
    • 박희순
      2003.10.11 18:29
      답변 감사드립니다.. ^^ 님께서 말씀해주신것 처럼 프로젝트 소스를 수정해야 되더군요.. 하루종일 두눈 ...
    • 임형호
      2003.10.11 02:11
      중단된지 아주아주 오래됐구요. 음... 예전에... 제가 학생일때 세미나 참가자한테 무료로 주었던 기억...
    • 최병구
    • 2003.10.10 02:47
    • 0 COMMENTS
    • /
    • 0 LIKES
    • SEN
      2003.10.10 01:54
      a 가 1인경우와 그렇지 않은경우, 모두 case 문은 실행됩니다.. Result 값을 넘겨줬다고해서.. 해당 f...
    • 델파이Go!
      2003.10.10 02:24
    • 정성헌
    • 2003.10.09 23:32
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김기원
      2003.10.10 06:28
      다를수도 있지만.. 비슷한 경우가 있어서요... ^^ 예전에 Oracle에 접속 하려고 할때 프로그램(실행파일...
    • 이중철
      2003.10.10 00:58
      일반적인 Linked List라면 처리에 고심하시지 말고 TList를 사용해서 써보세요 저도 다 바꾸었어요...
    • 델파이Go!
      2003.10.10 01:48
      죄송하지만 간단한 샘플 코드라도 좀 올려주시면 안될까요? 헬프 봤는데 어떻게 사용하는지 잘 모르겠네요...
    • 델파이Go!
      2003.10.10 02:47
      관련 자료 찾다보니까 Tlist에 대해서 설명한 게 있어서 올립니다. 그리고 예전에 파워러브 델파이 라는...
    • 최용일
      2003.10.10 00:15
      안녕하세요. 최용일입니다. 레코드내에 레코드를 포함해서 정의할 수 있구요... 정의하는 표현식이 잘못...
    • 델파이Go!
      2003.10.10 00:41
    • 김정모
    • 2003.10.09 20:16
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 남혜영
      2003.10.09 20:28
      select  tt.store_cd, tt.midd_cd, tt.midd_name, floor(tt.b_amt/1000), floor(tt.c_amt/1000) ...
    • 김정모
      2003.10.09 20:58
      남혜영님 답변 감사합니다. 덕분에 잘 해결 됐습니다. 근데 한가지만 더 질문 드릴께요.. 퀵리포트의 QR...
    • 남혜영
      2003.10.09 21:05
      질문이 10000을 10,000으로 쓰고 싶다는 건가요?? QRExpr에 보시면 Expression이 있습니다. 이곳에 다음...
    • 김정모
      2003.10.09 21:13
      답변감사합니다.. 더 열씨미 노력해도 저도 님처럼 남에게 도움을 줄 수 있는 고소가 되고 싶네요
    • 남혜영
    • 2003.10.09 19:52
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 열심히
      2003.10.10 19:36
      직접 변화된 값을 넣어보시지요.. 제가 해본건 아니지만 다른분이 짜신 코드부분에 그렇게 룩업을 걸...
    • 이철승
    • 2003.10.09 19:27
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 별볼일없는
      2003.10.09 20:28
      질문을 잘못 이해하고 있는건지 모르겠지만... Fixedrows를  잡아 주시면 Fixed 컬럼은...
    • 이철승
      2003.10.09 20:45
      스크롤 해도..맨위의 위의 그림의 제목이 있는 로우가..항상 보여야되는건데여. 그러니깐..첫번째 로...
    • 별볼일없는
      2003.10.10 19:35
      ^^; 그러니깐 제목 row가 항상 고정이 되어야 된다는 말씀아니신가요? grid 속성에 Fixedrows 가있...
    • [ROOKIE]
      2003.10.09 23:29
      할일이 없어서 --; 해봤는데.. 진짜 많이 늘어나네요. 위저드로 만들면 Uses 절에 포함시키는게 이 두개...
    • YYpBD
      2003.10.10 01:59
      ShowMessage 따라가보시면 TMessageForm을 내부에서 생성시킵니다. 이미 TForm을 쓰고 있는거죠 ^^; ...
    • 최용일
      2003.10.10 00:19
      안녕하세요. 최용일입니다. 둘 다 똑같은 DLL이구 차이점이라면 OCX는 기본적으로 확장자를 .ocx를 쓰구...
    • 조장선
    • 2003.10.09 03:36
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김경록
      2003.10.11 06:44
      oracle 버젼이 어떤지 알고 싶군요.. 해결 방법은    1.  Inline view를 만들어서...
    • 별볼일없는
      2003.10.09 20:22
      답변이 될지 모르겠지만... 제가 잔머리는 좀 쓰거든요 참고 하시길... 그리드를 DBGrid만 아니면...
    • 최용일
      2003.10.10 00:26
      안녕하세요. 최용일입니다. 아래와 같이 해보세요. var     S: string;  ...
    • 오범석
    • 2003.10.09 01:44
    • 1 COMMENTS
    • /
    • 0 LIKES
    • [ROOKIE]
      2003.10.09 23:17
      트레이 아이콘을 사용할때 X 버튼을 누르면 프로그램이 종료되지 않고, 트레이 아이콘으로 숨길때 이런 현...
    • aaaa
    • 2003.10.09 01:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 임준희
    • 2003.10.09 00:50
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 송영식
    • 2003.10.09 00:05
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 전계진
      2003.10.09 18:51
      Open;  ----->  ExecSQL; 으로 써보세요
    • 송영식
      2003.10.09 21:58
      Delete가 안되는 문제가 아니고여... Delete문은 제대로 실행되는데여, Table이 차지하고 잇는 하드 용량...
    • [*^^*]
      2003.10.11 04:38
      Pack을 해주셔야되요.. delete만 한다고 용량은 줄지 않거든요..
    • 임운선
    • 2003.10.08 23:55
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2004.01.09 19:46
      이벤트 도는것이 버튼을 클릭할때인것 같은데요.. TForm에 Key입력받는 이벤트가 따로 있습니다. 그곳에 ...