A propos des expressions et des fournisseurs de données

La plupart des fonctions d'expression ont le même comportement dans tous les fournisseurs de données, à quelques exceptions près.

Fonctions non prises en charge

Vous pouvez faire appel à n'importe quelle fonction lorsque vous créez un filtre ou une propriété calculée. Ces résultats ne sont pas enregistrés à nouveau dans la banque de données. Toutefois, dans AutoCAD Map 3D, si vous utilisez une fonction qui renvoie un type de données non pris en charge pour insérer une valeur dans la table de données, une exception se produit. Cette opération n'est pas possible pour le fournisseur de données. Par exemple, les fichiers SHP ne prennent pas en charge les types de données FdoInt16 ou FdoDouble. Si vous tentez d'enregistrer une valeur de ce type de données dans une banque de données SHP, une erreur se produit.

Fournisseurs ODBC

Dans AutoCAD Map 3D, vous pouvez appliquer une expression avant de vous connecter à la banque de données. Par exemple, vous pouvez utiliser une requête pour ajouter des objets à une carte. Cela peut représenter un problème pour les fournisseurs ODBC qui peuvent se connecter à plusieurs sources de données. Toutes les sources ODBC ne prennent pas en charge les fonctions d'expression. Pour cette raison, les fonctions sont évaluées au cours du processus de création de l'expression dans tous les cas, même si la source des données connectées peut le faire.

Soundex

La fonction Soundex bénéficie d'une prise en charge native par tous les systèmes de gestion de bases de données relationnelles (SGBD relationnel). Le système de gestion de bases de données relationnelles (SGBDR) sous-jacent évalue toutes les expressions qui incluent cette fonction. Cependant, le résultat renvoyé par un fournisseur MySQL peut différer du résultat que vous recevez d'autres fournisseurs.

Représentation des valeurs booléennes

Les fournisseurs SDF et SHP représentent une valeur booléenne par les termes TRUE et FALSE. Les fournisseurs SGBDR représentent une valeur booléenne par 0 et 1. Cette différence peut affecter l'affichage des étiquettes. Par exemple, l'expression suivante définit une étiquette qui indique si une valve est ouverte :

Concat('La valve est ouverte : ', <propriété_statut_valve>)

S'il s'agit de données SDF et SHP, l'étiquette indique "La valve est ouverte : True". S'il s'agit de données de SGBDR, l'étiquette indique "La valve est ouverte : 1".

AddMonths et MonthsBetween

Les fonctions AddMonths et MonthsBetween ne prennent pas en compte les informations liées au jour contrairement aux systèmes SGBD relationnels.

Par exemple, dans le cas de l'expression AddMonths(<propriété_date>, 88.7), un fournisseur de SGBDR peut ajouter 88,7 mois à la date proposée. La fonction dans les expressions que vous créez dans le produit n'ajoute que 88 mois.

De même, pour l'expression MonthsBetween(<date_1>, <date_2>), un fournisseur SGBDR peut renvoyer la valeur 77,4 alors que la fonction dans les expressions que vous créez renvoie 77.

Opération basée sur le cache et opération basée sur un SGBDR

Certaines opérations (par exemple, la création d'une propriété calculée) sont basées sur le cache ; elles font appel au générateur d'expression pour l'évaluation. D'autres opérations (par exemple, un filtre sur une banque de données SGBDR) s'appuient sur un système de SGBDR sous-jacent.

En raison des différences inhérentes aux fournisseurs, les résultats peuvent être différents. Par exemple, si vous vous connectez à une banque de données MySQL, vous pouvez créer deux propriétés calculées : CP1 et CP2. La propriété CP1 est définie par l'expression Soundex(<propriété>) et l'expression CP2 est définie par l'expression Soundex(<littérale>). La valeur de CP1 et de CP2 peut être identique dans la table de données. Cependant, si vous utilisez un filtre contenant l'expression Soundex(<propriété>) = Soundex(<littéral>), les valeurs obtenues peuvent être différentes. Dans AutoCAD Map 3D, dans la table de données, le processus de création d'expressions évalue les expressions. La banque de données MySQL (qui utilise une définition de fonction différente) évalue le filtre.