Delphi TChart横轴时间不连续,如何跳过没有记录的日期接着显示后面的数据

qq_33311498 2017-07-22 06:18:16

如图,Delphi TChart控件,
数据是从数据库读取的,数据库里并没有记录15-18号的数据,读取后显示的是红线的效果,
横坐标设置的是时间格式,
请问,怎么让横坐标中间没有记录的日期不要显示,只显示13号,14号,19号,20号,21号,22号这几天的数据呢?
我的代码:
While not ADOQuery1.Eof do
begin
Series1.AddXY(ADOQuery1.FieldByName('LogDate').AsDateTime, ADOQuery1.FieldByName('LogKM').AsFloat);
ADOQuery1.Next;
end;
Series1.Active := true;

...全文
517 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
doloopcn 2017-08-01
  • 打赏
  • 举报
回复
Series1.AddXY(ADOQuery1.RecNo, ADOQuery1.FieldByName('LogKM').AsFloat); Series中的X座标应该有LABEL属性的,你的 ADOQuery1.FieldByName('LogDate').AsDateTime 应该是给LABEL属性才对 没有时间上机测试,仅凭印象
hongss 2017-07-25
  • 打赏
  • 举报
回复
不要用 AddXY,直接用AddY试试
lyhoo163 2017-07-23
  • 打赏
  • 举报
回复
原因是原代码,将没有数据的几天,自己加入了节点。造成这样的情况。
qq_33311498 2017-07-22
  • 打赏
  • 举报
回复
引用 1 楼 lyhoo163 的回复:
加一个条件语句,比如无值或值等于零时,不加入该节点。只要判断该日无数据,不加入该日这检点节点,就可以了。
例:

if ADOQuery1.FieldByName('LogKM').AsFloat<>0 then
Series1.AddXY(ADOQuery1.FieldByName('LogDate').AsDateTime, ADOQuery1.FieldByName('LogKM').AsFloat);


数据库的数据是这样的:


因为数据库中间的一部分日期是没有记录的,也就是数据不是连续性的,然鹅,横坐标的日期确是连续性的,没数据那部分日期是自己加上的,不是我编写的代码。这样不是我想要的,我想让那部分数据库不存在却显示在图上的日期消失。
lyhoo163 2017-07-22
  • 打赏
  • 举报
回复
加一个条件语句,比如无值或值等于零时,不加入该节点。只要判断该日无数据,不加入该日这检点节点,就可以了。 例:

  if ADOQuery1.FieldByName('LogKM').AsFloat<>0 then
    Series1.AddXY(ADOQuery1.FieldByName('LogDate').AsDateTime, ADOQuery1.FieldByName('LogKM').AsFloat); 

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧