Q&A

  • 쿼리결과를 스트링그리드에 뿌릴때 이것좀알켜주세염..ㅜㅜ
디비:오라클 ,델파이5.0



스트링그리드에...

다음과같이 있습니다...



일 월 화 수 목 금 토

10대미만

10대

20대

30대

40대

50대이상



이케 해놓구..... 다음과 같이 쿼리를 만들어서 돌리면

해당셀에.....쿼리값들이 들어가는데염.....



문제는 위의 스트링그리드를 변경했을때 말인데염......

만약.... 10대,20대,30대만 구할려구.....스트링그리드에서 10대미만,40대,50대이상을 빼면여..... 결과값이 제대로 안나오는군염.....

for문을 차례대로 돌려서 그런거 같은데....

수정을 어케해야할지 모르겠어염......

참...이렇게 선택해서 뺄경우 아래에서 while문을 없애야 돌아가더군염....

안그러믄 무한루프로 돌아가더라구염....^^

무슨말인지 아실려나 모르겠네염.... 말주변이 없어서리...(^^)>

암튼 전 쿼리에 결과값중에 스트링그리드에 있는 해당결과값만 스트링그리드에 나타낼려구한답니다.....

답변 제발 부탁합니다.......ㅜㅜ



procedure Tfrmsanalysis.BitBtn2Click(Sender: TObject);

var

k,y:integer;

datebegin,dateend:string;

begin

datebegin:=formatdatetime('YYYY-MM-DD',datefirst.datetime);

dateend:=formatdatetime('YYYY-MM-DD',datelast.datetime);

//기간별검색을 하기위함....



with query1 do

begin

Close;

sql.clear;

sql.add(' select a.week, a.age, a.price, round((a.price/b.price*100),2) avg ' );

sql.add(' from (select ''01'' key, substr(to_char(b.buyday,''DDDD''),4,1) week, ');

sql.add(' substr((to_char((to_number(to_char(sysdate,''YYYY''))-to_number(to_char(c.birth,''YYYY''))+1)- ');

sql.add(' (substr((to_char(to_number(to_char(sysdate,''YYYY''))-to_number(to_char(c.birth,''YYYY''))+1)),length((to_char(to_number(to_char(sysdate,''YYYY''))-to_number(to_char(c.birth,''YYYY''))+1))),1)))),1,1) age, ');

sql.add(' sum(b.price) price ');

sql.add(' from crm_customer c,crm_buy b ');

sql.add(' where c.ccode=b.ccode ');

sql.add(' group by substr(to_char(b.buyday,''DDDD''),4,1), ');

sql.add(' substr((to_char((to_number(to_char(sysdate,''YYYY''))-to_number(to_char(c.birth,''YYYY''))+1)- ');

sql.add(' (substr((to_char(to_number(to_char(sysdate,''YYYY''))-to_number(to_char(c.birth,''YYYY''))+1)),length((to_char(to_number(to_char(sysdate,''YYYY''))-to_number(to_char(c.birth,''YYYY''))+1))),1)))),1,1)) a, ');

sql.add(' (select ''01'' key, sum(price) price ');

sql.add(' from crm_buy) b ');

sql.add(' where a.key = b.key ');

open;



first;

while Not EOF do begin





for k:=1 to sg.colcount-1 do begin

for y:=1 to sg.rowcount-1 do begin





if sg.Cells[k,0]=FieldByName('week').asstring then begin

if sg.Cells[0,y]=FieldByName('age').asstring then begin

case rg.ItemIndex of

0:sg.cells[k,y]:= currtostr(FieldByName('price').ascurrency);

1:sg.cells[k,y]:= floattostr(Fieldbyname('avg').asfloat);

end;

next;

end

else

sg.cells[k,y]:='0';



end

else

sg.cells[k,y]:='0';



end;

end;

end;

end;



end;



0  COMMENTS