2012-04-25 14 views
2

私はレコードを挿入する必要があるデータベーステーブルを持っています。 私は更新可能なTClientDatasetを使用していますが、すべて正常に動作します。更新可能なTClientDatasetに書き込み可能なダミーフィールドを追加

ここでは、ダミーフィールドを追加する必要があります。計算されたものではありません。 行の状態(私はApplyUpdatesの前に使用する情報)を書き込むことができる1つのフィールドですが、それはデータベーステーブルの一部ではありません。

私はthis illuminating postを見ましたが、追加されたフィールドが計算され、情報を更新して保持することはできません。 私にとっては大丈夫ではありません。

データベースから「ダミーフィールド」を追加しようとしましたが、ProviderFlagsを修正してpfUpdateを削除しました。

cds.CommandText := 'SELECT 1 AS DUMMY , CUSTOMERS.* FROM CUSTOMERS'; 
cds.Open; 
cds.FieldByName('DUMMY').ProviderFlags := []; 

私は、挿入SQLを構築する前に、ProviderFlagsプロバイダがチェックされていることProvider.pasで見てきました。これは確かにうまくいくはずです。問題は、上記の私の記述からProviderFlagsが更新されていないようです。

Fieldをオンザフライで追加する方法は分かっていますが、書き込み可能ですが、delphiデータベースの更新プロセスでは無視されますか?

私はデルファイ7を使用しています。

ありがとうございます。

+2

データ行と状態構造への参照を保持するだけのものをノックアウトすることができない何らかの理由はありますか?あなたのことを大騒ぎしてください。 –

+0

私は州のための外部データ構造を持っていないので。データセットとは別に作成したいとは思いません。 Uwe Raabeが提案する解決策は、痛みや混乱のないことです。 – Jako

+0

どちらも問題があるようですが、@Uweによって提案されたアプローチはさらに問題にはなりません。 –

答えて

6

InternalCalcフィールドフィールドを作成し、そのProviderFlagsプロバイダ [] に設定します。これにより、フィールドはアプリケーションに書き込み可能になりますが、基になるデータベースを更新するときにフィールドをスキップします。

+0

ありがとうUwe!それでおしまい!私はこれを実装し、魅力的に働いた。とにかく、私はProviderFlagsを設定する必要はありませんでした。フィールドInternalCalcを作成するだけで十分だった – Jako

関連する問題