以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 求自动编号? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=49921)
|
-- 作者:狂风暴雨狂波
-- 发布时间:2014/4/25 21:39:00
-- 求自动编号?
在表事件DataColChanged的代码设置为:
If e.DataCol.Name = "托运日期" Then If e.DataRow.IsNull("托运日期") Then e.DataRow("货单编号") = Nothing Else Dim bh As String = Format(e.DataRow("托运日期"),"yyyyMMdd") If e.DataRow("货单编号").StartsWith(bh) = False Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(货单编号)","托运日期 = #" & e.DataRow("托运日期") & "# And [_Identify] <> " & e.DataRow("_Identify"))
If max > "" Then idx = CInt(max.Substring(7,3)) + 1 idx = 1 End If e.DataRow("货单编号") = bh & "-" & Format(idx,"000") End If End If End If
在运行的第一行时能自动编号,再到第二行输入日期后提示运行错误。如下图: 此主题相关图片如下:运行错误.bmp
|
-- 作者:Bin
-- 发布时间:2014/4/26 9:22:00
--
上个例子看看吧.
|
-- 作者:狂风暴雨狂波
-- 发布时间:2014/4/27 1:16:00
--
图示呀,输入第一行就自动带出了编号,输入第二行的日期后,就出现了这个提示框,我不知道问题出在哪?
|
-- 作者:程兴刚
-- 发布时间:2014/4/27 3:37:00
--
If e.DataCol.Name = "托运日期" Then If e.DataRow.IsNull("托运日期") Then e.DataRow("货单编号") = Nothing Else Dim bh As String = Format(e.DataRow("托运日期"),"yyyyMMdd") & "-" If e.DataRow("货单编号").StartsWith(bh) = False Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(货单编号)","托运日期 = #" & e.DataRow("托运日期") & "# And [_Identify] <> " & e.DataRow("_Identify"))
If max > "" Then idx = CInt(max.Substring(9,3)) + 1 idx = 1 End If e.DataRow("货单编号") = bh & Format(idx,"000") End If End If End If
[此贴子已经被作者于2014-4-27 3:37:58编辑过]
|
-- 作者:有点甜
-- 发布时间:2014/4/27 9:35:00
--
我觉得帮助有点小害人,直接这样写不是更好?
If e.DataCol.Name = "托运日期" Then If e.DataRow.IsNull("托运日期") Then e.DataRow("货单编号") = Nothing Else Dim bh As String = Format(e.DataRow("托运日期"),"yyyyMMdd") If e.DataRow("货单编号").StartsWith(bh) = False Dim max As String Dim idx As Integer max = e.DataTable.Compute("Max(货单编号)","托运日期 = #" & e.DataRow("托运日期") & "# And [_Identify] <> " & e.DataRow("_Identify"))
If max > "" Then idx = CInt(max.Substring(bh.length,3)) + 1 idx = 1 End If e.DataRow("货单编号") = bh & "-" & Format(idx,"000") End If End If End If
|
-- 作者:狂风暴雨狂波
-- 发布时间:2014/4/27 23:33:00
--
大家辛苦了,谢谢大家!其实你们的编码跟我的是一样的,经测试都不能递增编号,我已经找到了答案,经反复测试,是 idx = 1前面一行少了一个 Else语句,这个帮助真害人,害得我测试了三天。
|
-- 作者:狂风暴雨狂波
-- 发布时间:2014/4/27 23:36:00
--
如果没有 Else,得到的结果永远是1
|