乔乔
路人甲
路人甲
  • 注册日期2003-07-31
  • 发帖数1
  • QQ
  • 铜币108枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:664回复:0

[求助]oracle表下载到本地并保存为本地*.tab表的问题

楼主#
更多 发布于:2005-01-13 09:00
我的代码如下所示:
procedure AddServerLayer(Map:TMap;UID,PWD,SRVR:string;LayerName:String;TableName:String; KeyField:String;LabelField:String;
LabelStyle:CMapXStyle);
var
LayerInfCMapXLayerInfo;
LocalLayerInfCMapXLayerInfo;
flds:CMapXFields;
ftrs:CMapXFeatures;
Lyr:CMapXLayer;
ds:CMapXDataSet;
i:Integer;
begin
try
LayerInfo := CoLayerInfo.Create;
LocalLayerInfo := CoLayerInfo.Create;
flds:=coFields.Create;
LayerInfo.Type_ := miLayerInfoTypeServer;
LayerInfo.AddParameter('ConnectString','UID='+UID+';PWD='+PWD+';SRVR='+SRVR);
LayerInfo.AddParameter('Cache','On');
LayerInfo.AddParameter('MBRSearch','On');
LayerInfo.AddParameter('ToolKit','ORAINET');
LayerInfo.AddParameter('AutoCreateDataset', miDataSetLayer);
LayerInfo.AddParameter('Name',LayerName);
LayerInfo.AddParameter('Query','select * from '+TableName);


<P>LayerInfo.AddParameter('DatasetName',LayerName);
Map.Layers.Add(LayerInfo,0);                  //这里工作正常[LayerName].KeyField:=KeyField;
Map.Layers.Item[LayerName].Visible :=False;
Map.Layers.item[LayerName].LabelProperties.Dataset := Map.DataSets.Item[LayerName];
Map.Layers.item[LayerName].LabelProperties.DataField := Map.DataSets.Item[LayerName].Fields.Item[LabelField];
Map.Layers.item[LayerName].LabelProperties.Overlap := True;
Map.Layers.Item[LayerName].LabelProperties.Style := LabelStyle;</P>
<P>ds:=Map.Datasets.Item[LayerName];
flds:=ds.Fields;
ftrs:=Map.Layers.Item[LayerName].AllFeatures;
LocalLayerInfo.Type_:=miLayerInfoTypeNewTable;
LocalLayerInfo.AddParameter('Name','1');
LocalLayerInfo.AddParameter('FileSpec','c:\1.tab');
LocalLayerInfo.AddParameter('Fields', flds);
LocalLayerInfo.AddParameter('Features', ftrs);
LocalLayerInfo.AddParameter('OverwriteFile','1');
Lyr:=Map.Layers.Add(LocalLayerInfo,EmptyParam);     //这里出现异常
Map.datasets.Add(miDataSetLayer,Lyr, '1',EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
finally
LocalLayerInf=nil;
LayerInf=nil;
end;
end;
但不能运行它可以加载从oracle上下载的表,但创建本地表的时候就会出错,异常错误如下所示:'Invaid Name Parameter specified'. 如果我用
flds.AddStringField('ID',50,EmptyParam);
替换 flds:=ds.Fields;
即Fields改为自己创建的,则程序可以正常运行,并且保存为本地的tab文件。</P>
喜欢0 评分0
游客

返回顶部