InfoWorks WS Pro には、SQL 式を使用してネットワーク データを変更できるようにする SQL キーワード SET と UPDATE が含まれています。
キーワードの詳細については、「SQL 構文」を参照してください。
InfoWorks WS Pro での SQL の使用例の詳細については、「SQL の例」のトピックを参照してください。
SET キーワードは単独で、または WHERE サブ句と組み合わせて使用して、[SQL]ダイアログの [オブジェクト タイプ] フィールドで選択した現在のオブジェクト タイプを更新できます。
構文は、次のとおりです。
SET <assignment>
SET user_text_1 = "text"
([SQL]ダイアログの [オブジェクト タイプ] フィールドで)選択したオブジェクト タイプのすべてのオブジェクトの user_text_1 フィールドをテキストに設定します。
同じステートメント内の複数の割り当ては、カンマで区切ります。次に例を示します。
SET user_text_1 = "text", user_number_1 = x
選択したオブジェクト タイプのすべてのオブジェクトの user_text_1 フィールドをテキストに、user_number_1 フィールドを x フィールドの値に設定します。
SET <assignment> WHERE <conditional expression>
SET user_number_1 = 1 WHERE x > 100000
x 座標が 100000 より大きい、選択したオブジェクト タイプのすべてのオブジェクトに対して、user_number_1 フィールドを 1 に設定します
同じステートメント内の複数の割り当ては、カンマで区切ります。次に例を示します。
SET user_number_1 = 1, user_number_2 = 2 WHERE x > 100000
選択したオブジェクト タイプのすべてのオブジェクトのうち、x 座標が 100000 より大きいものについて、フィールド user_number_1 を 1 に、user_number_2 を 2 に設定します。
複数のステートメントは、セミコロンで区切ります。次に例を示します。
SET user_number_1 = 1, user_number_2 = 2 WHERE x > 100000; SET user_number_3 = 3;
x 座標が 100000 より大きい、選択したオブジェクト タイプのすべてのオブジェクトに対して、user_number_1 を 1 に、user_number_2 を 2 に設定し、選択したオブジェクト タイプのすべてのオブジェクトに対して、user _number 3 を 3 に設定します。
オブジェクト内の配列の値を更新するには:
SET <array name.array fieldname> = <expression>
SET diameter = 300 WHERE diameter_flag = 'CH'; SET length = 10 WHERE length < 10
最初のパーツでは、管径のデータ フラグが "CH" に設定されているすべてのパイプについて、直径を 300 に設定します。2 番目のパーツでは、長さが 10 m 未満のすべての管について、最小長さを 10 m に設定します。
SET user_text_5 = gislayer.AREA
これにより、GIS レイヤー "道路" 内の GIS ポリゴン内にあるノードの user_text_5 フィールドが、GIS ポリゴンの "AREA" フィールドの値に設定されます。
UPDATE キーワードは、SET キーワードおよび WHERE キーワードと組み合わせて使用し、1 つ以上のタイプのオブジェクトを更新します。[SQL]ダイアログの [オブジェクト タイプ] リストで選択したタイプとは限りません。
UPDATE <object type> SET <assignment>
UPDATE <object type> SET <assignment> WHERE <conditional expression>
上記の「現在のオブジェクト タイプを更新する」セクションで説明されているように、同じステートメントの複数の割り当てはカンマで区切り、複数のステートメントはセミコロンで区切ります。
UPDATE [All Links] SET user_text_1 = "text"
すべてのリンク オブジェクトの user_text_1 フィールドをテキストに設定します。
UPDATE node SET user_number_1 = 1 WHERE x > 100000
x 座標が 100000 より大きいノード オブジェクトに対して、user_number_1 フィールドを 1 に設定します。