<!--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번 안돌리고 배열로 한번에 받을 방법은 없을가요?
고수님들 답변 부탁드립니다.
select -- from table where group, having ... 델파잎이 없어서..지송. ^0^;
이렇게 해놓고 나온 레코드값들을 배열에 넣으면 될거같은데...
글구 query 한 값을 셀에 넣는것은 여기 게시판에도 많이 있으니 확인해보시고요.
아..배열은 2차 배열로 하심 편하겠네요.
사실 답변이 허접한것은 본인이 허접해서 그런것이고요 ㅡㅜ
for 문안에서 query 하는 것보다는 query 한 후에 for 문 돌리던지 하는게 나을듯해서 썼습니다.