以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关联表,父表连续增加行,子表只增加一行 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97793) |
||||
-- 作者:warrior -- 发布时间:2017/3/18 14:21:00 -- [求助]关联表,父表连续增加行,子表只增加一行 具体环境: 1.父表和子表,都是后台数据表。 2.项目打开后,父表不加载,子表全部加载。 3.父表是在listview中显示,在listview中有添加行的按钮。参考的是帮助P1192 出现现象:父表增加行多次后,子表只增加一行,请指点!
|
||||
-- 作者:warrior -- 发布时间:2017/3/18 15:20:00 -- 老师们,有思路吗? |
||||
-- 作者:有点蓝 -- 发布时间:2017/3/18 15:21:00 -- 贴出相关代码,或者上传例子 |
||||
-- 作者:warrior -- 发布时间:2017/3/18 15:38:00 -- 父表datacolchanged代码 Select Case e.DataCol.Name
Case "编号" \'P596 If e.DataRow.IsNull("编号") = False Then If e.DataRow.GetChildRows("基本信息").Count = 0 Then Dim dr As DataRow = DataTables("基本信息").AddNew() dr("编号") = e.DataRow("编号") dr("姓名") = e.DataRow("姓名") dr("手机") = e.DataRow("手机") End If End If End Select 父表增加行在listview显示没有问题,只是子表每次打开项目仅能增加一行
|
||||
-- 作者:有点蓝 -- 发布时间:2017/3/18 16:06:00 -- 是不是限制了加载数 |
||||
-- 作者:warrior -- 发布时间:2017/3/18 16:59:00 --
解压到D盘 我把代码精简到很少,几乎是照着手册做的小例子,然后子表全部加载、父表不加载,还是老样子 感觉是不是没有全部加载的问题,我们这个父表不能全部加载的啊
|
||||
-- 作者:warrior -- 发布时间:2017/3/19 9:13:00 -- 我反复试了几个小时,苦恼 老师们,有进展、或者思路吗?
[此贴子已经被作者于2017/3/19 9:14:02编辑过]
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2017/3/20 8:28:00 -- 你的父表编号列,是一个自增量的主键,是在保存的时候自动生成的,只有在保存的时候触发一下,所以会自动增加一行。 你的子表编号列,也是一个自增量主键,父表和子表通过编号列渐渐关联,这就有问题了,主键是不能重复的,所以你接下来手工也无法在子表增加行了,所以父表每行在子表永远只有一行。 你没有明白关联的意思,也没有明白主键的意思。 主键是唯一识别某一行的,同一个表不能有两行的主键相同 关联只能通过主表的主键列建立 例如订单和订单明细,通过订单编号建立关联,订单表的主键是订单编号,订单明细表的主键绝对不能为订单编号,除非你一个订单只有一个明细。
|
||||
-- 作者:warrior -- 发布时间:2017/3/20 8:58:00 -- 狐老大分析得很透,具体到我上面例子,它的父表和子表是一一对应的,父表主键是自动增量列,子表的的关联列设置的也是主键,是长整型(access里设置的,不是自动增量型)。 所以感觉不是因为子表里面的编号重复的问题,因为它是把父表的自动增量列的编号值复制过来的。 老大有修改的思路吗?(父表子表一对一对应,尽量不修改子表的主键) |
||||
-- 作者:有点色 -- 发布时间:2017/3/20 11:13:00 -- 不明白你表达的意思。
你要一一对应,那么你就把关联列的值一一对应起来,就行啊。 |