Foxtable(狐表)用户栏目专家坐堂 → 网络环境下复杂编号问题再提


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

主题:网络环境下复杂编号问题再提

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


加好友 发短信
等级:婴狐 帖子:11 积分:172 威望:0 精华:0 注册:2010/6/9 9:44:00
网络环境下复杂编号问题再提  发帖心情 Post By:2012/3/26 19:02:00 [显示全部帖子]

Dim dr As DataRow = e.DataRow
Dim pf As String
Dim pd As String
Dim pm As String
If dr.RowState <> DataRowState.Added Then '如果不是新增行
    Return '那么返回
ElseIf dr.IsNull("日期") Then '如果没有输入日期
    e.Cancel = True '取消保存此行
    MessageBox.Show("必须输入日期!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
    Return
Else
    pf = Format(dr("日期"),"yyMM") '否则获得编号的前缀,两位年,两位月
    pm=  Format(dr("日期"),"MM")
    Pd= Format(dr("日期"),"dd")
End If
Dim cmd1 As New SQLCommand
Dim cmd2 As New SQLCommand
Dim Key As Integer
cmd1.C '设置数据源名称
cmd2.C
cmd1.commandText = "Select Count(*) From [编号] Where [前缀] = '" & pf & "'"
If cmd1.ExecuteScalar = 0 Then '如果编号表不存在前缀的行,那么增加一行
    cmd1.commandtext = "Insert Into 编号 (前缀, 顺序号) Values('" & pf & "',1)"
    cmd1.ExecuteNonQuery
End If
cmd1.commandText = "Select [顺序号] From [编号] Where [前缀] = '" & pf & "'"
Do
    Key = cmd1.ExecuteScalar() '从后台获得顺序号
    cmd2.commandText = "Update [编号] Set [顺序号] = " & (Key + 1) & " Where [顺序号] = " & Key & " And [前缀] = '" & pf & "'"
    If cmd2.ExecuteNonQuery() > 0 Then '更新顺序号
        Exit Do '更新成功则退出循环
    End If
Loop

 

e.DataRow("编号") = pm & pd & Format(Key,"0000")

执行结果

编号               日期                 月份

03130003 2012-3-13              3
03140004 2012-3-14              3
03250005 2012-3-25              3
03260006 2012-3-26              4
03270007 2012-3-27              4
03240008 2012-3-24              3

疑问:

以上代码执行正确,可以加个条件,让PM变化的时候,让编号从0001重新编号?重点在最后几条记录上。

预想实现结果:

编号               日期                 月份

03130003 2012-3-13              3
03140004 2012-3-14              3
03250005 2012-3-25              3
03260001 2012-3-26              4
03270002 2012-3-27              4
03240006 2012-3-24              3

 

[此贴子已经被作者于2012-3-26 19:17:03编辑过]

 回到顶部