起步软件技术论坛-X3

 找回密码
 立即注册
搜索
楼主: songyun

【结】如何用DataChart来显示自定义数据集查询的结果**

[复制链接]
 楼主| 发表于 2008-4-14 08:52:44 | 显示全部楼层
还是不行,每次运行以后,第一次总能正常显示在查询范围内的结果,可是第二次选择查询时间以后,总是不能正常显示。
这是放在最前面的代码
DataSource2.DataSet.Close;
     DataSource2.DataSet.Open;
     DataSetBZSJJ.Close;
     DataSetBZSJJ.SQL.Text :='SELECT * FROM SJB ';
     DataSetBZSJJ.Open;

     // 图表显示
     DataSetBZSJJ.Close;

     DataSetBZSJJ.SQL.Text :='SELECT * FROM SJB where rzrq between '''+sysutils.DateToStr(DateTimePicker1.Date)+''' and '''+sysutils.DateToStr(DateTimePicker2.Date)+'''';

     DataSetBZSJJ.Open;
     DataSetBZSJJ.First;
     DataSource2.DataSet.Open;

     while DataSetBZSJJ.Eof = false do
     begin
     s := sysutils.FormatDateTime('YYYY',DataSetBZSJJ.FieldByName['RZRQ'].AsDateTime) +'年' + sysutils.FormatDateTime('mm',DataSetBZSJJ.FieldByName['RZRQ'].AsDateTime) +'月';

     if DataSource2.DataSet.Locate('rq',s,[]) = true then
     begin
          DataSource2.DataSet.Edit;
          DataSource2.DataSet.FieldByName['rs'].AsInteger := DataSource2.DataSet.FieldByName['rs'].AsInteger +1;
     end
     else
     begin
          DataSource2.DataSet.Edit;
          DataSource2.DataSet.Append;
          DataSource2.DataSet.FieldByName['RQ'].AsString := s;
     end;
     DataSetBZSJJ.Next;
     end;

     DataChart1.Series[0].XLabelsSource := 'rq';
     DataChart1.Series[0].YValues.ValueSource := 'rs';
回复 支持 反对

使用道具 举报

发表于 2008-4-14 10:08:35 | 显示全部楼层
不会呀,我测试了,不需要取消DataChart1 的DataSource。

请问
1、DataChart1连接的数据集是哪个?
2、这两句不需要加,DataChart的X轴和Y轴连接的永远是rq和rs这两个字段吧。如果是就不需要修改了。
   DataChart1.Series[0].XLabelsSource := 'rq';
     DataChart1.Series[0].YValues.ValueSource := 'rs';
3、DataSource2 是谁的数据源?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 11:19:13 | 显示全部楼层
1、DataChart1连接的数据集是DataSetBZSJJ1.
2、好的。
3、DataSource2 是DataChart1的数据源。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 11:44:42 | 显示全部楼层
补充说明下,我是新增了DataSetBZSJJ1来存放‘rq’和‘rs’这两个字段的,然后通过DataSource2 连接到DataChart1上。
回复 支持 反对

使用道具 举报

发表于 2008-4-14 14:18:41 | 显示全部楼层
楼主,我再对问你一句,你现在DataGrid和DataChart连接是一个数据集吗?,如果不是,请问出于啥原因不连接同一个呢?如果是一个,你把DataChart缩小一下比例,应该就能看到全部了。

感觉你里面绕了好多弯,你看,你 DataChart1连接的数据集是DataSetBZSJJ1,但也没有直接对DataSetBZSJJ1这个数据集操作,而又用一个DataSource2连接这个数据集,然后操作ataSource2

顺便, 我再说说你11楼的代码,写的有点乱,有些是没有用的语句,还有从性能上,综合上面我个人建议修改成这样更好,
   DataSource2.DataSet.Close;
     DataSetBZSJJ.Close;
     DataSetBZSJJ.SQL.Text :='SELECT * FROM SJB where rzrq between '''+sysutils.DateToStr(DateTimePicker1.Date)+''' and '''+sysutils.DateToStr(DateTimePicker2.Date)+'''';
     DataSetBZSJJ.Open;
     DataSetBZSJJ.First;
     DataSource2.DataSet.Open;
     DataSetBZSJJ.DisableControls;
     while DataSetBZSJJ.Eof = false do
     begin
     s := sysutils.FormatDateTime('YYYY',DataSetBZSJJ.FieldByName['RZRQ'].AsDateTime) +'年' + sysutils.FormatDateTime('mm',DataSetBZSJJ.FieldByName['RZRQ'].AsDateTime) +'月';
     DataSource2.DataSet.Edit;
     if DataSource2.DataSet.Locate('rq',s,[]) = true then
        DataSource2.DataSet.FieldByName['rs'].AsInteger := DataSource2.DataSet.FieldByName['rs'].AsInteger +1;
     else
     begin   
       DataSource2.DataSet.Append;
       DataSource2.DataSet.FieldByName['RQ'].AsString := s;
     end;
       DataSetBZSJJ.Next;
     end;
     DataSetBZSJJ.EnableControls;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-14 17:57:36 | 显示全部楼层
DataGrid和DataChart连接的不是同一个数据集,其实我也希望连同一个数据集,因为绕来绕去,我头都晕了。DataSetBZSJJ1只是用来存放DataChart的结果,把DataSetBZSJJ查询的结果赋值到DataSetBZSJJ1里。
采用了你的代码,可问题还是存在,就是DataGrid和DataChart结果不一致,DataChart总是不能把正确的结果显示出来。
回复 支持 反对

使用道具 举报

发表于 2008-4-15 08:57:05 | 显示全部楼层
呵呵,我的代码只是对你的代码的规范,跟解决这个问题没有必然的联系哦。

你这样,现在DataChart显示的不对,是吧,你用一个DataGrid连接到DataChart的数据源上,更直观地看到数据源中记录是否对,我怀疑数据集的记录就不对。如果数据集中的记录就不对,那么你设置断点跟踪你的代码,应该逻辑出问题了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-15 09:06:37 | 显示全部楼层
现在DataGrid和DataChart都是连接同一个数据源,DataGrid的记录就是正确的,有两条记录,但是DataChart却只能得出一条。截图如下:

1.jpg

19.21 KB, 下载次数: 253

回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-4-15 09:08:43 | 显示全部楼层
不好意思,发错图了。重新发过一次

1.jpg.jpg

20.99 KB, 下载次数: 247

回复 支持 反对

使用道具 举报

发表于 2008-4-15 09:12:36 | 显示全部楼层
请把你的资源或者做个简单重现的例子传上来我看看吧,我这里测试是正常的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-10 13:46 , Processed in 0.044162 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表