在Delphi中从查找字段中获取值



我有数据库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;

相关内容

  • 没有找到相关文章

最新更新