2013-07-29 51 views
0

我面臨的一個ID錯誤在我的數據庫,同時增加新的數據到我的數據庫後添加新的數據。遞增數據庫ID在VB.net

Private Sub TabPage1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TabPage1.Click 
    Call setconnection() 
    Try 
     cd = New OleDbCommand("select * from stud ", cn) 
     dr = cd.ExecuteReader 
     While dr.Read = True 
      TextBox345.Text = dr.Item(0) + 1 
     End While 
     dr.Close() 
     cn.Close() 
    Catch ex As Exception 
     MsgBox("Invalid Customer id! ") 
    End Try 

    Call setconnection1() 
    Try 
     cd = New OleDbCommand("select * from instud ", cn) 
     dr = cd.ExecuteReader 
     While dr.Read = True 
      TextBox423.Text = dr.Item(0) + 1 
     End While 
     dr.Close() 
     cn.Close() 
    Catch ex As Exception 
     MsgBox("Invalid Customer id! ") 
    End Try 
    End Sub 

該代碼會自動從1-1000 計算機科學1001-2000 生物中一樣,如果在平原理學士所有流每個學生生成新的ID技術2001-3000 IT 3001-4000

我面對的錯誤是,在添加新數據一段時間後,ID在一定數量後不增加。 我已經找到了原因也是它爲什麼這樣做: 在datagirdview當我添加10個學生詳細介紹了過去的ID是10 和它ID 1日前,即11位的下一個ID,因此我的代碼一直走最後一個ID值爲10,不會進一步進行! 請幫我卡住!

+0

dr.Item(0)是ID嗎? – matzone

+0

是的......這是ID! –

+0

,因爲它做了'dr.Item(0)+ 1' ..它怎麼會被卡住? – matzone

回答

2

我敢肯定有一個更好的方法可以做到你在做什麼,但我爲什麼可以從有限的代碼,我想看到你想拉最大的價值。不是循環遍歷所有列表並將每個數字設置爲相同的文本框,而是獲取最大數字,然後進行設置。

而不是

While dr.Read = True 
    TextBox345.Text = dr.Item(0) + 1 
End While 

如果你想獲得最高ID,然後在一個更好的方式是直接從數據庫中獲取它試試這個

Dim maxId as Integer = 0 

While dr.Read = True 
    If maxId < dr.Item(0) Then maxId = dr.Item(0) 
End While 

TextBox345.Text = maxId + 1 

select max(id) from stud