データセットを開く/閉じる

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

データセットの理解:インデックス への移動


データセット内のデータを読み書きするには、アプリケーションはまずそれを開かなければなりません。データセットは、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();


データセットを開いた際に BeforeOpenAfterOpen イベントを受け取ったように、閉じると Data.DB.TDataSet.BeforeCloseData.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.

関連項目

コード サンプル