我已编写此代码以根据日期生成唯一ID。问题是日期不是最新的。我想要像这样的身份
2013081901 - if user input data on 19/08/2013
2013082002 - if user input data on 20/08/2013
问题是,我得到了这样的身份
2013081901 - user input data on 19/08/2013
2013081902 - user input data on 20/08/2013
这是我的代码:
Dim cnnOLEDB As New OleDbConnection(strConnectionString)
sql = "SELECT MAX(sampleID) FROM Spec_1"
cmd = New OleDbCommand(sql, cnnOLEDB)
cnnOLEDB.Open()
Dim dr As OleDbDataReader
dr = cmd.ExecuteReader()
While dr.Read()
Try
If Not IsDBNull(dr(0)) Then
txtSampleID.Text = (dr(0) + 1).ToString
'txtSampleID.Text = dr(0).ToString
Else
txtSampleID.Text = Format(Date.Today, "yyMMdd") + "01"
End If
Catch ex As Exception
txtSampleID.Text = "0"
End Try
End While
答案 0 :(得分:0)
考虑一下:
如果在一天内有超过99个条目,会发生什么?例如,
2013081901 - input data 19/08/2013
2013081902 - input data 19/08/2013
2013081903 - input data 19/08/2013
[...]
2013081998 - input data 19/08/2013
2013081999 - input data 19/08/2013
20130819?? - input data 19/08/2013
第100天入场会怎样?
2013081901 - input data 19/08/2013
2013082002 - input data 20/08/2013
2013082103 - input data 21/08/2013
[...]
2013112598 - input data 25/11/2013
2013112699 - input data 26/11/2013
20131127?? - input data 27/11/2013
如果您每天只收到一个条目,则不需要免费的两位数字:
20130819 - input data 19/08/2013
20130820 - input data 20/08/2013
可能建议使用不同类型的ID算法。
在任何情况下,您提出的具体问题都在此行中:
txtSampleID.Text = (dr(0) + 1).ToString
您只需增加该值,而无需更改日期限制部分。 您可以使用Mod运算符提取增量部分,并添加正确的日期,如下所示:
txtSampleID.Text = Format(Date.Today, "yyMMdd") + ((dr(0) + 1) Mod 100).ToString