以文本方式查看主题

-  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
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:信息管理系统.rar


解压到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
--  

不明白你表达的意思。

 

你要一一对应,那么你就把关联列的值一一对应起来,就行啊。