生成自定义自动编号

时间:2013-07-09 02:55:25

标签: vb.net

我想通过编码生成auto_no。 所以我需要从sql server获取之前的auto_no然后auto_no + 1来生成下一个数字。 但是因为我的数据库还没有任何记录。所以temp应该等于1。 但为什么我得到temp = 0?

    Dim con As New SqlConnection(myConn)
    Dim myReader As SqlDataReader
    Dim temp As Int64

    con.Open()
    Dim sql As String = "SELECT MAX(Auto_No) FROM Quotation_No"
   Dim comm As SqlCommand = New SqlCommand(sql, con)
        con.Open()
        myReader = comm.ExecuteReader
        If myReader.HasRows Then
            Do While myReader.Read()
            Loop
    Else
        temp = 1
    End If

    Frm1.txtQuotation_No.Text = temp
    con.Close()

1 个答案:

答案 0 :(得分:1)

摆脱对你的问题的第一次myReader.Read()调用。

您的读者总是返回1行(即使数据库中没有行也会返回结果(0或null))。

您的代码正在执行的操作如下:

  1. 执行命令 - 返回1行。
  2. 调用读取第一行的myReader.Read()
  3. 调用myReader.HasRows,因为它有一行
  4. ,所以返回true
  5. 代码进入if块并调用myReader.Read(),由于您已经读取了步骤4中返回的一行,因此返回false。
  6. while循环退出。
  7. temp永远不会设置为零。