以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=118864)

--  作者:czquickly
--  发布时间:2018/5/12 14:02:00
--  此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据
想实现“项目进度”中“责任人”变更后,把该项目编号所有的责任人信息更新到“项目信息”中“自动组成员”。不加红色代码,运行正常。假如甲、乙都打开表后,A项目里有3个责任人,甲先添加了个新责任人,那么甲界面里的“自动组成员”里变成4个人;后来乙又添加了个新责任人,在乙界面里“自动组成员”还是4个人,甲加进去的责任人就被覆盖掉了。加了红色代码后,整个运行就出错“此行已从表中移除并且没有任何数据。BeginEdit() 将允许在此行中创建新数据”。
If e.DataCol.Name = "责任人" Then
    DataTables("项目进度").Save()
    DataTables("项目进度").RemoveFor("项目编号 = \'" & e.DataRow("项目编号") & "\'")
    DataTables("项目进度").AppendLoad("项目编号 = \'" & Tables("项目信息").Current("项目编号") & "\'",True)
    Dim dr As DataRow
    Dim st As String
    dr = DataTables("项目信息").Find("[项目编号] = \'" & Tables("项目信息").Current("项目编号") & "\'")
    If dr IsNot Nothing
        dr("自动组成员") = st & DataTables("项目进度").GetComboListString("责任人","项目编号 = \'" & e.DataRow("项目编号") & "\'", "_Identify").Replace("|",",")
          End If
End If
DataTables("项目信息").Save()
这代码应该如何修改?能够在变更的时候,先加载未显示数据,在汇总。除了OpenQQ即时高效同步数据外,还有其它办法不?OpenQQ一点不会

--  作者:czquickly
--  发布时间:2018/5/12 15:20:00
--  
If e.DataCol.Name = "责任人" Then
    DataTables("项目进度").Save()
    DataTables("项目进度").RemoveFor("项目编号 = \'" & e.DataRow("项目编号") & "\'")
    DataTables("项目进度").AppendLoad("项目编号 = \'" & Tables("项目信息").Current("项目编号") & "\'",True)
    Dim dr As DataRow
    Dim st As String
    dr = DataTables("项目信息").Find("[项目编号] = \'" & Tables("项目信息").Current("项目编号") & "\'")
    If dr IsNot Nothing
        dr("自动组成员") = st & DataTables("项目进度").GetComboListString("责任人","项目编号 = \'" & Tables("项目信息").Current("项目编号") & "\'", "_Identify").Replace("|",",")
          End If
End If
DataTables("项目信息").Save()
修改后问题解决,应该是清除数据,再加载就没有对应的e.DataRow("项目编号")了,要依据关联表上的项目编号来汇总

--  作者:有点蓝
--  发布时间:2018/5/12 15:20:00
--  
同一行的并发是无法控制的,必须使用独占式编辑:http://www.foxtable.com/webhelp/scr/3007.htm