| 漏洞 ID 编号 |
BUG-000120448 |
| 已提交 | February 28, 2019 |
| 上次修改时间 | June 5, 2024 |
| 适用范围 | ArcGIS for Desktop |
| 找到的版本 | 10.2.1 |
| 操作系统 | Windows OS |
| 操作系统版本 | 2008 R2 64 Bit |
| 状态 | Will Not Be Addressed
开发团队已考虑过该问题或请求,并决定不会解决该问题。 问题的“其他信息”部分可能包含进一步说明。
|
附加信息
The ability to use AS keyword in the SubFields property of a QueryDef is documented as an invalid pattern and is not supported.
https://enterprise.arcgis.com/en/sdk/latest/windows/IQueryName_QueryDef.html
"//Invalid sub fields
//queryDef.SubFields = "max(Parcel.Area) as Max_Area";"
and
"IQueryDef::Subfields - This must be a comma delimited list of field names or a * to indicate all columns. Column aliases and functions are invalid."
解决办法
Use an alias for IQueryDef.Subfields instead of the original attribute field name. See below for an example (SDE.DynamicProtectiveDevice is replaced with the alias "A")Instead of doing this:
queryDef.SubFields = "SDE.DynamicProtectiveDevice.FEEDERID AS FEEDERID"quesryDef.Tables = "SDE.DynamicProtectiveDevice JOIN SDE.CircuitSource ON SDE.DynamicProtectiveDevice.OBJECTID = SDE.CircuitSource.DYNAMICPROTECTIVEDEVOBJECTID";queryDef.whereClause = "SDE.DynamicProtectiveDevice.ANCILLARYROLE = 1 AND SDE.CircuitSource.DYNAMICPROTECTIVEDEVOBJECTID IS NOT NULL";
Do this:
queryDef.SubFields = "A.FEEDERID AS FEEDERID"quesryDef.Tables = "SDE.DynamicProtectiveDevice AS A JOIN SDE.CircuitSource ON SDE.DynamicProtectiveDevice.OBJECTID = SDE.CircuitSource.DYNAMICPROTECTIVEDEVOBJECTID";queryDef.whereClause = "A.ANCILLARYROLE = 1 AND SDE.CircuitSource.DYNAMICPROTECTIVEDEVOBJECTID IS NOT NULL";
The above modified query works fine on Oracle 11g and Oracle 12c Release 1.
重现步骤