我有一个使用firebird 2.3在Delphi 2010 / dbExpress中编写的主/详细应用程序 我发现了一个问题
如果我在细节中有两个或三个或更多相同的数据行,更改其中一个数据中的任何数据也会更改其他行上的数据,我想这是因为更新仅使用invoice_id和serial作为键两种情况下数据相同,更新都是在两种情况下完成的。
主数据 Invoice_id,serial,customer_id,date 1,A,1.12 / 12/2010
详细数据 Invoice_id,serial,qty,description,Price 1,A,10,某些人的盒子,52.52 1,A,10,某些人的箱子,52.52
我想我可以通过使用字段名称ir line_no来解决这个问题,其中每一行都有不同的编号,因此可以区分数据以进行如下更新:
Line_no,Invoice_id,serial,qty,description,Price 1.1,A,10,某些人的箱子,52.52 2.1,A,10,某些人的箱子,52.52
所以信息是相同的,但它也有line_no来区分更新中的信息
任何人都知道如何在客户端,在clientdataset
中执行此操作非常感谢和问候
答案 0 :(得分:1)
您的详细信息表中似乎没有主键(假设invoice_id是主表的外键。要确保FireBird(或任何dbExpress连接的数据库)更新正确的记录,您应该添加主键( autoinc字段)到详细信息表。