以文本方式查看主题

-  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
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
--  
保存完还是一样。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20141110134126.png
图片点击可在新窗口打开查看


--  作者:飞飞
--  发布时间: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
End If


--  作者:rophy0952
--  发布时间:2014/11/10 14:14:00
--  
可以了,谢谢飞飞!