Q&A

  • for문을 6번 안돌리고 배열로 한번에 받을 방법은 없을가요?
<!--CodeS-->
procedure TfB101Q02.bt_SearchClick(Sender: TObject);
const
  Army: array[0..6] of String = ('1', '5', '6', '7', '2', '3', '4');

var
  row,  col ,icnt,sum : Integer;
  sqltxt : String;
  ifield: integer;
begin
  for col := 0 to 6 do begin   //for문 시작 ----------------------------여기부터
    sum := 0;
      with query1 do begin
         sqltxt :=  ' select substr(item_no, 1, 1), sgst_mil_cl, count(distinct item_no)'
               +    ' from std_item                                                     '
               +    ' where adm_yr = :p_year                                            '
               +    ' and sgst_Mil_cl like '+army[col] +'||''%''                        '
               +    ' group by substr(ITEM_NO,1,1), SGST_MIL_CL                         '
                           +    ' ORDER BY SUBSTR(ITEM_NO,1,1), SGST_MIL_CL                         ';

         close;
         sql.clear;
         sql.add(sqltxt);
         ParamByName('p_year').AsString := CmBx_Year.Text;
         try
            open;
         except
         end;
         first;


          for row := 1 to 9 do begin
            ifield := fields[0].AsInteger+1;
            if ifield > 6 then
              SG_Step.Cells[Col+2,ifield-1] := Fields[2].AsString
            else SG_Step.Cells[Col+2,ifield] := Fields[2].AsString;
            next;
          end;
          for icnt := 3 to 10 do begin
            sum := sum + strtointdef(sg_Step.cells[col+2, icnt-1], 0);
          end;
         sg_Step.Cells[col+2, 1] := inttostr(sum);
      end;
  end;  //for문 끝        -------------------여기까지
     for col := 2 to 10 do begin
        sum := 0;
        for row := 2 to 9 do begin
         sum :=  sum + strtointdef(sg_Step.cells[row,col-1], 0);
        end;
        sg_Step.Cells[1, col-1] := FormatFloat('#,##0', sum);
      end;

end;
<!--CodeE-->
for문 시작 ----------------- 여기부터
for문 끝    ----------------- 여기까지
그부분이요.. for문을 6번 안돌리고 배열로 한번에 받을 방법은 없을가요?
고수님들 답변 부탁드립니다.
4  COMMENTS
  • Profile
    김홍균 2005.10.05 09:02
    query 한 값을 배열에 넣으면 되지요.

    select -- from table where  group, having  ... 델파잎이 없어서..지송. ^0^;

    이렇게 해놓고 나온 레코드값들을 배열에 넣으면 될거같은데...

    글구 query 한 값을 셀에 넣는것은 여기 게시판에도 많이 있으니 확인해보시고요.

    아..배열은 2차 배열로 하심 편하겠네요.

    사실 답변이 허접한것은 본인이 허접해서 그런것이고요 ㅡㅜ

    for 문안에서 query 하는 것보다는 query 한 후에 for 문 돌리던지 하는게 나을듯해서 썼습니다.
  • Profile
    하재륜 2005.10.05 09:22
    답변 감사 드립니다..
    구체적으로 어떤식으로 쿼리한거를 배열에 넣는지 그걸 가르쳐주셨으면 합니다.
    또 배열에 넣은 값을 어떤식으로 셀에 집어넣는지도..
    제가 이번에 입문해서 많이 부족합니다..

    답변부탁드립니다..
  • Profile
    이중철 2005.10.05 19:51
    혹시 이런식으로 하면 안되나요
      sqltxt :=  ' select substr(item_no, 1, 1), sgst_mil_cl, count(distinct item_no)'
            +    ' from std_item                                                     '
            +    ' where adm_yr = :p_year                                            '
            +    ' and substr(sgst_Mil_cl, 1, 1) in (';
      for col := 0 to 6 do begin
        if col = 0 then
          sqltxt := sqltxt + '''' + army[col] + ''''
        else
          sqltxt := sqltxt + ',''' + army[col] + '''';
          
      sqltxt :=  sqltxt + ') '  
           +    ' group by substr(ITEM_NO,1,1), SGST_MIL_CL                         '
           +    ' ORDER BY SUBSTR(ITEM_NO,1,1), SGST_MIL_CL                         ';


  • Profile
    하재륜 2005.10.07 00:10