データセットを開く/閉じる
データセットの理解:インデックス への移動
データセット内のデータを読み書きするには、アプリケーションはまずそれを開かなければなりません。データセットは、2 つの方法で開くことができます:
Open メソッド | サンプル コード |
---|---|
設計時にオブジェクト インスペクタにて、または、実行時にコードにて、データセットの Active プロパティを True に設定します。 |
CustTable.Active := True;
CustTable->Active = true;
|
実行時に、データセットに対して Open メソッドを呼び出します。 |
CustQuery.Open;
CustQuery->Open();
|
データセットを開くと、データセットはまず Data.DB.TDataSet.BeforeOpen イベントを受け取り、次にカーソルを開き、自分自身にデータを設定し、最後に Data.DB.TDataSet.AfterOpen イベントを受け取ります。
新たに開かれたデータセットは参照モードであり、つまり、アプリケーションではデータを読み取ることと、それをナビゲートすることができます。
データセットは、2 つの方法で閉じることができます:
Close メソッド | サンプル コード |
---|---|
設計時にオブジェクト インスペクタにて、または、実行時にコードにて、データセットの Active プロパティを False に設定します。 |
CustQuery.Active := False;
CustQuery->Active = false;
|
実行時に、データセットに対して Close メソッドを呼び出します。 |
CustTable.Close;
CustTable->Close();
|
データセットを開いた際に BeforeOpen と AfterOpen イベントを受け取ったように、閉じると Data.DB.TDataSet.BeforeClose と Data.DB.TDataSet.AfterClose イベントを受け取ります。これらのイベントを使用して、たとえば、ユーザーに対して、データセットを閉じる前に変更を保存またはキャンセルするためのプロンプトを表示することができます。次のコードは、そのようなハンドラを表しています:
procedure TForm1.CustTableVerifyBeforeClose(DataSet: TDataSet);
begin
if (CustTable.State in [dsEdit, dsInsert]) then begin
case MessageDlg('Post changes before closing?', mtConfirmation, mbYesNoCancel, 0) of
mrYes: CustTable.Post; { save the changes }
mrNo: CustTable.Cancel; { abandon the changes}
mrCancel: Abort; { abort closing the dataset }
end;
end;
end;
void __fastcall TForm1::VerifyBeforeClose(TDataSet *DataSet)
{
if (DataSet->State == dsEdit || DataSet->State == dsInsert)
{
TMsgDlgButtons btns;
btns << mbYes << mbNo;
if (MessageDlg("Post changes before closing?", mtConfirmation, btns, 0) == mrYes)
DataSet->Post();
else
DataSet->Cancel();
}
}
メモ: You may need to close a dataset when you want to change certain of its properties, such as TableName on a Bde.DBTables.TTable component. When you reopen the dataset, the new property value takes effect.
関連項目
- データを編集する
- データセットの種類
- データセットの状態の決定
- データセットでの作業
- データセットの検索
- フィルタを使用してデータのサブセットを表示および編集する
- フィールドを計算する
- TDataSet の下位オブジェクトの利用