全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1331
推到 Plurk!
推到 Facebook!

用迴圈寫報表時卻撈不出資料

尚未結案
電腦奴才
一般會員


發表:1
回覆:6
積分:1
註冊:2004-10-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-28 15:00:15 IP:61.58.xxx.xxx 未訂閱
各位高手幫個忙 我用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-28 21:42:53 IP:218.174.xxx.xxx 未訂閱
新來的朋友 請先看一下新手須知 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-29 09:39:33 IP:61.58.xxx.xxx 未訂閱
抱歉.....我重貼一次我的語法....
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-29 09:47:41 IP:61.58.xxx.xxx 未訂閱
引言: 抱歉.....好像使用錯誤...重貼一次我的語法....
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-29 10:18:22 IP:211.20.xxx.xxx 未訂閱
建議你對於所有 query的操作改一下 如 query1.Active:=true; 改為 Query1.Open(); query1.Active:=False; 改為 Query1.Close(); 試一下吧
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-29 11:57:07 IP:202.39.xxx.xxx 未訂閱
將 Query3 的 SQL 拿去用 SQL Explorer 來 Select 看看 語法沒錯的話, 就是 Where 條件式沒有成立的 record 所以得到的值都是 0 了.
電腦奴才
一般會員


發表:1
回覆:6
積分:1
註冊:2004-10-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-29 12:28:51 IP:61.58.xxx.xxx 未訂閱
query的操作方法我照您的方法試過了... 結果還是一樣.. 我當初也有把Query3 的 SQL 拿去用 SQL Explorer 來 Select 看看 而且也沒有沒問題,確實有資料出現,並不是0 我也試著在delphi中的query3把變數自己手動帶入 報表也確實可以呈現出我要的那筆資料 不過這樣就變成我一整排的資料都是同樣數字了
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-29 12:48:26 IP:202.39.xxx.xxx 未訂閱
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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-10-29 15:18:10 IP:61.58.xxx.xxx 未訂閱
我試著在裡面加入了這個語法 秀出來的是我Query3的語法 變數部份都有自動帶入我的值
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-10-29 15:45:00 IP:202.39.xxx.xxx 未訂閱
引言: 我試著在裡面加入了這個語法 秀出來的是我Query3的語法 變數部份都有自動帶入我的值
小弟的意思是以秀出的 Query3 的 SQL 語法到 SQL Explorer 中去測試 如果在以這語法在 SQL Explorer 中有 select 出結果 Query3 卻沒 Select 出結果 那的確是一件奇怪的事? 另外 Query3 的 SQL 中的 Where 條件式中的最後一個 and 前方少一個空白 您再檢查看看看.
電腦奴才
一般會員


發表:1
回覆:6
積分:1
註冊:2004-10-28

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-10-29 16:07:19 IP:61.58.xxx.xxx 未訂閱
真是抱歉....誤會您的意思了 我在SQL Explorer下了Query3的語法 確實都可以撈出資料 另外Query3 的 SQL 中的 Where 條件式中的最後一個 and 前方少一個空白 我也補進去了 但秀出來的結果還是一樣.....
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-10-29 17:12:22 IP:202.39.xxx.xxx 未訂閱
那就想不出問題出在哪了. 在 SQL Explorer 與實際測試的資料庫不同? 還是 ...? 可以連 DB 一同上傳至會員求助區嗎?
sunnylu
一般會員


發表:12
回覆:24
積分:7
註冊:2002-07-09

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-10-31 06:10:33 IP:211.74.xxx.xxx 未訂閱
你要不要先試看看,把資料用DBGrid抓出來, 看看有沒有資料,因為報表有時候比較難看到資料的反應
電腦奴才
一般會員


發表:1
回覆:6
積分:1
註冊:2004-10-28

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-11-01 12:17:37 IP:61.58.xxx.xxx 未訂閱
在 SQL Explorer 與實際測試的資料庫是相同的 連 DB 一同上傳至會員求助區可能有點困難,因為這個資料達到1XG    我用DBGrid可以顯示出整個資料 但到報表部份卻又一樣在query3的資料無法顯示
tonytop
中階會員


發表:6
回覆:114
積分:89
註冊:2003-12-04

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-11-19 14:43:39 IP:210.64.xxx.xxx 未訂閱
好奇怪的做法,這段跑完,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的最後一筆撈出來的,確定有值嗎?    好想冬眠
系統時間:2024-07-01 2:48:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!