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一样报错。
************
第二个问题
*************
这是什么原因?应如何修改?
一共四十二分,倾囊而出了,先谢过!!!!!!!!
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一样报错。
************
第二个问题
*************
这是什么原因?应如何修改?