Foxtable(狐表)用户栏目专家坐堂 → 关于网络中应用的自动编号


  共有20229人关注过本帖树形打印复制链接

主题:关于网络中应用的自动编号

帅哥哟,离线,有人找我吗?
woodiy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
关于网络中应用的自动编号  发帖心情 Post By:2009/3/6 20:40:00 [只看该作者]

在网络中应用的系统,我原先设置的自动编号如下:

DataRowAdding

'''
Dim T1,T2 As String
T1 = "CK" & Format(Date.today,"yyyyMM")
T2 = "[出库单号] like '" & T1 & "*'and "
T2 = T2 & "[ID] < " & e.DataRow("ID")
Dim dr As DataRow = e.DataTable.Find(T2,"ID DESC")

e.DataRow("日期") = Date.today
If dr is Nothing then
   e.DataRow("出库单号") = T1 & "001"
Else
   Dim n As Integer = Cint(Right(dr("出库单号"),3))+1
   e.DataRow("出库单号") = T1 & Format(n,"000")
End If



我发现有些问题,就是当一个用户打开表格,并在增加记录且没有保存时, 另外一个用户也增加记录, 这样会出现编号相同的现象, 如果有关联表的话,就会现多个父亲的严重问题, 大家帮忙一下,看看有没有更好的办法.

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/3/6 21:09:00 [只看该作者]

参考:

http://www.foxtable.com/dispbbs.asp?boardid=2&Id=1727

 回到顶部
帅哥哟,离线,有人找我吗?
zhanglaoer
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:9 积分:183 威望:0 精华:0 注册:2009/3/6 0:17:00
  发帖心情 Post By:2009/3/7 0:57:00 [只看该作者]

好东西,收藏


 回到顶部
帅哥哟,离线,有人找我吗?
woodiy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
  发帖心情 Post By:2009/3/7 14:12:00 [只看该作者]

以下是引用狐狸爸爸在2009-3-6 21:09:00的发言:
参考:

http://www.foxtable.com/dispbbs.asp?boardid=2&Id=1727

If e.DataRow.IsNull("产品") Then
   Return
ElseIf e.DataRow.IsNull("编号") = False AndAlso e.DataRow("编号").StartsWith(e.DataRow("产品")) Then
   Return
End If
Dim cmd1 As New SQLCommand
Dim cmd2 As New SQLCommand
Dim cmd3 As New SQLCommand
Dim Key As Integer
cmd1.C
cmd2.C
cmd3.C
cmd1.commandText = "Select [编号] From [编号] Where [产品] = '"  & e.DataRow("产品")  & "'"
Key = cmd1.ExecuteScalar()
cmd2.commandText = "Update [编号] Set [编号] = " & (Key + 1)  & " Where [编号] = " & Key & " And [产品] = '" &e.DataRow("产品") & "'"
cmd3.commandText = "Select Count(*) From [编号] Where [产品] = '"  & e.DataRow("产品")  & "'"
If cmd3.ExecuteScalar = 0 Then
    cmd3.commandtext = "Insert Into 编号 (产品, 编号) Values('" & e.DataRow("产品") & "',1)"
    cmd3.ExecuteNonQuery
End If
Do
    If cmd2.ExecuteNonQuery() > 0 Then
        Exit Do
    Else
        Key = cmd1.ExecuteScalar()
        cmd2.commandText = "Update [编号] Set [编号] = " & (Key + 1)  & " Where [编号] = " & Key & " And [产品] = '" &e.DataRow("产品") & "'"
    End If
Loop
e.DataRow("编号") = e.DataRow("产品") & "-" & Format(Key,"0000")

这个代码能否使用简单一点啊,如
KP0903001
KP0903002
....


 回到顶部
帅哥哟,离线,有人找我吗?
kylin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 F6
等级:狐精 帖子:3036 积分:19223 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2009/3/7 17:39:00 [只看该作者]

有时候,简单并不可以严密,这已经是严密之后的简单了

 回到顶部
帅哥哟,离线,有人找我吗?
woodiy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:363 积分:2998 威望:0 精华:0 注册:2008/11/11 13:42:00
  发帖心情 Post By:2009/3/8 15:39:00 [只看该作者]

我的自动编号列为父表关联表,你的这个方法好像行不通

 回到顶部