以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  后台连续编号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=12881)

--  作者:blackzhu
--  发布时间:2011/9/19 12:06:00
--  后台连续编号

If e.DataCol.Name = "时间" Then \'如果更改的是身份证号码列
    If e.DataRow.IsNull("时间") Then \'身份证号码是否为空
        e.DataRow("编号") = Nothing \'如果为空,则清除出生日期
    Else
        Dim cmd As New SQLCommand
        Dim dt As DataTable
        cmd.C
        cmd.CommandText = "SELECT Max(编号) From {编号1} Where 时间 =#" & e.DataRow("时间") & "#"
        dt = cmd.ExecuteReader()
        If dt.Datarows.Count> 0 Then
            e.DataRow("编号") = Format(e.DataRow("时间"),"yyMMdd") & Format(e.DataTable.Compute("Count(时间)","时间= #" & e.DataRow("时间") & "# ") & "\'"),"000")
        End If
    End If
End If

 

  后台已经有1 2 3三个连续编号,同一天,然后打开系统再次编号,编号还是从1开始,这个代码错在哪儿?


--  作者:狐狸爸爸
--  发布时间:2011/9/19 12:15:00
--  

e.DataRow("编号") = Format(e.DataRow("时间"),"yyMMdd") & Format(e.DataTable.Compute("Count(时间)","时间= #" & e.DataRow("时间") & "# ") & "\'"),"000")

 

应该改为:

 

e.DataRow("编号") = Format(e.DataRow("时间"),"yyMMdd") & Format(dt.Datarow(0)("编号1") + 1,"000")


--  作者:blackzhu
--  发布时间:2011/9/19 14:21:00
--  
这个不行,刚才我跟你谈过后将代码改成:

If e.DataCol.Name = "时间" Then \'如果更改的是身份证号码列
    If e.DataRow.IsNull("时间") Then \'身份证号码是否为空
        e.DataRow("编号") = Nothing \'如果为空,则清除出生日期
    Else
        Dim cmd As New SQLCommand
        Dim dt As DataTable
        cmd.C
        cmd.CommandText = "SELECT * From {编号1} Where 时间 = #" & e.DataRow("时间") & "#"
        dt = cmd.ExecuteReader()
        If dt.Datarows.Count> 0 Then
            e.DataRow("编号") = Format(dt.DataRows(0)("编号") + 1,"000")
        Else
            e.DataRow("编号") = Format(e.DataRow("时间"),"yyMMdd") & "001"
        End If
    End If
End If

但是不管是保存还是不保存,后台三个编号  001  002  003  新增行做来做去都是002?不知为什么?

--  作者:blackzhu
--  发布时间:2011/9/19 14:24:00
--  
换个浏览器貌似可以啊.
--  作者:客人
--  发布时间:2011/9/19 15:08:00
--  
怎么不回复了?
--  作者:blackzhu
--  发布时间:2011/9/19 15:15:00
--  

搞定了: 按照老大做发,始终是第一行+1而已.


If e.DataCol.Name = "时间" Then \'如果更改的是身份证号码列

    If e.DataRow.IsNull("时间") Then \'身份证号码是否为空

        e.DataRow("编号") = Nothing \'如果为空,则清除出生日期

    Else

        Dim cmd As New SQLCommand

        Dim dt As DataTable

        cmd.C

        cmd.CommandText = "SELECT * From {编号1} Where 时间 = #" & e.NewValue & "#"

        dt = cmd.ExecuteReader()

        If dt.Datarows.Count> 0 Then

            e.DataRow("编号") = Format(dt.Compute("Max(编号)") + 1,"000")

        Else

            e.DataRow("编号") = Format(e.DataRow("时间"),"yyMMdd") & "001"

        End If

    End If

End If


--  作者:狐狸爸爸
--  发布时间:2011/9/19 15:27:00
--  
换什么浏览器了?
--  作者:blackzhu
--  发布时间:2011/9/20 11:20:00
--  
谷歌