阅读:3546回复:10
紧急求助:怎么做直方图
我想把同一张表的同一字段的不同记录进行比较,做成专题图中的直方图,不知应该怎么做,请各位大虾指点一下,谢谢。
|
|
1楼#
发布于:2003-12-18 17:14
看看下面这个例子,你可以参考:
procedure TMapForm.SafeArrayButtonClick(Sender: TObject); var theData: Variant; // Safe Array of data flds: CMapXFields; ds: Dataset; begin { Create a new SafeArray and fill it with sample data. } theData := VarArrayCreate([1,3, 1, 2], varVariant); theData[1,1] := 'ME'; theData[2,1] := 'NH'; theData[3,1] := 'VT'; theData[1,2] := 100; theData[2,2] := 200; theData[3,2] := 300; try { Create a new fields object } flds := CoFields.Create; { Describe the structure of the SafeArray, so that our columns will have names after the Datasets.Add } flds.Add(1, 'State', miAggregationIndividual, miTypeString); flds.Add(2, 'Sales', miAggregationSum, miTypeNumeric); { Create a SafeArray dataset. } ds := Map1.Datasets.Add(miDataSetSafeArray, theData, 'My Dataset', 1, EmptyParam, EmptyParam, flds, EmptyParam); { Create a theme based on the "Sales" column in the new dataset } ds.Themes.Add(miThemeIndividualValue, 'Sales', 'My Theme', EmptyParam); except on E: EOleException do Application.MessageBox(PChar(E.Message), 'Error', MB_OK or MB_ICONERROR); end; end; |
|
2楼#
发布于:2003-12-18 21:51
我做的时候报错。说找不到绑定层。请再指教一下,谢谢。
我把我的意思再说一下: table name age mapid 张三 25 1 李四 50 2 我是通过MAPID(也就是地图上的featureID,我存放在表里的)来绑定图层的,现在我要把张三,李四的 age进行比较,做成直方图。 |
|
3楼#
发布于:2003-12-19 13:02
1、你图层内有MAPID这个字段吗?
2、MAPID在图层还必须是索引字段! 你在看看的程序! |
|
4楼#
发布于:2003-12-19 14:13
mapid 是索引字段,而且在图层里也有
我如果用安全数组的话就必须拿一列来绑定到层,而第二列只能是AGE,不能加入姓名。因为我是一个点关联多条记录,就必须拿姓名来区分开。我如果在FILEDS里加两个字段它又会报聚集函数只能用一列绑定。 但是我查阅了一些资料如果是做直方图是可以做一个点关联多条记录的。但我就是不知该怎么写代码。 |
|
5楼#
发布于:2003-12-19 15:03
你可以把你写的代码贴出来,我看看吗?
|
|
6楼#
发布于:2003-12-19 23:25
s_sql2:='select mapid,zbzhi from tablename where (zbname='A' or zbname='B') and name='AB'';
//这个SQL我不太清楚该怎么写,因为我是要取同一个点(name)的两个zbname的zbzhi进行比较。 with ADOQuery1 do begin Close; sql.Clear; sql.add(s_sql2); Open; rs:=ADOQuery1.Recordset; end; if rs.RecordCount<>0 then begin rs.MoveLast; flds.add('mapid','id',miAggregationAuto,0); //id对应TAB的ID flds.Add('zbzhi','zbzhi',miAggregationAuto,3); dst:=Map1.Datasets.Add(miDatasetADO,rs,emptyparam,'id',emptyparam,emptyparam,flds,false); fileds.add('zbzhi','zbzhi',miAggregationAuto, 3); //如果这么写的话出来的直方图就只有一列,而且是 (zbname='A')+(zbname='B')的和 //我是要zbname='A',zbname='B'两列进行比较的直方图而不需要它求和,我想绑定两个数据集好象也不对 dst.Themes.add(MiThemeBarChart,fileds,'zbzhi',emptyparam); end; |
|
7楼#
发布于:2003-12-20 15:44
你写的SQL语句,我太明白你意思?
你做专题图,想达到一个什么样效果,也让人很模糊! |
|
8楼#
发布于:2003-12-20 17:39
这样说吧,我现在也不知道SQL应怎么写,可不可以这样,你给我一个做直方图的例子,我自己看一下。我现在不知道直方图该怎么做,等级图和独立值专题图都已经做出来了,就是直方图不知怎么下手。谢谢。
|
|
9楼#
发布于:2003-12-21 10:42
在论坛内就有啊!
VB+MAPX实现各种专题图的源程序 |
|
上一页
下一页