注意Arcgis中使用SearchExpression(对不同数据源的异同)(原创)
Arcgis中使用SearchExpression注意:在使用AO,MO座二次开发中经常要用到属性查询,对于不同数据源表达式有细微差别,请参考:
Remarks
When using SearchExpression, bear in mind that the expressionmay be parsed and executed within MapObjects, or may be passed to theappropriate daat source for parsing and evaluation. This means youshould pay special attention to the syntax according to the data sourceyou are search against. Review the following notes for more information.
我在工作中就遇到这样的问题,当时没有抓图,事后又有同事遇到,专门做了试验抓了图存档。
当时的环境是这样:
1、数据源最初是shape等文件,或者access时调用SearchExpression查询特征的代码运行正常。
2、当将数据import到SDE for Oracle时就不正常了,找了半天都没找到问题。以外入库把数据搞坏了,但是没找到原因。
3、最后把代码跟踪到的条件在ArcMap中试验,发现也查不到特征,确定问题还是出自查询条件写的不规范。
4、测试源存档的入库前shape数据就可以查到,如附件的图。
5、查看帮助发现上边的英文评住,就不翻译了,遇到问题的同志自己看了。
6、原因:查询表达式中原来的写代码时为了格式好看手误多输了一个空格,这个空格在文件数据源时会被自动滤掉 。而在SDE中则不会被滤掉,所以多个空格就查询不出来了。
用shape做实验的结果如图,有兴趣的朋友可以自己实验一下。
另外对常用SDE的朋友提试一下:
如果在查询中用到DBMS特有的函数也是不可以通用的,大多数人并不同事使用多个DBMS所以一般不注意,但是在程序移植时就会出现问题。
比如SUBSTRING()在Access中就么有,而是用MID()代替,等等还有好几个。以后再来总结。
[ 本帖最后由 high_hill 于 2007-5-20 11:29 PM 编辑 ]
图片附件: 无空格.JPG (2007-5-20 23:29, 33.59 K)
图片附件: 无空格正常成功.JPG (2007-5-20 23:29, 7.34 K)
图片附件: 滤出的结果.JPG (2007-5-20 23:29, 116.04 K)
图片附件: 有空格.JPG (2007-5-20 23:29, 31.23 K)
图片附件: 有空格依然成功.JPG (2007-5-20 23:29, 218.96 K)