2013-03-31 3 views
0

올해의 마지막 2 자리 숫자와 -001 예제 문자열 13-001이 포함 된 학생 ID를 갖고 싶고 테이블의 마지막 값을 읽으려면 예제 13-002가 테이블의 마지막 값은 폼로드시 13-003이 될 수 있습니다. 나는 테이블 13-001에 값을 가지고 있고이 코드를하려고했던하지만 대신 나에게 14을 제공 13-002vb10에서 sql을 통해 연결된 1 씩 증가

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 키가 일반적으로 자신의 시스템을 롤링하는 대신에 좋은 아이디어임을 보여줍니다 (이 시스템을 기본 키로 사용하려는 경우).

관련 문제