Q&A

  • '20061118'의 날자 자료를 년 월 일로 뿌리기요.
아~ 또 막혔어요... ㅋㅋ...

필드에 자료가 '20061118' 이런 식으로 됐거든요.

이 자료를  2006-11-18일 마스크 에디터로 받아서 저장한 값입니다.

저장은 '20061118'로 저장된 값인데 우선 스트링그리드 왼쪽줄에 1~12까지 찍구요

다시 cells[0,i]로 비교를 합니다. 근데 비교 값이 붙어서 임의로 제가 copy를 써서 잘랐거든요...

아`~~ 집계관련 너무 어려워요..^^ 글구 무한 루프에 빠졌어요...

저 같은 경우 자료를 '20061118'마스크로 받아서 저장된 경우라 이거 어떻게 집계를 낼 수 있나요...

글구 이런 집계 낼 수(통계)있는 간단한 예제좀 들어주세요...많이 배우고 싶습니다...

부탁합니다...꾸벅


var
   i, acount : integer;
   a : string;

begin
    with query1, stringaligngrid2 do
    begin
      close;
      sql.clear;
      sql.add('select RENT_DAY from BOOK_RENT');
      sql.add('where RENT_DAY like ''2006%''');
    //  sql.add('group by RENT_DAY');
      sql.add('order by rent_day');
      open;

         for i := 1 to 12 do
         begin
            cells[0,rowcount-1] := inttostr(i);
            rowcount := rowcount +1;
         end;
            rowcount := rowcount -1;

         for i := 1 to rowcount-1 do
         begin
            a := copy(fieldbyname('rent_day').asstring, 5,2);
           if cells[0,i] = a then
           begin
               while not (cells[0,i] <> a) do //요기가 무한 루프됩니다.
               begin
                  acount := acount +1;
                  next;
                  a := copy(fieldbyname('rent_day').asstring, 5,2);
               end;
               cells[1,i] := inttostr(acount);
               acount := 0;


         end;
      end;
end;
end;


결과는

월  |  총대여횟수   |
1          
2          
3
4
5
6
7            8
8
9
10           10
11
12

이렇게 만든 건데....

부탁해요...

글구
2  COMMENTS
  • Profile
    sallyslaw 2006.11.24 01:11
    쩝. 쿼리로 해결하면 될 것 같습니다.

    아래 쿼리는 오라클 기준입니다.

    SELECT DECODE(SUBSTR(RENT_DAY, 5, 2) AS RENT_MONTH, COUNT(*) CNT
      FROM BOOK_RENT
    WHERE RENT_DAY LIKE '2006%'
    GROUP BY SUBSTR(RENT_DAY, 5, 2)

    위와 같이 그룹핑하면 단순히 그리드에 순서대로 뿌리기만 하면 되겠지요?

    혹 데이터베이스가 다른 거라고 해도 쿼리로 해결하는 방법이 나을 것 같습니다.

  • Profile
    권순일 2006.11.24 01:34
    너무 너무 감사요...^^ 매번 이렇게 리플에 감사합니다..ㅋㅋ

    꾸 벅.. 좋은 하루되세요.