主细表问题(50分)

  • 主题发起人 主题发起人 王瑞
  • 开始时间 开始时间

王瑞

Unregistered / Unconfirmed
GUEST, unregistred user!
二个TABLE A和B,是主细关系,主A主键ID定义为自累加字段,
细B主键ID+IT,当A追加(APPENDRECORD)一条纪录时如何保证
细B的ID与主A的ID一致
 
当A追加(APPENDRECORD)一条纪录时与B无关吧,

只有当B追加(APPENDRECORD)一条纪录时才需考虑与A的ID一至的问题。
在建表时,建立A与B的ID字段间的lookup关系就是了。
 
POST前用一个SQL查询ID再赋值
 
agree with amo

 
这样做,假如主表Table1(字段为MasterID和细表Table2(字段Detailid和
NextID,把Detailid设置为Secondary Indexes,把Nextid设置为主关键字,同
时定义为自动累加),在form1添加两个表Master(对应Table1)和Detail(对应
Table2),在Detail的OnNewRecord事件为:
DetailDetailid.Value:=masterMasterid.Value;
OK!
这个问题只要看一看Delphi的Demos就完全可以解决的了。
 
进一步说明,当A追加(APPENDRECORD)一条纪录时与B无关,
但同时也使B追加(APPENDRECORD)几条纪录
B的这几条纪录ID与A一致.
请问A与B的ID字段间的lookup关系该怎样实现
 
为何要自累加字段?APPENDRECORD时,主A主键 ID:=A.RecordCount+1不就行了
 
当在主表中增加一条记录后,当你对细表操作时,细表的 ID 自动会
与主表一致的,也就是说你不用考虑这种情况。
不信你可以在一个窗体上放两个DBGrid,分别连主,细表,细表的
mastersource 和 master field 均设为主表,然后向主表中增加一条记录
再向细表中增加记录时,你会看到细表的 ID 字段会自动与主表一致。
 
hehe, recordcount如果有删除会出现重复id.
确实a增加记录不用考虑b, 而在b增加时要
tableb.fieldbyname(id).asinteger:=tablea.fieldbyname(id).asinteger;
 
多人接受答案了。
 
后退
顶部