发表用户:讨论贴
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/
信息原始来源:不祥

文章标题:关于模糊查询的问题?

balingxu

关于模糊查询
偶作了个模糊查询,费了很大的力气现在虽然能查结果出来,但还是会报错好像是动态链接库mrvcrt.dll问题,我的代码sh这样的,大家帮我看看
  str:='name like "%'+Edit2.Text+'%"';
  a:=edit2.Text;
  ListView1.Items.Clear;
  n:=Map1.Layers.Count;

  for i:= 2 to n do
  begin
    try
      lyr:=Map1.Layers.Item[i];
    except
    end;
    try
      ds:=Map1.DataSets.Add(miDataSetLayer,lyr,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
    except
    end ;
    try
      ftrs:=lyr.Search(str,a);
    except
      //edit2.Text:='0';
    end;
    if ftrs.Count > 0 then
    begin
      for j:=1 to ftrs.Count do
      begin
        ftr:=ftrs.Item[j];
        with ListView1.Items.Add do
        begin
          Caption:=ftr.Name;
        end;
      end;
    end;
  end;
错误我觉得应该在ftrs:=lyr.Search(str,a)这句,那个a起初我设置的是emptyparam,也报那个错 

fit4u

我的没有问题 你参考一下吧
不是ftrs:=lyr.Search(str,a)的问题
begin
 lyr:=map1.layers.item[2];
   myda:= map1.datasets.add(midatasetlayer,lyr,'my',lyr.keyfield,emptyparam,lyr.name,emptyparam,false);
  { ftrs:=lyr.AllFeatures;
 ftr:=ftrs.Item[1];
        rvs:=map1.DataSets.Item[2].Rowvalues[ftr];
        for j:= 1 to rvs.Count do
        begin
            name:= Map1.DataSets.item[2].Fields.item[j].Name;
         end;

      }

    str1:='西藏自治区';
    str :='名称 like"' + '%' + str1 + '%' + '"';
            selFeatures := map1.Layers.Item[2].Search(str, emptyparam);
      showmessage(inttostr(selfeatures.count));
      selfeature:=selfeatures.item[1];
  
   ftrs:=map1.layers.item[1].searchwithinfeature(selfeature,misearchtypecentroidwithin);
          searchresultslist.clear;
for  i:=1 to ftrs.count do
                    begin
                     searchResultsList.Items.Add('第'+inttostr(i)+'纪录');
                    ftr :=ftrs.Item[i];

                   rvs:=ftr.layer.datasets.Item[1].Rowvalues[ftr];

                   // for j := 1 to flds1.Count do
                    for j := 1 to rvs.Count do

                   begin
                   // str := flds1.Item[j].Name;
                    name:= Map1.DataSets.item[1].Fields.item[j].Name;
                     rv := rvs.Item[j];
                     values:=rv.value;
                     values:=name+'  :  '+values;
                     searchResultsList.Items.Add(values);
                   end;
                 end;