delphi6+mapx4+oracle8的CMapXBindLayer问题!!(40分)

J

jcc0728

Unregistered / Unconfirmed
GUEST, unregistred user!
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 ADOQuery1do

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一样报错。
************
第二个问题
*************
这是什么原因?应如何修改?





 
你的第二个问题没有在创建索引。
第一个问题是这样子的,是根据你的表(.Tab)来算的。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
822
SUNSTONE的Delphi笔记
S
I
回复
0
查看
660
import
I
顶部