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

圖型統計分析時,該如何一一呈現結果

尚未結案
goodjimmy
一般會員


發表:20
回覆:26
積分:9
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-24 17:03:10 IP:218.162.xxx.xxx 未訂閱
各位高手:    在我設計的統計指標中,有分子和分母組成一個公式相除,形成每個月的結果 如今,要用長條圖,跑每一個月相除的結果,卻無法用迴圈控制?該如何設計呢?    分母的程式
public
        
        startday: string;//啟始日期
        endday: string;//結束日期
        Node: TTreeNode;
        pk: string;//日期欄位(主鍵)
        str: string;//sql判斷條件
        table: string;//sql表格名稱
        s1: array [1..10]of integer;//每月分子數值陣列
        s2: array [1..10] of integer;//每月分母數值陣列
        sqlmitem: string;//主程式分子
        sqlditem: string;//主程式分母
function TForm2.mSQL(mitem: string; str: string): string;
var i:integer;
begin
    DataModule1.ADOQuery2.SQL.Text := 'Select '   mitem   'as count from '   table   ' where '   str   ' and '  pk   ' between '  
                                        ''''   startday   ''''   'and  '   ''''   endday   ''''   ' group by '   pk;
    DataModule1.ADOQuery2.Open;
     DataModule1.ADOQuery2.First;
    for i:= 1 to 10 do
    begin
    s1[i] := DataModule1.ADOQuery2.FieldValues['count'];
    DataModule1.ADOQuery2.Next;
    end;
end;
分子程式
function TForm2.dSQL(ditem: string): string;
var i:integer;
begin
    DataModule1.ADOQuery3.SQL.Clear;
    DataModule1.ADOQuery3.SQL.Text := 'Select '   ditem   'as count from '   table   ' where '   pk   ' between '    ''''   
                                      startday   ''''   '  and  '   ''''  endday   ''''   ' group by '   pk;
    DataModule1.ADOQuery3.Open;
    DataModule1.ADOQuery3.First;
    for i:= 1 to 10 do
    begin
       s2[i] := DataModule1.ADOQuery3.FieldValues['count'];
       DataModule1.ADOQuery3.Next;
    end;
end;
圖表主程式
function TForm2.SQL(pk: string; sqlmitem: string; sqlditem: string; table: string): string;
var i:Integer;
begin
    try
        Form4 := Tform4.Create(Application);
        Form4.TreeView1.LoadFromFile('c:\住院.txt');
        Form4.DBChart2.LeftAxis.Title.Caption := '人數';
        Form4.DBChart2.BottomAxis.Title.Caption := '日期';
        Form4.DBChart3.Title.Text.Text := Node.Text;
        Form4.DBChart3.LeftAxis.Title.Caption := '人數';
        Form4.DBChart3.BottomAxis.Title.Caption := '日期';
        Form4.DBchart1.Title.text.Text := Node.Text;
        Form4.DBChart2.Title.Text.Text := Node.Text;
        DataModule1.ADOQuery1.SQL.Clear;
        DataModule1.ADOQuery1.SQL.Text := 'Select '   pk   ','  sqlmitem   '/'   sqlditem  ' from '   table   ' where '  
                                          pk   ' between '   ''''   startday   ''''   '  and  '  ''''   endday   ''''   ' group  
                                          by '   pk;
         DataModule1.ADOQuery1.Open;
        while not DataModule1.ADOQuery1.EOF do
        begin
            Form4.Series1.DataSource := DataModule1.ADOQUERY1;
            Form4.Series1.PieValues.ValueSource :=DataMoudle1.ADOQuery1.Fields[1].FieldName;
            Form4.Series3.DataSource := DataModule1.ADOQUERY1;
            Form4.Series3.XValues.ValueSource := DataModule1.ADOQuery1.Fields[0].FieldName;
            Form4.Series3.YValues.ValueSource := DataModule1.ADOQuery1.Fields[1].FieldName;
            Form4.Series2.DataSource := DataModule1.ADOQuery1;
            Form4.Series2.XLabelsSource := DataModule1.ADOQuery1.Fields[0].FieldName;
           Form4.Series2.YValues.ValueSource :=  DataModule1.ADOQuery1.Fields[1].FieldName;
           DataModule1.ADOQuery1.Next;
        end;            Form4.ShowModal;
    finally
        Form4.Free;
    end;
     DataModule1.ADOQuery1.Close;
end;
按鈕
procedure TForm2.Action5Execute(Sender: TObject);
var i:integer;
begin
table := 'INH ';
        pk := 'INH_YYYMM';
        mitem := 'SUM(INH_PTCT)';
        str := 'INH_SEX= '   '1';
        ditem := 'SUM(INH_PTCT)';
        mSQL(mitem, str);
        dSQL(ditem);
        for i:=1 to 4 do
        begin
        sqlmitem:=IntToStr(s1[1]);
        sqlditem:=IntToStr(s2[1]);
        SQL(pk,sqlmitem,sqlditem,table);            end;        end;
 第一次>    發表人 - 
        
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-24 22:23:07 IP:218.32.xxx.xxx 未訂閱
goodjimmy 你好: 幫你縮排 Code, 可以用 【code】...【/code】 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=7326 有空看一下本站的新手使用指引. http://delphi.ktop.com.tw/topic.php?TOPIC_ID=19264 瞄了一下您的需求, 是否考慮過 "Decision Cube" 這組 VCL 呢 ? http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26173 發表人 - Mickey 於 2004/06/24 22:30:54
Fishman
尊榮會員


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-25 11:16:39 IP:210.65.xxx.xxx 未訂閱
Hi goodjimmy,    有兩種方法,範例如下 http://delphi.ktop.com.tw/loadfile.php?TOPICID=16361462&CC=365918 方法一(In TabSheet1): 建一個 Series,DataSource 指定為 Function,Funciotn 設為 Devide,來源分別為 Series1(分子) & Series2(分母) 方法二(In TabSheet2): 自己跑迴圈將直塞給該 Series ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
goodjimmy
一般會員


發表:20
回覆:26
積分:9
註冊:2004-02-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-29 10:25:33 IP:218.162.xxx.xxx 未訂閱
謝謝以上兩位高手的回答,我已經有了頭緒了,謝謝
系統時間:2024-07-03 5:24:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!