我有数据库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
P.S&gt;抱歉我的英语不好。
答案 0 :(得分:2)
在表单(或datamodule)中声明HandleProductSelection
方法:
procedure HandleProductSelection(Sender: TField);
将AfterOpen
处理程序附加到OrderTable。在该事件处理程序中,找到Product code字段并将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数据集中的信息传输到OrderTable,即可在HandleProductSelection方法中利用此功能:
procedure TForm1.HandleProductSelection(Sender: TField);
begin
OrderTable.FieldByName('PPrice').AsCurrency :=
DataSetProduct.FieldByName('PPrice').AsCurrency;
end;