Find.Search的问题,请帮忙

ssq237712 2004-10-16 11:20:14
加精
find.search是不是必须指定DataSet?查找的地址是不是不能为中文?怎么ALayer.Find.Search('石桥铺', EmptyParam),返回的FindRC老是为-3?人都要整疯了。
...全文
392 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
jhqjhq 2004-10-16
  • 打赏
  • 举报
回复
lyr := Map1.Layers.Add('USA', EmptyParam);
Map1.Datasets.Add(midatasetlayer, lyr, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
ftrs := lyr.Search('diming = ''''南平'''' ');

lyr.Selection.Replace(ftrs);
jhqjhq 2004-10-16
  • 打赏
  • 举报
回复
Set lyr.Find.FindDataset = ds
Set lyr.Find.FindField = ds.fields("diming")
Set objFindResult = lyr.Find.Search("南平")
jhqjhq 2004-10-16
  • 打赏
  • 举报
回复
那还不简单,就用 layer.search撒。
ssq237712 2004-10-16
  • 打赏
  • 举报
回复
ds := mapMain.Datasets.add(midatasetlayer,lyr,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam);
ds只有一个字段diming,现在我想按照Feature.Caption查找,怎么办呢?
ssq237712 2004-10-16
  • 打赏
  • 举报
回复
还是查不到啊。我将所有的feature显示出来看看...:(
jhqjhq 2004-10-16
  • 打赏
  • 举报
回复
对象方法
Find.Search 方法
Find.SearchEx 方法

注: 以上方法不适用于远程数据库图层。将 Layer.Search 方法用作在远程数据库图层上确定图元或图元集合位置的另一种方法。

///返回的是 FindFeature 对象
也可以有dataset,也可以没有,但一般都要有,如果没有的话将使用图层的主关键字。
Set lyr.Find.FindDataset = ds
Set lyr.Find.FindField = ds.fields("字段")
Set objFindResult = lyr.Find.Search("字段值")


/////支持中文。


当然也可以用,Layer.Search 方法
不过搜索的字段必须在图层中了。

////下面的就是空间查询了。

Layer.SearchAtPoint 方法
Layer.SearchWithinDistance 方法
Layer.SearchWithinFeature 方法
Layer.SearchWithinRectangle 方法


//我建议还是用layer.search, 简单的多了。
不过如果要搜索的属性数据在数据库中的话,你可以设置一个id对应,
直接在数据库中检索就可以了。

letheanwater 2004-10-16
  • 打赏
  • 举报
回复
呵呵,那个里头是可变的了!
根据你自己的需要进行更改啊!
你的DS里有什么就写什么
:)
ssq237712 2004-10-16
  • 打赏
  • 举报
回复
to fengyun925(深秋的落叶 卷起片片的凌乱) :
Set lyr.Find.FindField = ds.Fields("name") 怎么知道地图ds中有这个字段呢?我照你的方法试了一下,将ds的所有字段都罗列出来看了一下,只有一个diming字段啊?
才学的,请多包涵多指教
letheanwater 2004-10-16
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
Dim lyr As MapXLib.Layer
Dim ds As MapXLib.Dataset
Dim findftr As MapXLib.FindFeature
Dim ftr As MapXLib.Feature

Set lyr = Map1.Layers(1)
Set ds = Map1.Datasets.Add(miDataSetLayer, lyr)
Set lyr.Find.FindDataset = ds
Set lyr.Find.FindField = ds.Fields("name")
Set findftr = lyr.Find.Search("开发区管委会")
If (findftr.FindRC Mod 10 = 1) Then
Set ftr = lyr.GetFeatureByKey(findftr.FeatureKey)
lyr.Selection.Replace ftr
Map1.ZoomTo Map1.Zoom, ftr.CenterX, ftr.CenterY
End If

End Sub



PS:以前呆的一个坛子的东东。转来
jhqjhq 2004-10-16
  • 打赏
  • 举报
回复
先吃饭。等会再回答。
兄弟也是重庆的,呵呵可以认识一下哦。
我也是重庆的。
letheanwater 2004-10-16
  • 打赏
  • 举报
回复
查东西可以换一下嘛!
这个没用过
之前都是用searchwith***的方法来进行的
感觉还比较实用
你可以找下例子代码,来看一下人家是怎么书写的
ssq237712 2004-10-16
  • 打赏
  • 举报
回复
解决了。谢谢各位。我有两个图层(重庆市地名CA和重庆市地名C)都有'七星岗',不知道怎么的在CA中就是找不到,在C中就找到了...
待会结贴
ssq237712 2004-10-16
  • 打赏
  • 举报
回复
我怎么找不到呢?Search出来的数量为0,Find.Search.FindRC总为-3
function SearchFea(ALayer: CMapXLayer): CMapXFindFeature;
var
ds: CMapXDataset;
i: integer;
ss: String;
Feas: CMapXFeatures;
begin
try
ds := MainForm.MapMain.Datasets.Item(ALayer.Name);
except
ds := MainForm.MapMain.Datasets.Add(miDataSetLayer, ALayer, ALayer.Name, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
end;
ALayer.Find.FindDataset := ds;
ss := '';
for i := 1 to ds.Fields.Count do
ss := ss + #13 + ds.Fields.Item(i).Name;
ShowMessage(ss);
Feas := ALayer.Search('diming = "七星岗"', EmptyParam);
ShowMessage(IntToStr(Feas.Count));
ALayer.Find.FindField := ds.Fields.Item(1);

Result := ALayer.Find.Search('七星岗', EmptyParam);

end;

2,142

社区成员

发帖
与我相关
我的任务
社区描述
它是一种特定的十分重要的空间信息系统。它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。
社区管理员
  • 地理信息系统
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧