1. 程式人生 > >AE “每使用者訂閱上的所有人SID 不存在”

AE “每使用者訂閱上的所有人SID 不存在”

今天執行以前engine寫的屬性查詢的例子,執行到pFeatCursor = pFeatCls.Search(pQueryFilter, true);出現如下錯誤提示:

未處理 System.Runtime.InteropServices.COMException

Message="每使用者訂閱上的所有人 SID 不存在 (異常來自 HRESULT:0x80040207)"

Source="ESRI.ArcGIS.Geodatabase"

ErrorCode=-2147220985

        貌似是升級到v9.3才有的錯誤,檢查發現是QueryFilter.WhereClause語句在查詢shapefile格式的圖層出現了問題,試驗在查詢gdb格式的圖層不會報錯。開啟ArcGIS比較了兩種格式的屬性查詢存在以下的區別:

        1.shapefile的欄位名用雙引號如:"fieldName"而GDB的採用[fieldName]格式;

        2.shapefile的模糊查詢用like '%A%' 而GDB用like '*A*' ;

       3.shapefile的非字元欄位不支援模糊查詢而GDB格式的支援;不過我記得9.2的時候好像支援^_^。

        所以在查詢前必須判斷一下圖層的資料來源型別:

            if (pDateset.Workspace.Type == esriWorkspaceType.esriFileSystemWorkspace)

            {

                    pQueryFilter.WhereClause = "\"" + fldName + "\"" + " like '%" + this.txt_findObject.Text.Trim() + "%'"; //shpfile

             }

            else

            {

                    pQueryFilter.WhereClause = "[" + fldName + "]" + " like '*" + this.txt_findObject.Text.Trim() + "*'"; //gdb

            }