以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]双表对应的行自动更新  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=82982)

--  作者:benwong2013
--  发布时间:2016/3/29 11:16:00
--  [求助]双表对应的行自动更新

图片点击可在新窗口打开查看此主题相关图片如下:飞信截图20160329110624.png
图片点击可在新窗口打开查看

如上表两个表中均有“项目编号”和“表单编号”两个行,需要实现如下功能:

如果表一有更新数据的时候,表二能根据设定如下条件自动更新数据:

1.表二能根据表一列出的“项目编号”和“表单编号”自动更新,若在“项目编号”和“表单编号”同时存在的话将不会重复再写入,不一样的时候将继续写入;

2.若表一数据有变更的时候,表二的数据能依照第一点的要求自动更新;

请问应该如何处理?

--  作者:大红袍
--  发布时间:2016/3/29 11:35:00
--  

帮助本来就有。

 

http://www.foxtable.com/help/topics/2490.htm

 


--  作者:benwong2013
--  发布时间:2016/3/29 11:48:00
--  
之前有印象,今天找了好久没有找到,谢谢老师了
--  作者:benwong2013
--  发布时间:2016/3/29 15:54:00
--  

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


我根据帮助设置了代码,但有如下问题:

1.在表一新增了,需要在表一点几次重置列之后才能更新到表二;
2.更新到表二应该是自动保存的,但后台查阅数据还是未保存状态,请问如何处理可以做到实时更新及自动保存;

Select Case e.DataCol.name
    Case "报告表单编号"
        Dim dr As DataRow = DataTables("T_TestF").Find("报告表单编号 = \'" & e.OldValue & "\'")
        If dr Is Nothing Then 
            dr = DataTables("T_TestF").AddNew()
            dr("报告表单编号") = e.DataRow("报告表单编号")
            dr("报告编号") = e.DataRow("报告编号")
            dr("表单编号") = e.DataRow("表单编号")
        Else
            dr("报告表单编号") = e.DataRow("报告表单编号")
        End If
    Case "报告编号","表单编号"
        Dim dr As DataRow = DataTables("T_TestF").Find("报告表单编号 = \'" & e.DataRow("报告表单编号") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select
[此贴子已经被作者于2016/3/29 15:54:04编辑过]

--  作者:大红袍
--  发布时间:2016/3/29 16:21:00
--  
Select Case e.DataCol.name
    Case "报告表单编号"
        Dim dr As DataRow
        If e.oldvalue = Nothing Then
            dr = DataTables("T_TestF").Find("报告表单编号 = \'" & e.newvalue & "\'")
        Else
            dr = DataTables("T_TestF").Find("报告表单编号 = \'" & e.oldvalue & "\'")
        End If
        If dr Is Nothing Then
            dr = DataTables("T_TestF").AddNew()
            dr("报告表单编号") = e.DataRow("报告表单编号")
            dr("报告编号") = e.DataRow("报告编号")
            dr("表单编号") = e.DataRow("表单编号")
        Else
            dr("报告表单编号") = e.DataRow("报告表单编号")
        End If
        dr.save
    Case "报告编号","表单编号"
        Dim dr As DataRow = DataTables("T_TestF").Find("报告表单编号 = \'" & e.DataRow("报告表单编号") & "\'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
            dr.save
        End If
End Select

--  作者:benwong2013
--  发布时间:2016/3/29 18:02:00
--  
还是没有办法做到实时更新;
--  作者:大红袍
--  发布时间:2016/3/29 18:07:00
--  
肯定能实时更新的,不然你做个具体例子发上来测试,说明怎么不能实时更新。
--  作者:benwong2013
--  发布时间:2016/3/29 18:22:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目.foxdb


老师,在窗口中添加报告项目明细之后就会填写入T_Item表中

--  作者:大红袍
--  发布时间:2016/3/29 18:32:00
--  

不要用表达式列。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目.foxdb