以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 多个填报人一起填报报表,如何实现新增行时,让“编号”按照“填报人”的本人顺序增加1。 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=157420) |
-- 作者:吃亏是福 -- 发布时间:2020/10/15 14:27:00 -- 多个填报人一起填报报表,如何实现新增行时,让“编号”按照“填报人”的本人顺序增加1。 多个填报人一起填报报表,如何实现新增行时,让“编号”按照“填报人”的本人顺序增加1。 表事件
工作日志基础数据_DataRowAdding e.DataRow("部门")
= User.Group e.DataRow("填报人")
= User.name e.DataRow("日期")
= Date.Today() \'e.DataRow("编号")
= e.DataTable.Compute("Max(编号)") + 1 If User.Name
<> "填报人" Then \'如果"填表人"是"填报人" Dim ColNames As String() = {"填报人"}
\'定义一个数组,保存复制列的名称 Dim dr As DataRow =
e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) \'获得最后一行 For Each ColName As String In ColNames e.DataRow("编号") = dr("编号")
+ 1 \'e.DataRow(ColName) = dr(ColName) 将最后一行的内容复制到新增行中. Next End If |
-- 作者:有点蓝 -- 发布时间:2020/10/15 14:33:00 -- 参考:http://www.foxtable.com/webhelp/topics/2403.htm,三、按类别编号,把类别改为填报人即可 |
-- 作者:吃亏是福 -- 发布时间:2020/10/15 15:11:00 -- 运行错误 DataColChanged事件代码: Select e.DataCol.Name Case "填报人" If e.DataRow.IsNull("填报人") Then e.DataRow("编号") = Nothing Else Dim lb As String = e.DataRow("填报人") If e.DataRow("编号").StartsWith(lb) = False \'如果单据编号前缀不符 Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(编号)","填报人 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(2,3)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("编号") = lb & Format(idx,"000") End If End If End Select 错误所在事件:表,工作日志基础数据,DataColChanged 详细错误信息: 调用的目标发生了异常。 未找到类型“Integer”的公共成员“StartsWith”。 |
-- 作者:有点蓝 -- 发布时间:2020/10/15 15:46:00 -- Select e.DataCol.Name Case "填报人" If e.DataRow.IsNull("填报人") Then e.DataRow("编号") = Nothing Else Dim lb As String = e.DataRow("填报人") Dim max As Integer max = e.DataTable.Compute("Max(编号)","填报人 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号 idx = max + 1 e.DataRow("编号") = idx End If End Select
|