式とデータ プロバイダについて

式関数のほとんどは、すべてのデータ プロバイダで同じように動作しますが、いくつかの例外があります。

サポートされていない関数

フィルタまたは計算済みプロパティを作成するときは、どの関数でも使用することができます。作成結果は、データ ストアには保存されません。 ただし、AutoCAD Map 3D では、サポートされていないデータ タイプを返す関数を使用して[データ テーブル]に値を挿入する場合、例外が発生します。その操作はデータ プロバイダに対しては無効です。たとえば、SHP ファイルは、FdoInt16 または FdoDouble データ型をサポートしていません。そのデータ型の値を SHP データ ストアに保存しようとすると、エラーが発生します。

ODBC プロバイダ

AutoCAD Map 3D では、実際にデータ ストアに接続する前に、式を適用することができます。たとえば、クエリーを使用してマップにフィーチャを追加することが可能です。この状況は、複数のデータ ソースに接続できる ODBC プロバイダにとって問題となる場合があります。 一部の ODBC ソースは式関数をサポートしていません。この理由のため、すべてのケースで、関数が式作成プロセスの一部として評価されます。接続されたデータ ソースがそうできる場合でもです。

Soundex

Soundex 関数は、すべてのリレーショナル データ ベース管理システム(RDBMS)でネイティブにサポートされています。基盤となっている RDBMS はこの関数を含むすべての式を評価します。しかし、MySQL プロバイダが返す結果は、他のプロバイダが返す結果と異なる場合があります。

ブール演算値の表現

SDF プロバイダおよび SHP プロバイダは、ブール演算値を 真 および 偽 という用語で表現します。RDBMS プロバイダは、ブール演算値を 0 および 1 で表現します。 この違いは、ラベルの表示に影響を及ぼす可能性があります。たとえば、次の式は値が開いているかどうかを示すラベルを定義します。

Concat('Valve is open: ', <valve_status_property>)

SDF データおよび SHP データの場合、ラベルは「Valve is open: True.」 と表示されます。RDBMS データの場合、ラベルは「Valve is open: 1.」と表示されます。

AddMonths と MonthsBetween

AddMonths 関数および MonthsBetween 関数は、日の情報を考慮しませんが、RDBMS システムは考慮に入れます。

たとえば、AddMonths(<date_property>, 88.7) という式の場合、RDBMS プロバイダは、入力されたデータに 88.7 ヶ月を追加します。製品で作成する式の中の関数は、88 月しか追加しません。

同じように、式 MonthsBetween(<date_1>, <date_2>) の場合、RDBMS プロバイダは値 77.4 を返す可能性があります。製品で作成する式の中の関数は 77 を返します。

キャッシュベースの操作と RDBMS ベースの操作

操作(たとえば、計算済みプロパティの作成)は、キャッシュベースの操作であり、評価用に式作成プロセスを使用します。その他の操作(RDBMS データ ストアに対するフィルタなど)は、基盤となる RDBMS システムを使用します。

プロバイダ間の違いによって、結果が異なる場合があります。たとえば、MySQL データ ストアに接続している場合、2 つの計算されたプロパティ CP1 と CP2 を作成できますCP1 は Soundex(<property>) という式によって定義され、CP2 は Soundex(<literal>) という式によって定義されます。[データ テーブルで、CP1 および CP2 の値はまったく同じになる可能性があります。しかし、Soundex(<property>) = Soundex(<literal>) という式を含むフィルタを使用する場合、結果として得られる値は異なる場合があります。AutoCAD Map 3D の[データ テーブル]では、式構築処理により式が検証されます。MySQL データ ストア(様々な関数定義を使用)はフィルタを評価します。