我们有一个名为returnNo
的字段,当从数据库查询时,它返回整数值。
返回的整数示例为4098
。
我们希望在整数值的开头添加字符T
,然后将值递增1。将此字符附加到整数值并将其递增1的结果然后插入数据库。
当我运行下面的代码时,它只返回不带T字符的整数值,并将此值插入数据库。
我做错了什么?
Dim retNo As Integer = 0
Dim return_No As String = ""
Dim dteReturned As String = ""
Try
Dim Sqls As String = "select MAX(returnNo) returnNo from Trials"
Dim Sqlsr As String = "select DateReturned from Trials where ownerId='" & Session("rOwnerID") & "' "
Dim prevretcmd As SqlCommand = New SqlCommand(Sqls)
prevretcmd.Connection = con
Dim rdr As SqlDataReader = prevretcmd.ExecuteReader()
If rdr.Read() Then
dteReturned = rdr("DateReturned").ToString()
testReturnNo.Text = rdr("ReturnNo").ToString()
retNo = Convert.ToInt32(testReturnNo.Text.Replace("T", "")) + 1
returnNo.Text = "T" + retNo.ToString().PadLeft(1, "0"c)
End If
rdr.Close()
Catch
retNo = 1
returnNo.Text = retNo.ToString()
End Try
1条答案
按热度按时间fnx2tebb1#
这里有两个100%独立的SQL查询,你混淆了获取MAX数和提取一行。
把它分解成更大的步骤。
这段代码应该可以工作:
因此,我们的第一个查询从表中获取最大值。
然后我们的第二个查询根据session()中的id值获取数据库行(日期列)。
我们得到retNo,在文本框中显示它。
我们添加+ 1,然后在第二个文本框中显示,填充到6个“0”。
结果如下:
因此,在表中找到的最大值是4098,我们添加了+ 1,然后将结果与“0”的填充放在第二个文本框中。
编辑:保存的数据不是整数,而是填充字符串
好了,Max()查询将返回一个字符串,一个用字母填充的字符串,一些“0”,然后是数字。
因此,我们必须像这样修改我们的代码:
所以,我们得到/抓取最大字符串,T000123,或K 000234或其他。
然后我们igonre第一个字母,然后加上+1
这意味着你可能有这个
那么,在某种意义上,我们有重复的数字,因为我们的max查询将返回B 000123,去掉字母B,然后产生一个数字124。
然后我们在前面设置一个T格式。
注意100%确定这是否是你想要的,但上面的小变化将以这种方式工作。