Foxtable(狐表)用户栏目专家坐堂 → datacolchanged 没反应&删除关联数据


  共有5428人关注过本帖树形打印复制链接

主题:datacolchanged 没反应&删除关联数据

帅哥哟,离线,有人找我吗?
lxhmax
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:5699 威望:0 精华:0 注册:2012/8/2 19:04:00
datacolchanged 没反应&删除关联数据  发帖心情 Post By:2014/3/25 4:56:00 [只看该作者]

麻烦各位老师帮我看下什么情况;

1,修改或者重置 样品信息表的检测项目时,检测结果表不会因为检测流程流转记录表新增数据而跟着新增数据,即datacolchanged事件没有反应
2,当删除检测流程流转记录表数据的时候,如果检测结果有多条子明细的时候(流转记录表11-004的数据一条对应检测结果11-004三条数据,删除的时候我是想删除流转记录表一条信息时,检测结果对应的三条都跟着删除,实际上检测结果只删除一条数据,请问下这个要怎么弄?

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



 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/25 8:26:00 [只看该作者]

1.测试会自动添加
2.添加了3条同样的11-004 删除一条并未见3条一起删除.

 回到顶部
帅哥哟,离线,有人找我吗?
lxhmax
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:5699 威望:0 精华:0 注册:2012/8/2 19:04:00
  发帖心情 Post By:2014/3/25 11:05:00 [只看该作者]

奇怪了,软件问题?我重启电脑也同样不行的! 第二个问题我意思是想三条全部删除,不是只删除一条

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251397 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/3/25 11:41:00 [只看该作者]

第一个问题,检查结果表确实没有增加,调整了红色代码的位置,也就是样品编号最后赋值,就可以了:

 

If e.DataCol.Name = "检测项目" Then
    Tables("检测流程流转记录表").StopRedraw
    Dim s As String = e.DataRow("检测项目")
    Dim s1 As String = e.DataRow("样品编号")
    DataTables("检测流程流转记录表").DeleteFor("[样品编号]= '" & s1 & "' And [发放记录表日期] Is null")
    If s <> "" And s1 <> "" Then
        Dim Values() As String = s.Split(",")
        For i As Integer = 0 To Values.Length - 1
            Dim Arys As List(Of String())
            Arys = DataTables("项目管理").GetValues("检测依据|公开报价","流转项目 = '" & Values(i) & "'")
            For Each Ary As String() In Arys
                'Dim dr As DataRow
                'dr = DataTables("检测流程流转记录表").Find("样品编号 = '" & s1 & "' and 检测项目 = '" & Values(i) & "'")
                'If dr Is Nothing Then
                '
                Dim r As Row = Tables("检测流程流转记录表").AddNew()
                r("检测依据") = Ary(0)
                r("公开报价") = Ary(1)
                r("检测项目") = Values(i)
                r("样品编号") = s1
               'End If
            Next
        Next
    End If
    Tables("检测流程流转记录表").ResumeRedraw
End If


Select Case e.DataCol.name
    Case "样品编号"
        Dim dr As DataRow = DataTables("样品出入库登记表").Find("样品编号 = '" & e.OldValue & "'")
        If dr Is Nothing Then
            dr = DataTables("样品出入库登记表").AddNew()
        End If
        dr("样品编号") = e.DataRow("样品编号")
End Select

 

理由涉及到逻辑问题,因为样品编号变化,导致样品项目变化,触发流转记录表的DataColChanged事件,如果其他列此时没有内容,即使触发事件也没有值供填充到检查结果表,所以只有等其他列的值全部写入了,最后再写样品编号列的内容。

 

其实这种问题,你可以用这个方法来分析:

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

 

一下子就知道原因了:事件触发了,但是GetValues没有取到值,自己分析比较方便,因为你知道具体的业务逻辑,别人就费力多了,要根据你的代码理清楚前后逻辑才能分析。

 

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目234.foxdb

[此贴子已经被作者于2014-3-25 11:47:10编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/3/25 11:45:00 [只看该作者]

额,楼主不是要这样自动添加吗? 我测试的时候怎么没问题.


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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251397 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/3/25 11:46:00 [只看该作者]

第二个问题,DatarowDeleting事件代码改为:

 

DataTables("委托协议书附件").deleteFor("样品项目 = '" & e.DataRow("样品项目") & "'")
DataTables("检测结果").DeleteFor("样品项目 = '" & e.DataRow("样品项目") & "'")

 

 

你原来的代码本来就是只删除一行的,参考:

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

 


 回到顶部
帅哥哟,离线,有人找我吗?
lxhmax
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:636 积分:5699 威望:0 精华:0 注册:2012/8/2 19:04:00
  发帖心情 Post By:2014/3/25 15:53:00 [只看该作者]

非常感谢两位老师,以后会好好分析先的~

 回到顶部