コードは次のようになります。コネクタが適切なブローカーに接続され、データベース接続がアクティブであり、データベーススキーマが作成されていることを前提としていることに注意してください(モデルエクスプローラーから後の手順を非常に簡単に実行できます)。
var
Band : TBand;
begin
// Query the database for all TCountry instances or descendants
CountrySelector.Close;
CountrySelector.Command.Text := 'SELECT * FROM ANY TCountry';
CountrySelector.Open;
if ContactSelector.ObjectCount > 0 then
begin
Band := TBand.Create(Connector);
try
// Take currently selected Country and assign to Band's Country property
// Reference counting is handled automatically
Band.Country := CountrySelector.CurrentObject as TCountry;
Band.Store;
finally
Band.Free; // Free reference to Band so we do not leak an object
end;
end;
end;
また、Selectorは通常のアプリケーション要件に対応していないため、あまり頻繁には使用しません。私のユーザーは、DevExpress Quantumグリッドを使用してFirebirdから2万件以上のレコードを取得することが多く、応答時間は一貫して2秒未満であると予想しています。私のクエリは多くのテーブルにまたがり、複雑なフィルタリング要件があるため、この要件を満たすには、IBExpert(風変わりですがそれ以外は優れたツール)を使用して非常に注意深い設計と調整が必要でした。
IOについて言えることは、モデルエクスプローラーを使用してデザインがポイントアンドクリックプロセスに縮小されるため、データモデリングが容易になるということです。IOは、複雑なオブジェクトグラフもデータセットとして「公開」し、プロパティをビジュアルコントロールにバインドできるため、優れたデータバインディングフレームワークでもあります。私が気に入っているもう1つの部分は、挿入クエリまたは更新クエリを手動で作成したり、永続オブジェクトを追加または変更するための列値を設定したりする必要がなくなったことです。IOは、コーディングをほとんど行わずに、舞台裏でこれ以上のことを行います。
デビッド