J'utilise beaucoup de requêtes de définition dans ma vie SIG quotidienne, mais l'une des nombreuses choses que j'ai trouvées ennuyeuses à propos d'ArcMap est l'incapacité de commenter les requêtes de définition. J'aimerais avoir cette option car parfois je veux activer / désactiver la requête de définition ou je veux avoir plusieurs requêtes sur un seul fichier de formes, mais une seule active à la fois.
Jusqu'à présent, pour contourner ce problème, j'ai généralement un document bloc-notes en arrière-plan et copiez-collez si nécessaire. Mais la solution idéale serait d'utiliser l'onglet de requête de définition dans les propriétés de la couche pour remplacer ce document. Je pourrais avoir plusieurs requêtes différentes sur une couche, mais toutes ont été commentées.
Si je comprends bien, les requêtes de définition sont écrites en SQL. Pour commenter en SQL, je pense que vous pouvez soit commencer une ligne par: - soit englober une déclaration entre crochets: {} . J'ai essayé les deux:
Original: "DATA_AQUISITION" LIKE 'MISSING XSECTION'
Dashes: --"DATA_AQUISITION" LIKE 'MISSING XSECTION'
Brackets: {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}
Les deux dernières instructions renvoient une erreur d'expression SQL et ne dessinent pas dans ArcMap. Je ne cherche pas de solution de programmation, car ce serait trop de travail.
la source
"OBJECTID" <> -1 OR "DATA_AQUISITION" LIKE 'MISSING XSECTION'
c'est une excellente solution, mais je cherche quelque chose qui ressemble plus à un commentaire réel. Quelque chose qui peut être fait dans toutes les langues de code, où vous avez plusieurs options de requête sur différentes lignes et toutes sauf une sont mises en commentaire. Si ce n'est pas possible, tant pis, mais je pense que ce serait une excellente option.Réponses:
Juste une supposition, mais la raison pour laquelle cela ne fonctionne pas est probablement parce qu'une requête de définition n'est que la partie WHERE d'une instruction SQL plus grande construite en interne par ArcGIS chaque fois qu'il a besoin d'interroger la base de données sous-jacente, par exemple pour dessiner la couche . Lorsque vous ajoutez les caractères de commentaire, ArcGIS ajoute toujours la clause WHERE et les phénomènes de base de données sous-jacents car ce n'est pas du SQL valide.
Dans la boîte de dialogue Query Builder, il y a des boutons de chargement et d'enregistrement. Enregistrer crée un fichier .exp que vous pouvez ensuite recharger avec le bouton Charger. C'est quelques clics de plus que ce que vous recherchez probablement, mais c'est quelque chose.
la source
SELECT * FROM table WHERE
n'est pas valide SQL est ce que je voulais en venir. Il doit y avoir quelque chose après le mot-clé WHERE, ou le mot-clé WHERE ne doit pas être là du tout. ArcGIS ajoute probablement WHERE s'il y a quelque chose dans la requête de définition.SELECT * FROM table WHERE "OBJECTID" <> -1 --"DATA_AQUISITION" LIKE 'MISSING XSECTION'
et lesSELECT * FROM table WHERE "OBJECTID" <> -1 {"DATA_AQUISITION" LIKE 'MISSING XSECTION'}
deux entraînent les mêmes erreurs. Il a quelque chose après leWHERE
, mais ne peut toujours pas gérer les commentaires.1 = 1 /*"DATA_AQUISITION" LIKE 'MISSING XSECTION'*/
. A travaillé pour moi sur Oracle. La1 = 1
partie est nécessaire, l'utilisation du commentaire ne fonctionne pas (erreur d'expression manquante).Le commentaire de bloc / .. / semble fonctionner tant que vous avez quelque chose dans votre requête de définition. Si vous commentez tout, vous devez mettre 1 = 1 avant vos lignes commentées
Exemples:
Tous ont commenté:
1 sans commentaire, 2 commentés:
2 sans commentaires, 1 commenté:
Déplacez simplement le "/ " et le " /".
la source
XTools pro, un module complémentaire non-ESRI a une fonctionnalité qui permet d'activer / désactiver une requête de définition sur une couche. Très utile.
Vous pouvez également copier / coller votre requête de définition dans l'onglet "Général" des propriétés du calque. Il y a une fenêtre pour "Description" qui est souvent inutilisée. Je copie / colle souvent mes requêtes de définition là-bas lorsque je dois les désactiver. Ils sont enregistrés dans le document
la source