1

データベース Paradox 7 があります。2 つのテーブル:

Order
--------
OCode
ODate // Buy date
OCount // Product count
PPrice // Price of product in current moment
PCode // Product code
CCode //Client code


Product
---------
PCode
PName
PPrice 

OrderTable(TTable) に、Product(relation PCode(Order)<->PCode(Product))を返すルックアップ フィールドを追加しますPNameDBGridフィールドOrder.PPriceストアで商品を選択するときに必要ですProduct.PPrice

PS>下手な英語でごめんなさい。

4

1 に答える 1

2

フォーム (またはデータモジュール) でメソッドを宣言HandleProductSelectionします。

procedure HandleProductSelection(Sender: TField);

AfterOpenOrderTableにハンドラーをアタッチします。そのイベント ハンドラーで、製品コード フィールドを見つけて、HandleProductSelection メソッドをフィールドの OnChange イベントにアタッチします。

procedure TForm1.OrderTableAfterOpen(DataSet: TDataSet);
var
  Field: TField;
begin
  Field := OrderTable.FindField('PCode'); 
  Field.OnChange := HandleProductSelection;
end;

これにより、OrderTable が開かれるたびにイベント ハンドラーが適切なフィールドにアタッチされ、製品コード フィールドの内容が変更されるたびに HandleProductSelection メソッドが呼び出されるようになります。

HandleProductSelection メソッドを実装します。フィールド エディタを使用して製品コードのルックアップ フィールドを定義した場合、フォーム (またはデータモジュール) に製品データセットがあります。製品情報を含むデータセットは、OrderTable の現在のレコードの製品コード フィールドの値に従って配置されます。

Product データセットから OrderTable に情報を転送するだけで、HandleProductSelection メソッドでこれを利用できます。

procedure TForm1.HandleProductSelection(Sender: TField);
begin
  OrderTable.FieldByName('PPrice').AsCurrency := 
    DataSetProduct.FieldByName('PPrice').AsCurrency;
end;
于 2011-12-23T18:01:40.770 に答える