1

我有数据库 Paradox 7。两个表:

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))了返回的查找字段PName。我DBGrid在现场Order.PPrice商店选择产品时需要Product.PPrice

PS>对不起我的英语不好。

4

1 回答 1

2

HandleProductSelection在表单(或数据模块)中声明一个方法:

procedure HandleProductSelection(Sender: TField);

AfterOpen处理程序附加到 OrderTable。在该事件处理程序中,找到产品代码字段并将 HandleProductSelection 方法附加到该字段的 OnChange 事件。

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

这确保了无论何时打开 OrderTable,事件处理程序都将附加到正确的字段,进而确保在产品代码字段的内容发生更改时调用 HandleProductSelection 方法。

实现 HandleProductSelection 方法。如果您使用字段编辑器定义了产品代码的查找字段,那么您的表单(或数据模块)上有一个产品数据集。然后将根据您的 OrderTable 的当前记录中的 Product code 字段的值来定位具有产品信息的数据集。

您可以在 HandleProductSelection 方法中利用这一点,只需将信息从 Product 数据集传输到 OrderTable:

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