用迴圈寫報表時卻撈不出資料 |
尚未結案
|
電腦奴才
一般會員 ![]() ![]() 發表:1 回覆:6 積分:1 註冊:2004-10-28 發送簡訊給我 |
各位高手幫個忙
我用QReport寫報表...在button下了下列程式語法:
var
sSAREANM,sSAREAID:string;
sUSRTPNM,sUSRTP:string;
sqlstring:String;
begin
query1.Active:=false;
query1.SQL.Clear;
query1.SQL.Add('select distinct a.SAREANM,a.SAREAID from SR_AREA a, SR_CONTRACT b where a.SAREAID=b.SAREAID');
query1.Active:=true;
while not query1.Eof do
begin
sSAREANM:=query1.FieldByName('SAREANM').AsString;
sSAREAID:=query1.FieldByName('SAREAID').AsString;
query2.Active:=false;
query2.SQL.Clear;
sqlString:='select DESCPT,KEY_CODE from KEYCODE where TBL_NAME=' quotedstr('SR_CONTRACT') ' and KEY_NAME=' quotedstr('SRTYP');
query2.SQL.Add(sqlstring);
query2.Active:=true;
while not query2.Eof do
begin
sUSRTPNM:=query2.FieldByName('DESCPT').AsString;
sUSRTP:=query2.FieldByName('KEY_CODE').AsString;
query3.Active:=false;
query3.SQL.Clear;
query3.SQL.Add('select count(CUSTMER) from SR_CONTRACT where SAREAID=' quotedstr(sSAREAID) ' and ZSTATUS=' quotedstr('B') ' and CRTP=' quotedstr('A') 'and SRTYP= ' quotedstr(sUSRTP));
query3.Active:=true;
query2.Next;
end;
query1.Next;
end; 我在Detail中撈query1的資料,在sub Detail撈query2的資料
這些都可以顯示出來
但我在sub Detail撈出query3的資料時卻都是0
請問我該怎麼解決呢?
|
hahalin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
電腦奴才
一般會員 ![]() ![]() 發表:1 回覆:6 積分:1 註冊:2004-10-28 發送簡訊給我 |
抱歉.....我重貼一次我的語法....
var sSAREANM,sSAREAID:string; sUSRTPNM,sUSRTP:string; sqlstring:String; begin query1.Active:=false; query1.SQL.Clear; query1.SQL.Add('select distinct a.SAREANM,a.SAREAID from SR_AREA a, SR_CONTRACT b where a.SAREAID=b.SAREAID'); query1.Active:=true; while not query1.Eof do begin sSAREANM:=query1.FieldByName('SAREANM').AsString; sSAREAID:=query1.FieldByName('SAREAID').AsString; query2.Active:=false; query2.SQL.Clear; sqlString:='select DESCPT,KEY_CODE from KEYCODE where TBL_NAME=' quotedstr('SR_CONTRACT') ' and KEY_NAME=' quotedstr('SRTYP'); query2.SQL.Add(sqlstring); query2.Active:=true; while not query2.Eof do begin sUSRTPNM:=query2.FieldByName('DESCPT').AsString; sUSRTP:=query2.FieldByName('KEY_CODE').AsString; query3.Active:=false; query3.SQL.Clear; query3.SQL.Add('select count(CUSTMER) from SR_CONTRACT where SAREAID=' quotedstr(sSAREAID) ' and ZSTATUS=' quotedstr('B') ' and CRTP=' quotedstr('A') 'and SRTYP= ' quotedstr(sUSRTP)); query3.Active:=true; query2.Next; end; query1.Next; end; 引言: 新來的朋友 請先看一下新手須知 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19264 其中,程式碼縮排的效果 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7326 感謝合作... 給閱讀post的人方便,相信您的問題可以更快得到滿意的答案 |
電腦奴才
一般會員 ![]() ![]() 發表:1 回覆:6 積分:1 註冊:2004-10-28 發送簡訊給我 |
引言: 抱歉.....好像使用錯誤...重貼一次我的語法....var sSAREANM,sSAREAID:string; sUSRTPNM,sUSRTP:string; sqlstring:String; begin query1.Active:=false; query1.SQL.Clear; query1.SQL.Add('select distinct a.SAREANM,a.SAREAID from SR_AREA a, SR_CONTRACT b where a.SAREAID=b.SAREAID'); query1.Active:=true; while not query1.Eof do begin sSAREANM:=query1.FieldByName('SAREANM').AsString; sSAREAID:=query1.FieldByName('SAREAID').AsString; query2.Active:=false; query2.SQL.Clear; sqlString:='select DESCPT,KEY_CODE from KEYCODE where TBL_NAME=' quotedstr('SR_CONTRACT') ' and KEY_NAME=' quotedstr('SRTYP'); query2.SQL.Add(sqlstring); query2.Active:=true; while not query2.Eof do begin sUSRTPNM:=query2.FieldByName('DESCPT').AsString; sUSRTP:=query2.FieldByName('KEY_CODE').AsString; query3.Active:=false; query3.SQL.Clear; query3.SQL.Add('select count(CUSTMER) from SR_CONTRACT where SAREAID=' quotedstr(sSAREAID) ' and ZSTATUS=' quotedstr('B') ' and CRTP=' quotedstr('A') 'and SRTYP= ' quotedstr(sUSRTP)); query3.Active:=true; query2.Next; end; query1.Next; end; |
mflyy
初階會員 ![]() ![]() 發表:3 回覆:44 積分:44 註冊:2002-08-13 發送簡訊給我 |
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
電腦奴才
一般會員 ![]() ![]() 發表:1 回覆:6 積分:1 註冊:2004-10-28 發送簡訊給我 |
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
var sSAREANM,sSAREAID:string; sUSRTPNM,sUSRTP:string; sqlstring:String; begin query1.Active:=false; query1.SQL.Clear; query1.SQL.Add('select distinct a.SAREANM,a.SAREAID from SR_AREA a, SR_CONTRACT b where a.SAREAID=b.SAREAID'); query1.Active:=true; while not query1.Eof do begin sSAREANM:=query1.FieldByName('SAREANM').AsString; sSAREAID:=query1.FieldByName('SAREAID').AsString; query2.Active:=false; query2.SQL.Clear; sqlString:='select DESCPT,KEY_CODE from KEYCODE where TBL_NAME=' quotedstr('SR_CONTRACT') ' and KEY_NAME=' quotedstr('SRTYP'); query2.SQL.Add(sqlstring); query2.Active:=true; while not query2.Eof do begin sUSRTPNM:=query2.FieldByName('DESCPT').AsString; sUSRTP:=query2.FieldByName('KEY_CODE').AsString; query3.Active:=false; query3.SQL.Clear; query3.SQL.Add('select count(CUSTMER) from SR_CONTRACT where SAREAID=' quotedstr(sSAREAID) ' and ZSTATUS=' quotedstr('B') ' and CRTP=' quotedstr('A') 'and SRTYP= ' quotedstr(sUSRTP)); 這裡先加一行檢查實際所下的 SQL 為何? ShowMessage(Query3.SQL.Text); query3.Active:=true; query2.Next; end; query1.Next; end; |
電腦奴才
一般會員 ![]() ![]() 發表:1 回覆:6 積分:1 註冊:2004-10-28 發送簡訊給我 |
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
電腦奴才
一般會員 ![]() ![]() 發表:1 回覆:6 積分:1 註冊:2004-10-28 發送簡訊給我 |
|
hagar
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
sunnylu
一般會員 ![]() ![]() 發表:12 回覆:24 積分:7 註冊:2002-07-09 發送簡訊給我 |
|
電腦奴才
一般會員 ![]() ![]() 發表:1 回覆:6 積分:1 註冊:2004-10-28 發送簡訊給我 |
|
tonytop
中階會員 ![]() ![]() ![]() 發表:6 回覆:114 積分:89 註冊:2003-12-04 發送簡訊給我 |
好奇怪的做法,這段跑完,query3的資料是從query2的最後一筆資料取出
sUSRTPNM:=query2.FieldByName('DESCPT').AsString;
sUSRTP:=query2.FieldByName('KEY_CODE').AsString;
得出的SQL,而QUERT2的資料是從QUERY1的最後一筆資料取出
sSAREANM:=query1.FieldByName('SAREANM').AsString;
sSAREAID:=query1.FieldByName('SAREAID').AsString;
最後QUERY1和QUERY2都停留在最後一筆,若確定這樣跑出來的結果是你所要的,那問題應該是出在sub Detail裡,你是用QRLABEL手動指定值(怎麼給?),或是用QRDBText資料感知,不管用何種方式,如我上面所述,QUERY1和QUERY2都在最後一筆,QUERY3是從QUERY2的最後一筆撈出來的,確定有值嗎?
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |