DBChart在X轴数据遇到相同的数值时如何将他归为一个柱状图?

解决方案 »

  1.   

    数据图表DBChart的使用:
    一、显示数据柱
    数据图表DBChart对象用于在报表中插入图表。双击数据图表对象,可以调出图表编辑器: Chart选项:(1)Series类型页可以选择十一种类型的图表以及下列选项,按Add就可以选择图表的类型(3D :显示3维图表);按Title..就可以修改图表的名称。(2)General页(图表的普通设置)其中'Print Preview'按钮是用于打印图表。'Zoom'为缩放设置。'Margins(%)'是设置整个图表的位置。(3)Axis页(轴的相关设置)
    'Title'页用于设置竖轴的相关属性,Title设置要显示的竖轴的名称
    'Labels'页中的'Font'按钮用于设置左边刻度的字体大小,Size用于设置各轴的距离,Angle用于设置刻度的宽度,Min.Separation%用于设置刻度的比例。
    Valuse Format用于设置格式(一般不用改)
    'Position'页用于位置的设置,Position%是设置刻度位置,Start是设置刻度高度,(4)Titles页(图表标题的设置)'Font'按钮用于设置字体大小,Back Color设置颜色,Alignment用于设置标题的位置。(5)Legend页(右上角说明的设置)Visible选项是否显示说明;Back Color设置说明背景的颜色;Font设置说明的字体大小;Frame设置说明的边线;Resize Chart选项用于设置是否让图表覆盖说明;
    Inverted选项用于设置从左或从右显示字段颜色;Position选项用于设置说明在图表组件中的显示的位置;Margin设置图表的大小;Legend Style设置说明的风格;
    Text Style设置说明的内容(Plain字段内容、Left Value值+字段、Right Value字段+值、Left Percent百分率+字段、Right Percent字段+百分率、
                            X Value从0开始);
    Dividing Lines设置说明中是否显示分格线;Shadow设置说明的背景属性;(6)Panel页(面板的设置)Bevel Inner、Bevel Outer设置图表边框属性;Width设置高度;Back Image设置是否在图表组件上显示图像;Panel Color设置面板的颜色;
    Gradiend用于设置在面板中显示特效颜色(Direction用于设置特效位置);(7)Walls页(设置刻度的其它属性)(8)3D页(3D效果的设置)Series选项:(1)Format页(数据柱的风格)在Color Each中打勾,就可使用多种颜色显示,
    color按钮用于设置颜色,
    Style用于设置图表的风格(Rectangle长方体,Pyramid三角体,Invert.PyramId倒三角体,Cylinder圆柱体,Ellipse圆形,Arrow箭头,
                                                                 Rect.Gradient立体长方体[推荐],Cone不显示),
    Border按钮设置数据柱的边线属性,
    Pattern按钮设置数据柱的显示类型,
    Bar Width设置数据柱间的距离,Bar Offset设置数据柱与纵刻度的距离,(2)General页(数据柱的一般设置)Show in Legend选项是否显示右上角的数据说明,Horizontal Axis设置横刻度的位置,Vertical Axis设置纵刻度的位置,Formats设置数据柱的格式,(3)Marks页(标记,数据内容显示设置)数据内容显示设置:在Style中选相关的选项,标记的类型:Value值、Percent百分率、Label字段内容、Label and Percet字段内容+百分率、Label and Value
         字段内容+值、Legend与右上角的数据说明一样、Percent Total百分率+值、Label&Percent Total字段内容+百分率+值。
    Visible选项是否显示标记;Transparent选项是否显示标记的颜色;Clipped选项是否让标记超过刻度;Arrows用于设置标记下垂线的属性。
    Back Color设置标记的颜色;Font设置标记的字体大小;Border设置标记的边线;(4)Data Source页:(数据连接)要连接图表到数据字段,通过SQL语句查询,取得两个字段的数据(如:品种名,吨数(各品种的合计数))。
    例:{ADOQuery1组件的SQL语句}
    select a.kindName,sum((0.01*0.001)*(b.MZ-b.PZ)) as KZ form KindInfo a inner join Weighinfo b on a.kindName=b.kName1 Group by a.kindName这些数据字段的内容将用于设置图表的变量和图例。图例通常显示在X轴上,变量在图表的Y轴上。当生成报表时,选择的Text对象的内容将保存到图表对象的备注中。
    双击DBChart对象,在Editing DBChart对话框下的'Series'页进行设置,在下拉列表框中选择Series对象,在Data Source页的下拉框中选择'DataSet',
    再在dataset中选对应的查询组件(ADOQuery1),在Labels中选择'品种'字段对应的字段名,再在Bar中选择'吨数'字段对应的字段名,注意X轴项不用写。X轴不能选择字符型字段。冥思苦想不得其法。后来硬着头皮看英文帮助,终于有所收获。dbchart1.Series[0].XLabelsSource:='mc';-------------
    Series[0]代表我的一个图表,mc代表我的一个字符型字段。在打开dbchart1.Series[0]所对应的AdoQuery后,用上面这个语句,
    就可以实现在Dbchart中显示字符型字段。别看就一条语句。你要是不知道就是没办法。例:在程序中设置:
    begin
    with DBChart1 do
    begin
    with Series[0] do
    begin
    DataSource:=ADOQuery1;
    XValuse.ValueSource:='字段';
    YValuse.ValueSource:='字段';
    end;
    end;
    end;   procedure    TForm10.Button1Click(Sender:TObject);   
       begin   
           datam.SQ_WeiFaTongJi.SQL.Text:='select R.PHOTO,count(R.PHOTO) cross from table  R  group by R.PHOTO';   
           datam.SQ_WeiFaTongJi.Open;   
           dbchart1.Series[0].DataSource:=datam.Data_WeiFaTongJi.DataSet;   
           dbchart1.Series[0].XLabelsSource:='photo';   
           dbchart1.Series[0].YValues.ValueSource:='cross';   
           dbchart1.Series[0].Active:=true;     
       end;   
        
       procedure    TForm10.Button2Click(Sender:TObject);   
       begin   
         datam.SQ_WeiFaTongJi.SQL.Text:='select  R.weizhang,count(R.weizhang) yi  from  table  R  group by  R.weizhang';   
         datam.SQ_WeiFaTongJi.Open;   
         dbchart1.Series[0].DataSource:=datam.Data_WeiFaTongJi.DataSet;   
         dbchart1.Series[0].XLabelsSource:='weizhang';   
         dbchart1.Series[0].YValues.ValueSource:='yi';   
         dbchart1.Series[0].Active:=true;         
       end; ======成功============procedure    TForm10.Button1Click(Sender:TObject);   
       var   
           Series1:TLineSeries;   
       begin   
        Series1:=TLineSeries.Create(Application);   
         DbChart1.SeriesList.Clear;   
         DbChart1.AddSeries(Series1);   
         datam.SQ_WeiFaTongJi.close;       
         datam.SQ_WeiFaTongJi.SQL.Text:='select  R.PHOTO,count(R.PHOTO)  cross from  table  R  group by  R.PHOTO';   
         datam.SQ_WeiFaTongJi.Open;   
         dbchart1.Series[0].DataSource:=datam.Data_WeiFaTongJi.DataSet;   
         dbchart1.Series[0].XLabelsSource:='photo';   
         dbchart1.Series[0].YValues.ValueSource:='cross';   
         dbchart1.Series[0].Active:=true;     
       end;   
        
       procedure    TForm10.Button2Click(Sender:TObject);   
       var   
           Series1:TLineSeries;   
       begin   
         Series1:=TLineSeries.Create(Application);   
          DbChart1.SeriesList.Clear;   
           DbChart1.AddSeries(Series1);          
           datam.SQ_WeiFaTongJi.close;             
           datam.SQ_WeiFaTongJi.SQL.Text:='select  R.weizhang,count(R.weizhang)  yi  from  table  R  group by  R.weizhang';   
           datam.SQ_WeiFaTongJi.Open;   
           dbchart1.Series[0].DataSource:=datam.Data_WeiFaTongJi.DataSet;   
           dbchart1.Series[0].XLabelsSource:='weizhang';   
           dbchart1.Series[0].YValues.ValueSource:='yi';   
           dbchart1.Series[0].Active:=true;         
       end;