디비:오라클 ,델파이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;