線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1314
推到 Plurk!
推到 Facebook!

計算有多少人~大大~剩下兩個問題囉~~

尚未結案
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-08 17:04:05 IP:218.165.xxx.xxx 未訂閱
參考大大資料下去做修改,果然越來越順利的,最後只剩下兩個問題了~~~ 其他問題都解決了~~^^~~ 1.我要計算選5的人有幾人,可是跑出來會變成一共有幾筆資料就秀到哪個欄位上,我是要計算有幾人,不是有幾筆啦~~~>< count1:=0; count2:=0; count3:=0; count4:=0; count5:=0; for i:=1 to num do begin if Table1.FieldByName('Q1').AsInteger = 5 then count1 := count1 1; if Table1.FieldByName('Q1').AsInteger = 4 then count2 := count2 1; if Table1.FieldByName('Q1').AsInteger = 3 then count3 := count3 1; if Table1.FieldByName('Q1').AsInteger = 2 then count4 := count4 1; if Table1.FieldByName('Q1').AsInteger = 1 then count5 := count5 1; end; Label21.Caption := FloatToStr(count1); Label22.Caption := FloatToStr(count2); Label23.Caption := FloatToStr(count3); Label25.Caption := FloatToStr(count4); Label26.Caption := FloatToStr(count5); 2.如何清除table資料!因為他的資料越來越多了~~~我希望清掉從第一列開始記
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-08 18:29:51 IP:202.62.xxx.xxx 未訂閱
您好!    有關問題一有些不明白, 雖然是去抓欄位Q1選哪一個值的筆數, 但得到的筆數不就是抓相對的人數嗎?    清除資料表的方法如下: 
begin
  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('Delete From 資料表');
  Query1.ExecSQL;
  //因為此方法是清除資料表中所有的資料錄, 所以請謹慎使用
  //先把資料庫檔案复制一個留做備份吧
  Table1.Close;
  Table1.Open;
  //將Table重新Close再Open的目的是讓這個資料集元件取得資料庫中
  //最新的資料情況
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-08 18:48:01 IP:218.165.xxx.xxx 未訂閱
謝謝大大,清除資料庫的問題已經解決了~~~ 嗯~~我的問題是: Table↓ Q1 Q2 ----- 5  4 4  3 3  3 5  5 1  3 ----- Delphi↓ Q1~5.____人  4.____人   3._____人   2._____人  1._____人 這時Q1、Q2要填入 Q1~5._2__人  4._1__人   3.__1__人   2.__1__人  1.__0__人 Q2~5._1__人  4.__1_人   3.__3__人   2.__0__人  1.__0__人    這樣大大了解我的問題嗎~麻煩大大了~對不起唷~~~ 突然發現,我還有問題~因為在寫程式總會突然新增什麼東西,然後去寫程式,寫不出來~~ 新的問題是,當我資料庫沒東西時,我要 > 發表人 -
BOSS
中階會員


發表:70
回覆:79
積分:64
註冊:2006-11-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-08 23:25:16 IP:211.76.xxx.xxx 未訂閱
var
 cn1,cn2,cn3,cn4,cn5,q1:Integer;
begin
 cn1:=0;
 cn2:=0;
 cn3:=0;
 cn4:=0;
 cn5:=0;
 with ADOTable1 do
 begin
   while not Eof do
   begin
     q1:=fieldbyname('q1').AsInteger;
     case q1 of
       1:cn1:=cn1 1;
       2:cn2:=cn2 1;
       3:cn3:=cn3 1;
       4:cn4:=cn4 1;
       5:cn5:=cn5 1;
     end;
     Next;
   end;
 end;
 Label1.Caption:='q1=' IntToStr(cn1) ' 人';
 Label2.Caption:='q2=' IntToStr(cn2) ' 人';
 Label3.Caption:='q3=' IntToStr(cn3) ' 人';
 Label4.Caption:='q4=' IntToStr(cn4) ' 人';
 Label5.Caption:='q5=' IntToStr(cn5) ' 人';    另外沒資料時
if ADOTable1.recordcount <> 0 then 
  avg1:=sum1/num
else
  showMessage('資料庫並無任何資料');    
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-08 23:51:39 IP:218.165.xxx.xxx 未訂閱
嗚嗚~還是不行,全部都是 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=19768154&CC=442106"> 上面的圖是我按Bottom出來的結果,下面的圖是資料庫的資料!(只擷取某一部份) 嗚嗚~~ 還有有關資料庫沒資料時的程式,如果不只一筆,程式是不是需要很長很長呀! 不知道有沒有簡短的寫法><
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-09 21:48:45 IP:220.132.xxx.xxx 未訂閱
Hi, 你要統計的資料, 可以藉由 sql 的集總函數(aggregate function), 如 count, sum, avg, max, min 等來計算, 或是統計出來, 可以節省大量在客戶端程式計算的時間. 以你的問題為例, 要找出 Q1 的計算結果, 可以利用 select Q1, count(*) from tablex group by Q1 如此一來便能獲得統計的結果值, 配合客戶端的程式處理一下即可順利將結果顯示在畫面上!!
BOSS
中階會員


發表:70
回覆:79
積分:64
註冊:2006-11-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-09 23:23:10 IP:211.76.xxx.xxx 未訂閱
我有測試過資料都跑的出來你設中斷點去debug
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-10 09:22:23 IP:202.62.xxx.xxx 未訂閱
引言: 嗚嗚~還是不行,全部都是 src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=19768154&CC=442106"> 上面的圖是我按Bottom出來的結果,下面的圖是資料庫的資料!(只擷取某一部份) 嗚嗚~~ 還有有關資料庫沒資料時的程式,如果不只一筆,程式是不是需要很長很長呀! 不知道有沒有簡短的寫法><
您好! 程式碼長不長是一回事, 當然簡短的寫法會比較好一些, 但更重要的是執行效率上的提高, 以此類問題而言, 使用SQL語法是最快的方法, 您是否考慮用SQL來寫的, 另外, 您在完成清空資料表的時候已經有使用到Query元件, 那樣就可直接使用此Query元件來完成相關的SQL指令, 不用再另外加入Query元件. 如果還是不選擇使用SQL語法來做, 請貼出您的程式碼部分, 大家再幫你看看! ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-10 11:45:05 IP:210.65.xxx.xxx 未訂閱
Hi inera001,    Sorry !! 手癢插一下花!! 誠如 timhuang 及 cashxin2002 大大所言,使用 SQL Command 也是一解法,Command 大約如下(假設四個 Question,For SQL Server)
SELECT  'Q1' AS QUESTION,
        ISNULL(SUM(CASE Q1 WHEN 5 THEN 1 ELSE 0 END),0) AS A5, 
        ISNULL(SUM(CASE Q1 WHEN 4 THEN 1 ELSE 0 END),0) AS A4, 
        ISNULL(SUM(CASE Q1 WHEN 3 THEN 1 ELSE 0 END),0) AS A3, 
        ISNULL(SUM(CASE Q1 WHEN 2 THEN 1 ELSE 0 END),0) AS A2, 
        ISNULL(SUM(CASE Q1 WHEN 1 THEN 1 ELSE 0 END),0) AS A1,
        ISNULL(SUM(Q1),0) AS TOTAL,
        ISNULL(SUM(Q1)/CAST(SUM(1) AS REAL),0) AS AVERAGE
FROM    T1
UNION ALL
SELECT  'Q2' AS QUESTION,
        ISNULL(SUM(CASE Q2 WHEN 5 THEN 1 ELSE 0 END),0) AS A5, 
        ISNULL(SUM(CASE Q2 WHEN 4 THEN 1 ELSE 0 END),0) AS A4, 
        ISNULL(SUM(CASE Q2 WHEN 3 THEN 1 ELSE 0 END),0) AS A3, 
        ISNULL(SUM(CASE Q2 WHEN 2 THEN 1 ELSE 0 END),0) AS A2, 
        ISNULL(SUM(CASE Q2 WHEN 1 THEN 1 ELSE 0 END),0) AS A1,
        ISNULL(SUM(Q2),0) AS TOTAL,
        ISNULL(SUM(Q2)/CAST(SUM(1) AS REAL),0) AS AVERAGE
FROM    T1
UNION ALL
SELECT  'Q3' AS QUESTION,
        ISNULL(SUM(CASE Q3 WHEN 5 THEN 1 ELSE 0 END),0) AS A5, 
        ISNULL(SUM(CASE Q3 WHEN 4 THEN 1 ELSE 0 END),0) AS A4, 
        ISNULL(SUM(CASE Q3 WHEN 3 THEN 1 ELSE 0 END),0) AS A3, 
        ISNULL(SUM(CASE Q3 WHEN 2 THEN 1 ELSE 0 END),0) AS A2, 
        ISNULL(SUM(CASE Q3 WHEN 1 THEN 1 ELSE 0 END),0) AS A1,
        ISNULL(SUM(Q3),0) AS TOTAL,
        ISNULL(SUM(Q3)/CAST(SUM(1) AS REAL),0) AS AVERAGE
FROM    T1
UNION ALL
SELECT  'Q4' AS QUESTION,
        ISNULL(SUM(CASE Q4 WHEN 5 THEN 1 ELSE 0 END),0) AS A5, 
        ISNULL(SUM(CASE Q4 WHEN 4 THEN 1 ELSE 0 END),0) AS A4, 
        ISNULL(SUM(CASE Q4 WHEN 3 THEN 1 ELSE 0 END),0) AS A3, 
        ISNULL(SUM(CASE Q4 WHEN 2 THEN 1 ELSE 0 END),0) AS A2, 
        ISNULL(SUM(CASE Q4 WHEN 1 THEN 1 ELSE 0 END),0) AS A1,
        ISNULL(SUM(Q4),0) AS TOTAL,
        ISNULL(SUM(Q4)/CAST(SUM(1) AS REAL),0) AS AVERAGE
FROM    T1
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
inera001
一般會員


發表:5
回覆:14
積分:3
註冊:2004-12-07

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-12 15:35:28 IP:218.165.xxx.xxx 未訂閱
非常感謝各位大大,終於寫出來了~我不知道這篇該給誰加分,所以我就給最後一個回答的~~非常感謝你們! 至於程式碼的長度,我有想過要貼,但是真的是太..............太長了~~~ 5、60行應該有吧!所以之前我都只有貼一點點~~~不過問題解決了!非常感謝! 如果以後還有遇到什麼問題!還要麻煩各位了~~~
系統時間:2024-05-19 7:11:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!