2013-07-09 2 views
-1

코딩을 통해 auto_no를 생성하고 싶습니다. 그래서 다음 번호를 생성하려면 SQL Server에서 이전 auto_no를 얻은 다음 auto_no + 1을 얻어야합니다. 하지만 데이터베이스에 아직 레코드가 없으므로. 그래서 임시 직원은 1과 같아야합니다. 하지만 왜 임시 직원 = 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() 
+0

무엇이 질문입니까? 코드를 게시 한 것은 좋지만 더 쉽게 이해할 수 있도록 게시물을 수정하십시오. –

+0

데이터베이스에 아직 행이 없으므로 'myReader.HasRows'는'False'를 반환해야합니다. 'myReader.HasRows'에 의해 반환되는 것을 확인하십시오. 표면적으로,이 조건은 어떤 이유로 'True'로 평가되는 것으로 보입니다. – Lion

+0

myReader.HasRows가 true를 반환하지만 데이터베이스에 아직 레코드가 없습니다. – user2562841

답변

1

귀하의 문제인 myReader.Read()에 대한 첫 번째 호출을 제거하십시오.

독자가 항상 1 행을 반환합니다 (데이터베이스에 행이 없더라도 결과는 0 또는 null). 다음과 같이 코드가하고있는 무엇

은 다음과 같습니다

  1. 명령을 실행 -이 1 개 행을 반환합니다.
  2. 는 첫 번째 행에게이 때문에 false를 반환 myReader.Read()을 하나 개의 행
  3. 코드가있는 경우 블록을 입력하고 호출하기 때문에 true를 돌려
  4. 통화 myReader.HasRows를 읽고 myReader.Read()를 호출 4 단계에서 반환 된 한 행을 이미 읽었습니다.
  5. while 루프가 종료됩니다.
  6. 온도가 0으로 설정되지 않으므로 설정되지 않습니다.
+0

그래서 코딩을 변경해야합니까? – user2562841

+1

myReader.Read()에 대한 첫 번째 호출을 제거합니다. – shf301

+0

코드를 변경하고 모든 사용자에게 ady.thnx 응답을받습니다. – user2562841

관련 문제