我有数据库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
。当我在Order.PPrice
领域选择DBGrid
产品时需要Product.PPrice
p。对不起,我的英语不好。
在表单(或数据模块)中声明一个HandleProductSelection
方法:
procedure HandleProductSelection(Sender: TField);
附加OrderTable AfterOpen
处理程序。在该事件处理程序中,找到Product代码字段并将HandleProductSelection方法附加到该字段的OnChange事件。
procedure TForm1.OrderTableAfterOpen(DataSet: TDataSet);
var
Field: TField;
begin
Field := OrderTable.FindField('PCode');
Field.OnChange := HandleProductSelection;
end;
这确保无论何时您的OrderTable被打开,事件处理程序将被附加到适当的字段,并且反过来将确保无论何时产品代码字段的内容被更改,HandleProductSelection方法将被调用。
实现HandleProductSelection方法如果您使用字段编辑器定义了产品代码的查找字段,那么您的表单(或数据模块)上就有了一个product数据集。然后,带有产品信息的数据集将根据OrderTable当前记录中的product code字段的值进行定位。
您可以在HandleProductSelection方法中利用这一点,只需将信息从Product数据集传输到OrderTable:
procedure TForm1.HandleProductSelection(Sender: TField);
begin
OrderTable.FieldByName('PPrice').AsCurrency :=
DataSetProduct.FieldByName('PPrice').AsCurrency;
end;