4

クエリをメモリに保存して DBgrid に表示する方法を知りたいのですが、

私の現在のアプリケーションは次を使用しています:

TZConnection > TZquery > DataSource > DBgrid

正常に動作しますが、ここでの問題は、呼び出し後に ZConnection.disconnect dbgrid が消去されることです。

ほとんどの MySQL データベースでは同時に接続できるユーザー数が限られているため、クエリが終了したらすぐに TZConnection を切断したいと考えています。

4

1 に答える 1

4

TDataSetProvider を使用して、Query データを ClientDataSet に転送します。そのコンポーネントがすべてを行います。

次のコンポーネントを DataModule に配置し、それに応じてリンクします。

TZQuery <- TDataSetProvider <- TClientDataSet <- TDataSource

TDataSource.DataSet := TClientDataSet;
TCLientDataSet.ProviderName := TDataSetProvider;
TDataSetProvider.DataSet := TZQuery;

その後、TClientDataSet.Openメソッドを呼び出すだけで、データが TClientDataSet に自動的に転送されます。を使用TClientDataSet.ApplyUpdatesすると、データをデータベースに戻すことができます。

私はそのテクニックをfirebird(TIBQuery)で使用しています。

ClientDataSets に関する情報を次に示します。
すべてのデータベース アプリケーションにおける ClientDataSet
Delphi の詳細: ClientDataSet book
Building Applications With ClientDataSet and InterBase Express

于 2012-12-19T07:38:58.337 に答える