Dim dr As DataRow = e.DataRow
Dim
pf 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") '否则获得编号的前缀,两位年,两位月
End If
Dim cmd1 As New
SQLCommand
Dim cmd2 As New
SQLCommand
Dim
Key As
Integer
Dim
nm As
String =
e.DataTable.name
cmd1.ConnectionName =
"编号"
'设置数据源名称
cmd2.ConnectionName = "编号"
cmd1.commandText = "Select Count(*) From [编号] Where [前缀] = '"
&
pf
&
"' And 表名 = '"
&
nm
&
"'"
If
cmd1.ExecuteScalar =
0 Then
'如果编号表不存在前缀的行,那么增加一行
cmd1.commandtext = "Insert Into 编号 (表名, 前缀, 顺序号) Values('"
&
nm
&
"','"
&
pf
&
"',1)"
cmd1.ExecuteNonQuery
End
If
cmd1.commandText =
"Select [顺序号] From [编号] Where [前缀] =
'"
&
pf
&
"' And 表名 = '"
&
nm
&
"'"
Do
Key = cmd1.ExecuteScalar()
'从后台获得顺序号
cmd2.commandText =
"Update [编号] Set [顺序号] = "
& (Key +
1)
&
" Where [顺序号] = "
&
Key
&
" And [前缀] = '"
&
pf
&
"' And 表名 = '"
&
nm
&
"'"
If cmd2.ExecuteNonQuery()
> 0 Then
'更新顺序号
Exit Do '更新成功则退出循环
End If
Loop
e.DataRow("编号") = pf
&
"-"
&
Format(Key,"0000")
帮助的这段代码 如何改可以做到 比如 相同的客户编号下编号是一样的,我这样改貌似不行:
Dim dr As DataRow = e.DataRow
Dim pf 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") '否则获得编号的前缀,两位年,两位月
End If
Dim cmd1 As New SQLCommand
Dim cmd2 As New SQLCommand
Dim Key As Integer
Dim nm As String = e.DataTable.name
cmd1.ConnectionName = "编号" '设置数据源名称
cmd2.ConnectionName = "编号"
cmd1.commandText = "Select Count(*) From [编号] Where [前缀] = '" & pf & "' And 表名 = '" & nm & "'"
If cmd1.ExecuteScalar = 0 Then '如果编号表不存在前缀的行,那么增加一行
cmd1.commandtext = "Insert Into 编号 (表名, 前缀, 顺序号) Values('" & nm & "','" & pf & "',1)"
cmd1.ExecuteNonQuery
End If
cmd1.commandText = "Select [顺序号] From [编号] Where [前缀] = '" & pf & "' And 表名 = '" & nm & "'"
Do
Key = cmd1.ExecuteScalar() '从后台获得顺序号
cmd2.commandText = "Update [编号] Set [顺序号] = " & (Key + 1) & " Where [顺序号] = " & Key & " And [前缀] = '" & pf & "' And 表名 = '" & nm & "'"
If cmd2.ExecuteNonQuery() > 0 Then '更新顺序号
Exit Do '更新成功则退出循环
End If
Loop
Dim dx As DataRow = e.DataTable.Find("客户编号='" & e.DataRow("客户编号") & "'And 日期= #" & e.DataRow("日期") & "# And [_Identify] <> " & e.DataRow("_Identify"))
If dx Is Nothing Then
e.DataRow("编号") = pf & Format(Key,"0000")
Else
e.DataRow("编号") = dx("编号")
End If
还是产生了不重复的编号