2013-03-31 25 views
0

我想有最後2位一年的學生證和-001例如13-001串並讀取表例子的最後一個值13-002是表格中的最後一個值如何在表格加載時變成13-003。我有表13-001一個值,我一直在嘗試此代碼,但它給了我14來代替13-002遞增1中VB10連接到SQL編輯

Dim dr As SqlDataReader 
    Dim Cmd As New SqlCommand 
    con.Open() 
    With Cmd 
     .Connection = con 
     .CommandText = "SELECT * FROM tbl_student ORDER BY Student_no DESC" 
    End With 
    dr = Cmd.ExecuteReader 

    If dr.Read Then 
     lblstudno.Text = Val(dr.Item(0)) + 1 

    End If 

    con.Close() 

感謝希望你明白

回答

0
INSERT INTO 
    students 
(student_id) VALUES 
(
    CAST((YEAR(GETDATE()) % 100) + 1 AS varchar(2)) + '-' + 
    CAST( 
      SELECT TOP 1 
       CAST(RIGHT(student_id, 3) AS int) + 1 
      FROM 
       students 
      ORDER BY 
       student_id DESC 

    AS varchar(3)) 
) 

注意,這會,如果你失敗達到999名學生。還有一個潛在的競爭條件,除非你做一些桌子上的鎖(見事務隔離)。

我的帖子還說明了爲什麼IDENTITY鍵通常是一個好主意,而不是滾動您自己(假設你想用這個系統作爲主鍵)。