TQuery を使用する(手順)
操作手順:データベース手順を実行する への移動
TQuery は、SQL 文をカプセル化したクエリタイプのデータセットです。これによって、アプリケーションはクエリの結果として得られたレコードにアクセスできます。
TQuery を使用するには:
- ファイル > 新規作成 > その他... を選択します。新規作成 ダイアログが表示されます。
- 新規作成 ダイアログ ボックスで、Delphi プロジェクト を選択し、VCL フォーム アプリケーション をダブルクリックします。デザイン タブが表示されます。
- データセットをデータベース接続とセッション接続に関連付けます。
- 異種間のクエリを作成します。
- 編集可能な結果セットを取得します。
- 読み取り専用の結果セットを更新します。
データセットをデータベース接続とセッション接続に関連付けるには:
- ツール パレット の BDE カテゴリから、TDatabase コンポーネントをフォームにドラッグします。
- TSession コンポーネントをフォームにドラッグします。
- TDatabase コンポーネントの DatabaseName プロパティを設定して、BDE 対応のデータセットをデータベースに関連付けます。TDatabase コンポーネントの場合、データベース名はデータベース コンポーネントの DatabaseName プロパティの値になります。
- 暗黙的なデータベース コンポーネントを使用し、データベースに BDE エイリアスがある場合、DatabaseName の値として BDE エイリアスを指定します。
メモ: BDE エイリアスは、データベースとそのデータベースの構成情報を表します。エイリアスに関連付けられる構成情報は、データベース タイプ(Oracle、Sybase、InterBase、Paradox、dBASE など)によって異なります。
- Paradox または dBASE データベースで暗黙的なデータベース コンポーネントを使用する場合は、オブジェクト インスペクタ で、DatabaseName をデータベース テーブルが置かれているディレクトリを指定するように設定します。
- デフォルトのセッションを使用して、アプリケーションのすべてのデータベース接続を制御します。
- TSession コンポーネントの SessionName プロパティを設定して、明示的に作成されたセッション コンポーネントにデータセットを関連付けます。
メモ: デフォルトのセッションを使用するか、または SessionName プロパティを使用して明示的にセッションを指定するかにかかわらず、データセットに関連付けられたセッションには、DBSession プロパティを読み取ることによってアクセスできます。セッション コンポーネントを使用する場合、データセットの SessionName プロパティは、そのデータセットが関連付けられているデータベース コンポーネントの SessionName プロパティと一致している必要があります。
異種間のクエリを作成するには:
- BDE 管理ツールまたは SQL エクスプローラを使用して、クエリでアクセスされる各データベースに、個別の BDE エイリアスを定義します。
- TQuery コンポーネントの DatabaseName プロパティを空白のままにします。使用するデータベースの名前は、SQL 文で指定します。
- SQL プロパティに、実行する SQL 文を設定します。
- このステートメントの各テーブル名の前には、そのテーブルがあるデータベースの BDE エイリアスをコロンで囲んで記述します。そして、この参照全体を引用符で囲みます。
- Params プロパティに、クエリのすべてのパラメータを設定します。
- クエリを最初に実行する前の準備を行う Prepare メソッドを記述します。
- 実行するクエリのタイプに従って、Open メソッドまたは ExecSQL メソッドを記述します。
- BDE エイリアスの代わりに TDatabase コンポーネントを使用して、異種間のクエリ内でデータベースを指定します。
- TDatabase にデータベースを構成し、Bde.DBTables.TDatabase.DatabaseName に一意の値を設定して、BDE エイリアス名の代わりにその値を SQL 文で使用します。
編集可能な結果セットを取得するには:
- TQuery コンポーネントの RequestLive プロパティに [True] を設定します。
- リンクされたフィールドがクエリに含まれている場合は、結果セットを読み取り専用の結果セットとして扱い、それを更新します。
アプリケーションがライブ結果セットを要求しても、SELECT 文の構文によって許可されない場合、BDE は、Paradox または dBASE に対するクエリの読み取り専用結果セットか、またはリモート サーバーに対する SQL クエリのエラー コードを返します。
読み取り専用の結果セットを更新するには:
- すべての更新を単一のデータベース テーブルに適用する場合、元のテーブルを OnGetTableName イベント ハンドラで更新するように指定します。
- クエリの UpdateObject プロパティに使用している TUpdateSQL オブジェクトを設定して、更新の適用を細かく制御できるようにします。
- 更新オブジェクトの DeleteSQL、InsertSQL、および ModifySQL の各プロパティに、クエリのデータを適切に更新するための SQL 文を設定します。
BDE を使用して更新内容をキャッシュしている場合は、更新オブジェクトを使用する必要があります。