Foxtable(狐表)用户栏目专家坐堂 → 跨表填报有错,请指正。


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

主题:跨表填报有错,请指正。

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


加好友 发短信
等级:童狐 帖子:215 积分:2306 威望:0 精华:0 注册:2020/10/3 6:58:00
跨表填报有错,请指正。  发帖心情 Post By:2020/10/30 22:57:00 [只看该作者]

我有《短信内容》与 《蒋安出差》两个表,如果短信内容的【是否填报】字段打钩,那么就先检查《蒋安出差表》当天是否填报过,没有再插入行或增加行,相反【是否填报】字段钩去掉,就删除当天同内容的行,测试有点问题,指正


If e.DataCol.Name = "是否填报" Then 
    Select Case  e.NewValue
        Case  True
            If  e.DataRow("会议时间") IsNot Nothing Then
                Dim dt As Date = e.DataRow("会议时间")
                Dim str As String =e.DataRow("内容")
                Dim dr As DataRow = DataTables("蒋安出差").find("出差起日期= '" & dt & "'")
                If dr IsNot Nothing Then
                    Dim Result As DialogResult
                    Result  = MessageBox.show("出差时间" & dt & Chr(13) & Chr(10) & "出差事由:" & str & ",","请检查是否填报",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)
                    If Result = DialogResult.Yes Then
                        Tables("蒋安出差").Sort = ""
                        Dim wz As Integer = Tables("蒋安出差").findrow(dr)
                        If wz >=0 Then
                            Tables("蒋安出差").Position = wz
                           Tables("蒋安出差").InsertNew()
                            Tables("蒋安出差").Current("出差起日期") = dt
                            Tables("蒋安出差").Current("工作地点及说明") = e.DataRow("内容")
                            Tables("蒋安出差").Current.Save
                            Tables("蒋安出差").Current.Load
                        End If
                    End If
                Else
                    Dim r1 As DataRow =  DataTables("蒋安出差").AddNew
                    r1("出差起日期") = dt
                    r1("工作地点及说明") = e.DataRow("内容")
                    r1.Load
                End If
            Else
                MessageBox.show("通知时间字段不能为空")
                Tables("蒋安出差").Select(0,0)
            End If
        Case  False
            If  e.DataRow("通知时间") IsNot Nothing Then
                Dim dt As Date = e.DataRow("会议时间")
                Dim str As String =e.DataRow("内容")
                Dim dr As DataRow = DataTables("蒋安出差").find("出差起日期= '" & dt & "' and 工作地点及说明 = '" & str & "'")
                If dr IsNot Nothing Then
                    Dim Result As DialogResult
                    Result  = MessageBox.show("出差时间" & dt & Chr(13) & Chr(10) & "出差事由:" & str & ",","请检查是否删除重复的填报",MessageBoxButtons.YesNo,MessageBoxIcon.Warning)
                    If Result = DialogResult.Yes Then
                        DataTables("蒋安出差").DeleteFor("出差起日期= '" & dt & "' and 工作地点及说明 = '" & str & "'")
                    End If
                    
                End If
            End If
            
    End Select
End If

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


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

有什么问题?

                        If wz >=0 Then
                            Tables("蒋安出差").Position = wz
                            dim r as row = Tables("蒋安出差").InsertNew()
                            r("出差起日期") = dt
                            r("工作地点及说明") = e.DataRow("内容")
                            r.Save
                        End If

刚刚新增的行,r1.Load完全就是多余的,也不会有任何作用

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


加好友 发短信
等级:童狐 帖子:215 积分:2306 威望:0 精华:0 注册:2020/10/3 6:58:00
  发帖心情 Post By:2020/10/31 10:19:00 [只看该作者]

 这里的代码改后放在datacolchanged还是datacolching事件好?测试时,反应都有点滞后。datacolchanged事件是鼠标离开总元格后才发生的。2.我重置列,什么反应也没有?

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


加好友 发短信
等级:超级版主 帖子:109503 积分:557183 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/10/31 10:43:00 [只看该作者]

什么反应也没有,说明不符合代码里的判断条件

单元格空值判断请统一使用isnull
If  e.DataRow("通知时间") IsNot Nothing Then
改为
If  e.DataRow.isnull("通知时间") = false Then

 回到顶部