delphi6+mapx4+oracle8的CMapXBindLayer问题!!
delphi6+mapx4+oracle8的CMapXBindLayer问题!!
实在没分,解决者可再另加分@@@@先谢过!!!!!!!!
oracle中表LINE 四个字段,ID,NAME 都是字符串 X,Y 为浮点数
我的一般数据绑定可以执行,如下
var ds :TMaxLayer ;
...
ds :=Map.Datasets.Add(miDataADO,ADOQuery1.Recordset,
Uppercase(Layer.Name),'ID', EmptyParam,Layer, fields,EmptyParam);
************
第一个问题
****************
但我发现ds.RowCount是原.tab表中记录条数,而不是ADOQuery1中记录条数,为什么?
我看Mapx中文帮助介绍使用CMapXBindLayer 可以用数据库中表的数据直接创建为图元,我的代码如下:
procedure TForm1.Button3Click(Sender: TObject);
var
BindLayerObject : CMapXBindLayer ;
flds :CMapXFields ;
rs :_RecordSet ;
i :integer ;
begin
//得到数据源
with ADOQuery1 do
begin
ADOQuery1.Close ;
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.Add('select * from line');
ADOQuery1.Open ;
end ;
rs := ADOQuery1.Recordset ;
rs.MoveLast ;
// showmessage(inttostr(i)) ;
//创建数据列
flds := CoFields.Create ;
flds.Add('ID', 'ID', miAggregationAuto, 0) ;
flds.Add('NAME', 'NAME', miAggregationAuto, 0) ;
flds.Add('X', 'X', miAggregationAuto, 3) ;
flds.Add('Y', 'Y', miAggregationAuto, 3) ;
//创建BinLayer
BindLayerObject := CoBindLayer.Create ;
//BindLayerObject.
// BindLayerObject.LayerName := 'NewLayer' ;
BindLayerObject.RefColumn1 := 'X' ;
BindLayerObject.RefColumn2 := 'Y ' ;
BindLayerObject.LayerType := miBindLayerTypeXY ;
ds := Map1.Datasets.Add(miDataADO, rs , 'NewLayer', 'X', 'Y',
BindLayerObject, EmptyParam, false ) ;
end;
调试通过,执行到最后一句就报错: unable to complete this type of bind with the reference column(s) specified.
将datasets.add方法中的倒数第二个字段改为flds一样报错。
************
第二个问题
*************
这是什么原因?应如何修改?
问题点数:0、回复次数:4Top
1 楼JCC0128(代码写到手抽筋)回复于 2003-09-20 13:54:27 得分 0
准备结贴Top
2 楼JCC0128(代码写到手抽筋)回复于 2003-09-26 21:17:00 得分 0
楼上一位接分Top
3 楼yfrzn(杨子)回复于 2003-09-27 09:33:35 得分 0
关注Top
4 楼yfrzn(杨子)回复于 2003-09-27 14:29:14 得分 0
顶Top



