Foxtable(狐表)用户栏目专家坐堂 → 偶尔出现同步更新待办不成功


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

主题:偶尔出现同步更新待办不成功

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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
偶尔出现同步更新待办不成功  发帖心情 Post By:2021/10/15 16:18:00 [只看该作者]

 老师,我以下代码,放到表的DataColChanged 事件,会偶尔出现审批状态不能更新到待办事项表的情况,排除了ID重复的可能,请看看代码是否有问题?

'添加到待办事项
S  elect Case e.DataCol.Name
    C  ase  "审批状态","ID"
        If e.DataRow("审批状态") <> "已审批完成"  AndAlso e.DataRow("审批状态") <> ""  AndAlso e.DataRow("ID") <> "" Then
            Dim nma() As String = {"审批状态","ID"} 'A表数据来源列
            Dim nmb() As String = {"审批状态","ID"} 'B表数据接收列
            Dim dr As DataRow = DataTables("待办事项").SQLFind("ID = '" & e.DataRow("ID") & "'")
            If dr Is Nothing Then  '如果没有找到
                dr=DataTables("待办事项").AddNew()
                dr("所属机构") = _UserPart
                dr("表名") = 
                dr("页签名")= 
                dr("更新日期")= Data.Now
                For i As Integer = 0 To nma.Length - 1
                    dr(nmb(i)) = e.DataRow(nma(i))
                Next
            Else
                Dim Filter As String = "ID = '" & e.DataRow("ID") & "'"
                Dim drs  As  List(Of DataRow) =  DataTables("待办事项").S elect(Filter)
                For Each ds  As  DataRow  In drs
                    ds(e.DataCol.Name) = e.NewValue
                Next
            End If
            DataTables("待办事项").save
        Else
            DataTables("待办事项").sq   lDeletefor("ID = '" & e.DataRow("ID") & "'")
            DataTables("待办事项").s  ave
        End If
End S  elect

[此贴子已经被作者于2021/10/15 16:20:56编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111401 积分:567075 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/15 16:28:00 [只看该作者]

1、判断单元格空值使用isnull:http://www.foxtable.com/webhelp/topics/0426.htm
2、case里有2个列【Case  "审批状态","ID" 】,下面代码只会更新一个列的数据。如果是通过ID列触发的事件,就只会改ID列,不会改状态列的

                Dim Filter As String = "ID = '" & e.DataRow("ID") & "'"
                Dim drs  As  List(Of DataRow) =  DataTables("待办事项").S elect(Filter)
                For Each ds  As  DataRow  In drs
                    ds(e.DataCol.Name) = e.NewValue
                Next

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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/10/15 16:38:00 [只看该作者]

第一次添加到待办事项后,后面只需要更新审批状态列,意思是直接用find,找到后直接更新审批状态,不用S elect,这样写就行了哇?


            Else
                dr("审批状态") = e.DataRow("审批状态")

            End If

[此贴子已经被作者于2021/10/15 16:41:27编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111401 积分:567075 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/15 16:45:00 [只看该作者]

只有一条数据就使用find,如果有多条要更新就select

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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/10/15 16:52:00 [只看该作者]

以前还不是很清楚逻辑的时候弄的,那这儿该写成这样:dr("审批状态") = e.DataRow("审批状态"),还是写成这样: dr("审批状态") = e.NewValue 这个呢


 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111401 积分:567075 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/15 17:05:00 [只看该作者]

2楼说的很清楚了,e.NewValue是触发列的值,比如是更改ID列触发的事件,e.NewValue就是ID的值。

多个列的情况下,一般最好是指定列名取值

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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/10/18 14:29:00 [只看该作者]

老师,我有两个表更新审批状态还是不成功,是哪儿有问题啊?

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111401 积分:567075 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/18 14:39:00 [只看该作者]

能帮我申请到哈勃的使用权吗,我穿过千山万水看能不能看到您桌面的代码,然后脑补一下执行过程.....

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


加好友 发短信
等级:狐精 帖子:3223 积分:21401 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/10/18 14:40:00 [只看该作者]

以下是引用有点蓝在2021/10/18 14:39:00的发言:
能帮我申请到哈勃的使用权吗,我穿过千山万水看能不能看到您桌面的代码,然后脑补一下执行过程.....

什么意思?


 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111401 积分:567075 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/10/18 14:41:00 [只看该作者]

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=150626

 回到顶部
总数 14 1 2 下一页