以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教~关联表问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=45557)

--  作者:happly145
--  发布时间:2014/2/2 23:40:00
--  请教~关联表问题
内部数据
1、表A 和 表B 关联相关的列,存在未相关列。
2、操作表A,按增加一行按钮后,输入相关数值,如果每列都输数值。增加表B一行后 的将发生错误。
不知道什么原因,请老师讲解·

--  作者:y2287958
--  发布时间:2014/2/3 8:12:00
--  
上个例子吧
实在难以揣测

--  作者:happly145
--  发布时间:2014/2/3 11:50:00
--  
第一个是父表,有单独的增加行按钮

图片点击可在新窗口打开查看此主题相关图片如下:5.jpg
图片点击可在新窗口打开查看
第二个是子表,有单独的增加行按钮

图片点击可在新窗口打开查看此主题相关图片如下:6.jpg
图片点击可在新窗口打开查看
关联表中前四列关联。
父表输入前四列后,如果不新增子表的行,
控制子表的内部数据将会发生错误,并且新增多个空白行。怎么回事呀~

图片点击可在新窗口打开查看此主题相关图片如下:7.jpg
图片点击可在新窗口打开查看

[此贴子已经被作者于2014-2-3 11:50:52编辑过]

--  作者:happly145
--  发布时间:2014/2/6 21:58:00
--  
?有人知道怎么回事吗?
--  作者:Bin
--  发布时间:2014/2/7 8:32:00
--  
把文件例子发上来吧.
--  作者:happly145
--  发布时间:2014/2/9 18:08:00
--  
我上传了个例子,当在主表中新增一行时,如果全部信息填写完,再新增子表的信息时,返回后面的内部数据就会出错。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.rar


--  作者:lsy
--  发布时间:2014/2/9 18:57:00
--  

返回后面的内部数据?

不知道什么意思。


--  作者:有点甜
--  发布时间:2014/2/9 19:09:00
--  
 测试了一下,你的例子,如何操作,会出现你所说的错误?
--  作者:happly145
--  发布时间:2014/2/9 22:01:00
--  
1)进入窗口管理,设置窗口,文件预览,点右键在主表中增加一行,填写完主表所有内容后,再子表(下面的表)中增加行,关闭窗口后,点击文件退出。
2)查看工时统计表,发现出现混乱的情况。
图片点击可在新窗口打开查看此主题相关图片如下:8888888888888.jpg
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2014/2/9 22:11:00
--  
 修改表datacolchanged事件的代码如下

If e.DataCol.Name.StartsWith("工序") Then
    Dim filter As String = "产品名称 = \'" & e.DataRow("产品名称") & "\'"
    Dim fdr As DataRow = DataTables("产品信息").Find(filter)
    If fdr IsNot Nothing Then
        Dim sum As Double = e.DataTable.Compute("sum(数量)", filter & " and 单号 = \'" & e.DataRow("单号") & "\' and " & e.DataCol.Name & " = \'" & e.NewValue & "\'")
        sum = sum * fdr(e.DataCol.Name)
        Dim fdr2 As DataRow  = DataTables("工时统计").Find(filter & " and 单号 = \'" & e.DataRow("单号") & "\'")
        If fdr2 Is Nothing Then
            fdr2 = DataTables("工时统计").AddNew
            fdr2("产品名称") = e.DataRow("产品名称")
            fdr2("日期") = e.DataRow("日期")
            fdr2("单号") = e.DataRow("单号")
        End If
        If DataTables("工时统计").DataCols.Contains(e.NewValue) Then
            fdr2(e.NewValue) = sum
        End If
        If e.OldValue IsNot Nothing AndAlso DataTables("工时统计").DataCols.Contains(e.OldValue) Then
            fdr2(e.OldValue) = fdr(e.DataCol.Name) * e.DataTable.Compute("sum(数量)", filter & " and 单号 = \'" & e.DataRow("单号") & "\' and " & e.DataCol.Name & " = \'" & e.OldValue & "\'")
        End If
    Else
        msgbox("没有找到【产品信息】对应的数据!")
    End If
End If