Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

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

1楼
woodiy 发表于: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楼
狐狸爸爸 发表于:2009/3/6 21:09:00
参考:

http://www.foxtable.com/dispbbs.asp?boardid=2&Id=1727
3楼
zhanglaoer 发表于:2009/3/7 0:57:00

好东西,收藏

4楼
woodiy 发表于: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
....

5楼
kylin 发表于:2009/3/7 17:39:00
有时候,简单并不可以严密,这已经是严密之后的简单了
6楼
woodiy 发表于:2009/3/8 15:39:00
我的自动编号列为父表关联表,你的这个方法好像行不通
共6 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02344 s, 2 queries.