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

在DBChart中如何将字段值与自定义的坐标值进行比较?

答題得分者是:Mickey
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-25 16:53:16 IP:218.15.xxx.xxx 未訂閱
例:X坐标值为(01,02,03,……12月份),Y坐标值为sl(数量) 库:bianma(编码) jzrq(日期) sl(数量) 0001 03-1-12 16 0018 03-2-10 18 0027 03-1-8 8 如何能使每月的sl(数量)显示在X坐标中相应的位置上?如何做比较?X坐标值可以写成中文吗? 發表人 - deity 於 2003/07/25 21:30:18
Mickey
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-28 23:21:57 IP:218.32.xxx.xxx 未訂閱
deity 你好 :    看來你的問題尚未獲得解決.    可否告知你所使用的數據庫類型(MSSQL ? Sybase? Oracle? Access? ...)    有空時我試試.
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-29 09:45:19 IP:218.15.xxx.xxx 未訂閱
Mickey前辈,不好意思,由于是新手,所以很多东西都不懂,以致让前辈多次费心。 上次我尝试多次还是不能根本解决问题,所以只好多麻烦前辈一次了。 我用的是dbf表
Mickey
版主


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-29 12:33:59 IP:218.163.xxx.xxx 未訂閱
"SubTotal" 對應到 DBChart Y 軸, "MM" 對應到 DBChart X 軸 SQL 如下 :
select sum(sl) SubTotal, '01月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=1
union
select sum(sl) SubTotal, '02月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=2
union
select sum(sl) SubTotal, '03月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=3
union
select sum(sl) SubTotal, '04月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=4
union
select sum(sl) SubTotal, '05月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=5
union
select sum(sl) SubTotal, '06月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=6
union
select sum(sl) SubTotal, '07月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=7
union
select sum(sl) SubTotal, '08月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=8
union
select sum(sl) SubTotal, '09月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=9
union
select sum(sl) SubTotal, '10月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=10
union
select sum(sl) SubTotal, '11月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=11
union
select sum(sl) SubTotal, '12月' MM
from orders
where EXTRACT(MONTH FROM jzrq)=12
order by MM
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-30 23:21:58 IP:218.15.xxx.xxx 未訂閱
前辈:可能是我的表达不准确 我是想让X轴,固定为(01,02,03,04,05,06,07,08,09,10,11,12;12个月都有),每个月的记录相应地显示在每个月的范围内,从而体现出价格的走势.因为有的月份并没有入库,所以按照前辈所说的方法,在X轴中就有间断(01,06,08); 另:如果一个月内有两次入库,它会分开显示出两个(10月),而不是在9月~10月之间显示出两个记录.
Mickey
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-31 08:32:24 IP:218.163.xxx.xxx 未訂閱
那個 SQL 你試過了嗎 ? 我試的結果是, 一定有 12 筆資料, 只是若無 1 月的資料, sum(sl)會有空值. 做了一個 Sample , 用 C:\Program Files\Common Files\Borland Shared\Data\Orders.db 為資料檔, 參考看看吧. http://delphi.ktop.com.tw/loadfile.php?TOPICID=10938111&CC=244629
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-31 09:02:52 IP:218.15.xxx.xxx 未訂閱
前辈:那个SQL我试过, 不过我不是求和,而是直接用字段。 出现的问题就是当月份有两个的时候,就有问题:03-2-23,03-02-25 ,它就会显示出两个02来。而出现空值时,它就不显示该月份,出现了间隔。 按您的意思,就是所有的1月份或2月份求和,然后统计出来,这样可以会避免出现有两个月份。 不知有无理解错前辈的意思,还望前辈多指点。
Mickey
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-31 22:40:58 IP:218.32.xxx.xxx 未訂閱
引言: 前辈:那个SQL我试过, 不过我不是求和,而是直接用字段。 出现的问题就是当月份有两个的时候,就有问题:03-2-23,03-02-25 ,它就会显示出两个02来。而出现空值时,它就不显示该月份,出现了间隔。 按您的意思,就是所有的1月份或2月份求和,然后统计出来,这样可以会避免出现有两个月份。 不知有无理解错前辈的意思,还望前辈多指点。
SQL 不用 SUM(sl) 當然會每一筆都 select 出來, 求取每個月的 sl 總和, 難道不是你要的 ? 是我誤會你的問題嗎 ? 如果是要每個月的 sl 平均, 可用 AVG(sl), 如果是要每個月的 sl 最大, 可用 MAX(sl), 如果是要每個月的 sl 最小, 可用 MIN(sl).
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-08-01 09:07:00 IP:218.15.xxx.xxx 未訂閱
前辈, 不好意思,可能是我表达方面不够明确,所以使前辈产生误会; 我要的是每笔资料在各个月的价格情况。 如产品A: 在1 月份时进货一次:¥20.4 在2 月份时进货一次:¥27.4 在3 月份时进货二次:¥90,¥20 在4 月份时进货一次:¥20.4 5,6月份无进货 ……    然后做个统计。 显示出产品在一年中每个月的进货价格的走向图。 目的就是为了,了解产品A在哪个月进货时价格最低,哪个月进货时价格最高,在各个月进货的次数。 问题:显示出两个三月,而不是在“三月”中显示出两个记录; 其他月份如图所显示出的效果,省略了7~12月。 见图: 發表人 - deity 於 2003/08/01 09:13:26 發表人 - deity 於 2003/08/01 09:20:26
Mickey
版主


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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-08-06 13:50:13 IP:218.163.xxx.xxx 未訂閱
用 TChart 做了個 Sample , 參考看看 http://delphi.ktop.com.tw/loadfile.php?TOPICID=11056738&CC=247282
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-08-06 21:31:00 IP:218.15.xxx.xxx 未訂閱
烦劳前辈了。我等下就试。
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-08-10 22:39:05 IP:218.15.xxx.xxx 未訂閱
前辈,按您的方法,如果出现2月份没有记录的话,在X轴就不会显示出2月来,X轴为1,3,4,5……。这样看起来有点怪怪的。 如何能在X轴显示所有的月份,当然也要对应该月的记录。空记录的话,就只在X轴显示出月份标志来。
Mickey
版主


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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-08-11 15:32:09 IP:218.163.xxx.xxx 未訂閱
給你的 Sample 稍稍改一下就可以了....
var yy,mm,dd,mtmp,i : word;
    XOffSet : double;
    MonthChanged : boolean;
begin
  query1.Open;
  XOffSet := 0.1;
  mtmp := 0;
  Series1.CustomBarWidth := 3;
  while not query1.Eof do begin
    mm := query1.fieldbyname('MM').asinteger;
    MonthChanged := (mm<>mtmp);
    if MonthChanged then begin
      for i := mm-1 downto mtmp 1 do
        Series1.AddXY(i,0,Format('%-2.2d',[i]) '月',clNone);          Series1.AddXY(mm,query1.fieldbyname('ItemsTotal').AsFloat,
                    Format('%-2.2d',[mm]) '月',clRed);
    end
    else
      Series1.AddXY(Series1.XValues.Last XOffSet ,
                    query1.fieldbyname('ItemsTotal').AsFloat,
                    '',clRed);
    mtmp := mm;
    query1.Next;
  end;
end;
發表人 - Mickey 於 2003/08/11 15:38:54
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-08-11 23:54:07 IP:218.15.xxx.xxx 未訂閱
烦劳前辈您多日,问题基本上解决。不过如果说某个月的记录数超过了10次时,它就会把下个月记录给冲掉。 我把XOffSet 变为0.05,发现记录能基本上显示完全,不过显示时就会粘得太紧,不明显,请问前辈,能更好地处理这种情况吗?
Mickey
版主


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

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-08-12 08:35:05 IP:218.163.xxx.xxx 未訂閱
我想不出什麼好辦法, 因為統計圖寬度有限, 今天即使解決了單月 10 筆記錄畫不下的問題, 明天如果 100 筆呢 ? 其實, 我一開始就想說, 既然是圖形, 當然是需要 "一目了然", 不應該太過複雜, 否則就失去意義了. 資料量大, 還是用報表來展現比較恰當, 如果須堅持用圖形展現, 那...原始資料就必須先做過整理(例如每週取出一平均值). 發表人 - Mickey 於 2003/08/12 08:39:57
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-08-12 12:35:14 IP:218.15.xxx.xxx 未訂閱
前辈说的是,其实这只是我的一个假设,问题本没有那么多的。 谢谢前辈多日的教导。真是麻烦前辈了!
系統時間:2024-11-23 8:54:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!