2

私の形で私はTADOQuery,TDataSetProvider,TClientDataSet,TDataSource,TDBGridリンクしました。

DoQuery は SQL Server ビューを使用してデータを照会します

AdoQuery.SQL:

Select * from vu_Name where fld=:fldval

Vu_Name:

SELECT * FROM  t1 INNER JOIN t2 ON t2.fld1 = t2.fld1

私の dbgrid では、テーブル t1 の列のみが編集可能です (t1 のみを更新する必要があります)。

更新をサーバーに適用する (最速の) 方法は何ですか? ClientDataSet.ApplyUpdates(0); // not working

ありがとうございました。

4

1 に答える 1

3

TDataSetProviderにはイベントOnGetTableNameがあり、TableNameパラメーターをt1に設定する必要があります。したがって、プロバイダーは変更された値をどこに保存するかを知っています。

TDataSetProviderは1つのテーブルのみを更新するため、t1のフィールドのみが変更されていることを確認する必要があります。もちろん、ApplyUpdatesの呼び出しごとに異なるテーブル名を付けることができます。変更されたフィールドについては、DataSetパラメーターで確認できます。

複数のテーブルを更新する場合は、OnUpdateDataを実装する必要があります。これにより、すべての責任を伴うすべての自由が得られます。

于 2013-02-11T08:22:30.030 に答える