FireDAC.Comp.Client.TFDRdbmsDataSet.Open

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

procedure Open(const ASQL: String); overload;
procedure Open(const ASQL: String; const AParams: array of Variant); overload;
procedure Open(const ASQL: String; const AParams: array of Variant;  const ATypes: array of TFieldType); overload;

C++

HIDESBASE void __fastcall Open(const System::UnicodeString ASQL)/* overload */;
HIDESBASE void __fastcall Open(const System::UnicodeString ASQL, const System::Variant *AParams, const int AParams_High)/* overload */;
HIDESBASE void __fastcall Open(const System::UnicodeString ASQL, const System::Variant *AParams, const int AParams_High, const Data::Db::TFieldType *ATypes, const int ATypes_High)/* overload */;
inline void __fastcall  Open(){ Data::Db::TDataSet::Open(); }

プロパティ

種類 可視性 ソース ユニット
procedure
function
public
FireDAC.Comp.Client.pas
FireDAC.Comp.Client.hpp
FireDAC.Comp.Client TFDRdbmsDataSet

説明

指定した SQL 文を実行します。


Open を呼び出すと、ASQL に指定した SQL 文、または ASQL が空の場合には内部コマンド オブジェクトに現在割り当てられている SQL 文を実行することができます。

このメソッドは、以下のようにオーバーロード(多重定義)されています。

  • 1 つ目のオーバーロード メソッドは、指定された SQL 文を実行し、データセットを開きます。
  • 2 つ目のオーバーロード メソッドは、指定されたパラメータ値を使って指定された SQL 文を実行し、データセットを開きます。
  • 3 つ目のオーバーロード メソッドは、指定されたパラメータ値を使って指定された SQL 文を実行し、データセットを開きます。

データセットがアクティブだった場合、このメソッドはそのデータセットを閉じ、コマンド テキストに ASQL を代入し、Active プロパティを True に設定します。ActiveTrue の場合、データセットにはデータベースから取り出したデータが設定されます。このメソッドでは、位置によるパラメータのバインドと正確なパラメータ データ型を使って、パラメータ値を指定することができます。パラメータ データ型を変えずにおく必要がある場合には、パラメータに対応する配列項目に ftUnknown を設定します。

アプリケーションで同じ SQL コマンドを何度も実行する必要があるなら、通常どおりに SQL プロパティを設定し、Open を最初に呼び出す前に Prepare を呼び出し、それから任意のバージョンの OpenASQL を指定せずに呼び出してください。

ResourceOptions.CmdExecMode によって非同期実行モードを制御したり、ResourceOptions.CmdExecTimeout によってコマンド実行の最大時間を設定することができます。この最大時間が過ぎると、コマンド実行はキャンセルされ、例外が発生します。

コマンド実行をキャンセルするには、TFDAdaptedDataSet.AbortJob を使用します。DBMS からエラーが返されると、FireDAC は例外を発生させます。詳細は、「エラーの処理」を参照してください。長い文字列値の場合に次のようなエラーが発生する可能性があります。

 [FireDAC][Phys][ODBC]-345. Data too large for variable [P]. Max len = [8002], actual len = [18329]

この場合には、対応するパラメータ('P')に ftMemo または ftBlob を指定する必要があります。あるいは、標準の Open 呼び出しを使って、パラメータのデータ型と値を別々にセットアップしてください。

 //Example 1:
 FDQuery1.Open('select * from customers');
 
 //Example 2:
 FDQuery1.Open('select * from Employees where department_id = :id', [100]);
 ....
 FDQuery1.Open('', [101]); // executes the above SQL command, but for ID = 101
 
 //Example 3:
 FDQuery1.Open('select * from Employees where department_id = :id', [100], [ftInteger]);

関連項目