計算有多少人~大大~剩下兩個問題囉~~ |
尚未結案
|
inera001
一般會員 發表:5 回覆:14 積分:3 註冊:2004-12-07 發送簡訊給我 |
參考大大資料下去做修改,果然越來越順利的,最後只剩下兩個問題了~~~
其他問題都解決了~~^^~~
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 發送簡訊給我 |
您好! 有關問題一有些不明白, 雖然是去抓欄位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 發送簡訊給我 |
謝謝大大,清除資料庫的問題已經解決了~~~
嗯~~我的問題是:
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 發送簡訊給我 |
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 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
BOSS
中階會員 發表:70 回覆:79 積分:64 註冊:2006-11-01 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
引言: 嗚嗚~還是不行,全部都是 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 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |