0

我有一个使用 firebird 2.3 用 Delphi 2010 / dbExpress 编写的主/详细应用程序我发现了一个问题

如果我在详细信息中有两个或三个或更多相同的数据行,更改其中一个中的任何数据也会更改其他行上的数据,我猜这是因为更新仅使用 invoice_id 和 serial 作为键和数据在两种情况下都相等,则更新在两种情况下完成。

主数据 Invoice_id, serial, customer_id, date 1, A, 1.12 / 12 / 2010

详细数据 Invoice_id,序列号,数量,描述,价格 1,A,10,一些东西的盒子,52.52 1,A,10,一些东西的盒子,52.52

我想我可以通过使用字段 ltes 名称 ir line_no 来解决这个问题,其中每一行都有不同的数字,因此可以区分数据以进行如下更新:

Line_no,Invoice_id,序列号,数量,描述,价格 1.1,A,10,一些东西的盒子,52.52 2.1,A,10,一些东西的盒子,52.52

所以信息是一样的,但它也有 line_no 来区分更新中的信息

任何人都知道在客户端,在客户端数据集中执行此操作的任何方法,

非常感谢和问候

4

1 回答 1

1

您的详细信息表中似乎没有主键(假设 invoice_id 是主表的外键。为了确保 FireBird(或任何 dbExpress 连接的数据库)更新正确的记录,您应该添加一个主键(autoinc 字段)到明细表。

于 2010-12-17T07:45:16.250 回答