我的程序中有一个SQL数据表,我正在尝试选择列中的最后一个值。
然后在我的表单中使用下一个号码。
例如,列是部件号abc-00001,当我启动新表单时,自动将abc-00002放入文本框中。
Dim cmd As New SqlCommand
Dim reader As SqlDataReader
cmd.CommandText = "select prtnum FROM Table1 WHERE prtnum = IDENT_CURRENT('table1')"
cmd.CommandType = CommandType.Text
cmd.Connection = con
con.Open()
Dim reader As SqlDataReader = cmd.ExecuteReader()
textbox1.text = prtnum (increment 1)
答案 0 :(得分:0)
您应该使用序列来生成部件号。
例如,
创建序列seq_PartNumber MINVALUE 1 从1开始 增加1 CACHE 10
插入强> 插入表1(prtnum) VALUES(seq_PartNumber.nextval)
选择强> SELECT seq_PartNumber.nextval FROM Table1
请查看以下链接, https://msdn.microsoft.com/en-us/library/ff878091.aspx
答案 1 :(得分:0)
您可以创建一个返回字段最大值的查询。例如," SELECT Max(Field)AS MaxValue From Table",将其分配给变量然后将其递增1,但在看到所需结果之前,您必须进行一些转换和格式化。以下是您可以执行的操作的示例:
Dim connStr As String
connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Juan\Documents\LastValueDatabase.accdb;
Persist Security Info=False;"
Dim sql As String
sql = "SELECT Max(Code) AS MaxValue
From LastValue"
Dim connection As New OleDb.OleDbConnection(connStr)
Dim command As New OleDb.OleDbCommand(sql, connection)
connection.Open()
Dim newCode As String = ""
newCode = command.ExecuteScalar()
Dim maxValue As Integer
Dim code As String = ""
For Each value As Char In newCode
If IsNumeric(value) Then
maxValue &= value
Else
code &= value
End If
Next
maxValue = Integer.Parse(maxValue) + 1
TextBox1.Text = code & maxValue.ToString("00000")
connection.Close()
我在这个例子中使用了Microsoft Access,但你可以用SQL来做,你只需要更改连接字符串而不是Oledb使用Sql连接。