Foxtable(狐表)用户栏目专家坐堂 → [讨论]表事件代码运行结果不正确


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

主题:[讨论]表事件代码运行结果不正确

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[讨论]表事件代码运行结果不正确  发帖心情 Post By:2015/8/20 9:53:00 [只看该作者]

表事件:DataColChanged

图片点击可在新窗口打开查看此主题相关图片如下:示例.gif
图片点击可在新窗口打开查看
如上图所示,为什么一条一条记录录入能自动生成生产计划主号与分号,复制多条记录或重复填充就只能第一条记录运行正确,后面的就不对了。

'自动录入生产计划主号与分号
If e.DataCol.Name = "编制时间"  Then
    If e.DataRow("编制时间") <> Nothing Then
        e.DataRow("月份")=Format(e.DataRow("编制时间"),"yyyy-MM")
        e.DataRow("日期")=Format(e.DataRow("编制时间"),"yyyy-MM-dd")
        Dim dr1 As DataRow
        dr1 = e.DataTable.SQLFind("[编制时间] = '" & CurrentTable.Current("编制时间") & "' And [_Identify] <> '" & CurrentTable.Current("_Identify") & "'" ,"生产计划分号 Desc",0)
        If dr1 IsNot Nothing Then '如果找到的话
            If dr1("生产计划分号") >= 99 Then
                MessageBox.Show("此主号的分号值已经达到99,不能再增加新的分号,本次编制时间取消录入!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                e.DataRow("编制时间") = Nothing
            Else
                CurrentTable.Current("生产计划主号") = dr1("生产计划主号")
                CurrentTable.Current("生产计划分号") = dr1("生产计划分号") +1
            End If
        Else
            Dim dr2 As DataRow
            dr2 = e.DataTable.SQLFind("[编制时间] <> '" & CurrentTable.Current("编制时间") & "' And [日期] = '" & CurrentTable.Current("日期") & "'","生产计划主号 Desc",0)
            If dr2 IsNot Nothing Then '如果找到的话
                If dr2("生产计划主号") >= 99 Then
                    MessageBox.Show("当日的主号值已经达到99,不能再增加新的主号,本次编制时间取消录入!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
                    e.DataRow("编制时间") = Nothing
                Else
                    CurrentTable.Current("生产计划主号") = dr2("生产计划主号") + 1
                    CurrentTable.Current("生产计划分号") = 1
                End If
            Else
                CurrentTable.Current("生产计划主号") = 1
                CurrentTable.Current("生产计划分号") = 1
            End If
        End If
    Else
        e.DataRow("生产计划主号") = Nothing
        e.DataRow("生产计划分号") = Nothing
        e.DataRow("生产计划编号") = Nothing
        e.DataRow("月份") = Nothing
        e.DataRow("日期") = Nothing
    End If
End If

'生产计划编号生成模块
If e.DataCol.Name = "编制时间" OrElse e.DataCol.Name = "生产计划主号" OrElse  e.DataCol.Name = "生产计划分号" Then
    If e.DataRow("编制时间") <> Nothing  AndAlso e.DataRow("生产计划主号") <> Nothing AndAlso e.DataRow("生产计划分号") <> Nothing Then
        Dim zh As String = CStr(e.DataRow("生产计划主号")) '分号转字符型
        If zh.Length = 1  Then '分号长度为1位时前面补字符0
            zh = "0" & zh
        End If
        Dim fh As String = CStr(e.DataRow("生产计划分号")) '分号转字符型
        If fh.Length = 1  Then '分号长度为1位时前面补字符0
            fh = "0" & fh
        End If
        e.DataRow("生产计划编号") = "SCJH" & Format(e.DataRow("编制时间"),"yyyy-MM-dd") & "-" & zh & "-" & fh
        
    End If
e.DataRow.Save
End If

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2015/8/20 10:14:00 [只看该作者]

CurrentTable.Current

 

全部改成

 

e.DataRow


 回到顶部