DBGird 欄位做總和 |
答題得分者是:haman
|
jace0421
一般會員 發表:20 回覆:18 積分:7 註冊:2005-07-15 發送簡訊給我 |
|
haman
中階會員 發表:46 回覆:137 積分:56 註冊:2005-03-10 發送簡訊給我 |
本上這個問題要從DataSource下手
如果是用Query的話直接下"select SUM(prise) AS 總和 from 資料表名稱"
就可以求出總和(Query1->FieldByName("總和")->AsInteger取出) 或是不更動show出來的資料,在程式中將整個資料表以loop的方式去計算你的總和也可以
下面的片段就是採用這種方式寫的,請參考...
int Sum=0; DBGrid1->DataSource->DataSet->First(); while(!DBGrid1->DataSource->DataSet->Eof) { Sum =DBGrid1->Fields[4]->AsInteger; DBGrid1->DataSource->DataSet->Next(); } DBGrid1->DataSource->DataSet->First(); ShowMessage(IntToStr(Sum));==================================== 懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@ |
jace0421
一般會員 發表:20 回覆:18 積分:7 註冊:2005-07-15 發送簡訊給我 |
|
haman
中階會員 發表:46 回覆:137 積分:56 註冊:2005-03-10 發送簡訊給我 |
int Sum=0; DBGrid1->DataSource->DataSet->First(); //DBGrid1->DataSource->DataSet可以改成ADOTable、ADOQuery、ADOConnection等等,這取決於你用什麼元件開資料庫 //這行的目的是將目前記錄的位置移到第一筆資料 while(!DBGrid1->DataSource->DataSet->Eof) //這行是判斷資料筆數是不是已經到底了(Eof:End Of File,有Eof,也就會有Bof,如何使用就看你自已了) { Sum =DBGrid1->Fields[4]->AsInteger;//加總 //其中的4指的是第5個欄位 DBGrid1->DataSource->DataSet->Next(); //將記錄的位置移到下一筆資料 } DBGrid1->DataSource->DataSet->First(); //回到第一筆 //ShowMessage(IntToStr(Sum)); Edit1->Text = IntToStr(Sum); //改到Edit裡的話寫成這樣就行了如果還有不懂的就再問吧 ==================================== 懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@ |
jace0421
一般會員 發表:20 回覆:18 積分:7 註冊:2005-07-15 發送簡訊給我 |
|
bimmer0728
一般會員 發表:1 回覆:1 積分:0 註冊:2005-08-30 發送簡訊給我 |
看了以上詳盡的解答~另有一問~
"//DBGrid1->DataSource->DataSet可以改成ADOTable、ADOQuery、ADOConnection等等,這取決於你用什麼元件開資料庫"
如果這個DBGrid1是 ADOStoredProc造成的要如何改呢?
~因為 int Sum=0;
DBGrid1->DataSource2->ADOStoredProc1->First();
..............
會有error[/blue] Albert Feng
------
Albert Feng |
rockwow
一般會員 發表:1 回覆:1 積分:0 註冊:2007-09-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |