选择列中的最后一个单元格,然后将值增加1

时间:2015-11-18 03:02:49

标签: sql vb.net

我的程序中有一个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)

2 个答案:

答案 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连接。