以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [讨论]表事件代码运行结果不正确 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=73481) |
-- 作者:huangfanzi -- 发布时间:2015/8/20 9:53:00 -- [讨论]表事件代码运行结果不正确 表事件:DataColChanged 如上图所示,为什么一条一条记录录入能自动生成生产计划主号与分号,复制多条记录或重复填充就只能第一条记录运行正确,后面的就不对了。 \'自动录入生产计划主号与分号 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 |
-- 作者:大红袍 -- 发布时间:2015/8/20 10:14:00 -- CurrentTable.Current
全部改成
e.DataRow |