適用先: Access 2013、Office 2013
shape コマンドの APPEND 句は、列 (1 つまたは複数) を Recordset に追加します。 通常、この列は子 Recordset を参照するチャプター列です。
構文
SHAPE [parent-command [[AS] parent-alias]] APPEND column-list
説明
この句の要素を、次に示します。
parent-command
0 または次のいずれか ( parent-command を完全に省略できます)。
Recordset オブジェクトを返す中かっこ ("{}") 内のプロバイダー コマンド。 このコマンドは基になっているデータ プロバイダーに対して発行され、コマンドの構文はそのプロバイダーの要件によって異なります。 ADO では特定のクエリ言語を使用する必要はありませんが、通常は SQL 言語を使用します。
別の shape コマンドをかっこ ( ) で囲んだもの。
TABLE キーワードの後にデータ プロバイダー内のテーブルの名前を付加したもの。
parent-alias
- 親 Recordset を参照する別名。省略可能です。
column-list
以下のいずれか 1 つまたは複数です。
集約列。
集計列。
NEW 句で作成された新しい列。
チャプター列。 チャプター列定義は、かっこ ( ) で囲みます。 次の構文を参照してください。
SHAPE [parent-command [[AS] parent-alias]] APPEND (child-recordset [ [[AS] child-alias] RELATE parent-column TO child-column | PARAMETER param-number, ... ]) [[AS] chapter-alias] [, ... ]
child-recordset
Recordset オブジェクトを返す中かっこ ("{}") 内のプロバイダー コマンド。 このコマンドは基になっているデータ プロバイダーに対して発行され、コマンドの構文はそのプロバイダーの要件によって異なります。 ADO では特定のクエリ言語を使用する必要はありませんが、通常は SQL 言語を使用します。
別の shape コマンドをかっこ ( ) で囲んだもの。
シェイプされた既存の Recordset の名前。
TABLE キーワードの後にデータ プロバイダー内のテーブルの名前を付加したもの。
child-alias
- 子 Recordset を参照する別名。
parent-column
- parent-command によって返される Recordset 内の列。
child-column
- child-command によって返される Recordset 内の列。
param-number
- 「パラメーター化コマンドの操作」を参照してください。
chapter-alias
- 親に追加されたチャプター列を参照する別名。
注:
- "parent-column TO child-column" 句は実際にはリストであり、定義された各リレーションはコンマで区切られます。
- APPEND キーワードの後の句は、実際には各句をコンマで区切った一覧であり、親に追加する別の列を定義します。
注釈
SHAPE コマンドの一部としてユーザー入力を使用するプロバイダー コマンドを作成すると、SHAPE はユーザーが入力したプロバイダー コマンドを内容が不明な文字列として扱い、そのままプロバイダーに渡します。 たとえば、次のような SHAPE コマンドがあります。
SHAPE {select * from t1} APPEND ({select * from t2} RELATE k1 TO k2)
SHAPE では、t1 から * を選択し、(t2 RELATE k1 TO k2 から * を選択) という 2 つのコマンドを実行します。 ユーザーが複数のプロバイダー コマンドで構成される複合コマンドをセミコロンで区切って指定した場合、SHAPE は違いを識別できません。 そのため、次の SHAPE コマンドでは、
SHAPE {select * from t1; drop table t1} APPEND ({select * from t2} RELATE k1 TO k2)
SHAPE は、select * from t1; drop table t1 と (select * from t2 RELATE k1 TO k2) を実行し、drop table t1 が独立したプロバイダー コマンドであり、この場合は危険であることを認識しません。 アプリケーションでは、常にユーザー入力を検証して、このようなハッカーによる攻撃を防ぐ必要があります。
このセクションでは、以下のトピックについて説明します。