以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]关于自动生成编号的问题? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=59742) |
-- 作者:rophy0952 -- 发布时间:2014/11/10 11:34:00 -- [求助]关于自动生成编号的问题? 遇到一个有点奇怪的问题,就是编号有时可以生成,有时就无法生成,我的代码是这样写的,当它无法生成编号时,我就将红色部分的改成“compute”,然后就可以生成了。当本来红色字体部分就是“compute”时,也是有时可以生成编号,有时无法生成编号。当它无法生成编号时,我将它改成“SQLCompute”,然后就又可以生成了。请问为什么会这样呢?如果可以一直自动生成呢?谢谢! If e.DataCol.Name = "出仓日期" Then If e.DataRow.Isnull("出仓日期") = True Then e.DataRow("出仓单号") = Nothing Else Dim bh As String = "CC" & Format(e.DataRow("出仓日期"),"yyMMdd") If e.DataRow("出仓单号").startswith(bh) = False Then Dim idx As Integer Dim max As String max = DataTables("原材料出仓主表").SQLCompute("max(出仓单号)","出仓单号 like \'" & bh & "*\'") If max >"" Then idx = cint(max.SubString(8,3)) + 1 Else idx = 1 End If e.DataRow("出仓单号") = bh & Format(idx,"000") End If End If End If |
-- 作者:Bin -- 发布时间:2014/11/10 11:35:00 -- 因为你没保存,所以在数据库里找不到数据 SQLCompute是在后台数据库统计 |
-- 作者:有点甜 -- 发布时间:2014/11/10 11:37:00 -- If e.DataCol.Name = "出仓日期" Then If e.DataRow.Isnull("出仓日期") = True Then e.DataRow("出仓单号") = Nothing Else Dim bh As String = "CC" & Format(e.DataRow("出仓日期"),"yyMMdd") Dim idx As Integer Dim max As String max = DataTables("原材料出仓主表").SQLCompute("max(出仓单号)","出仓单号 like \'" & bh & "*\'") If max >"" Then idx = cint(max.SubString(8,3)) + 1 Else idx = 1 End If e.DataRow("出仓单号") = bh & Format(idx,"000") End If |
-- 作者:rophy0952 -- 发布时间:2014/11/10 11:50:00 -- @有点甜: 您的意思是说要删除“ If e.DataRow("出仓单号").startswith(bh) = False Then”这段代码?刚才试过删除了以后,编号就无法自动加“1”了。
|
-- 作者:有点甜 -- 发布时间:2014/11/10 12:06:00 -- 如果你用sqlcompute,那么,你就需要在最后对此行save一下
e.DataRow.Save |
-- 作者:rophy0952 -- 发布时间:2014/11/10 13:42:00 -- 保存完还是一样。 |
-- 作者:飞飞 -- 发布时间:2014/11/10 14:06:00 -- 一次操作一条问题不大,多条操作需要其他辅助 |
-- 作者:飞飞 -- 发布时间:2014/11/10 14:11:00 -- max = DataTables("原材料出仓主表").SQLCompute("max(出仓单号)","出仓单号 like \'" & bh & "*\'") 改成 max = DataTables("原材料出仓主表").SQLCompute("max(出仓单号)","出仓单号 like \'" & bh & "%\'") |
-- 作者:有点甜 -- 发布时间:2014/11/10 14:13:00 -- If e.DataCol.Name = "出仓日期" Then If e.DataRow.Isnull("出仓日期") = True Then e.DataRow("出仓单号") = Nothing Else Dim bh As String = "CC" & Format(e.DataRow("出仓日期"),"yyMMdd") Dim idx As Integer Dim max As String max = DataTables("原材料出仓主表").SQLCompute("max(出仓单号)","出仓单号 like \'" & bh & "%\'") If max >"" Then idx = cint(max.SubString(8,3)) + 1 Else idx = 1 End If e.DataRow("出仓单号") = bh & Format(idx,"000") e.DataRow.Save End If |
-- 作者:rophy0952 -- 发布时间:2014/11/10 14:14:00 -- 可以了,谢谢飞飞! |