laptop and a wrench

Bogue

IQueryDef.Evaluate causes an ArcGIS Engine console application to crash when a SQL expression with the 'AS' keyword is assigned to IQueryDef.Subfields to query a feature class in an Oracle 11g multiuser database

Dernière publication: March 21, 2019 ArcGIS for Desktop
Numéro d’ID de bogue BUG-000120448
EnvoiFebruary 28, 2019
Dernière modificationJune 5, 2024
S’applique àArcGIS for Desktop
Version trouvée10.2.1
Système d’exploitationWindows OS
Version du système d’exploitation2008 R2 64 Bit
StatutWill Not Be Addressed

Informations supplémentaires

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."

Solution de contournement

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.

Étapes pour reproduire

ID de bogue: BUG-000120448

Logiciel:

  • ArcGIS for Desktop

Recevoir une notification lorsque le statut d’un bogue change

Télécharger l’application Esri Support

En savoir plus sur ce sujet

Obtenir de l’aide auprès des experts ArcGIS

Contacter le support technique

Télécharger l’application Esri Support

Accéder aux options de téléchargement