2013-07-09 4 views
-1

Я хочу сгенерировать auto_no по кодированию. Так что мне нужно будет получить предыдущий auto_no с сервера sql, затем auto_no + 1, чтобы сгенерировать следующий номер. Но поскольку моя база данных еще не записана. Таким образом, темп должен быть равен 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() 
+0

В чем Ваш вопрос? Вы отправили свой код, и это здорово, но, пожалуйста, отредактируйте свой пост, чтобы его легче понять. –

+0

Поскольку в вашей базе еще нет строк, 'myReader.HasRows' должен возвращать' False'. Проверьте, что возвращается 'myReader.HasRows'. По-видимому, по какой-либо причине это условие, по-видимому, оценивается как «Истина». – Lion

+0

myReader.HasRows возвращает true.but в моей базе данных пока нет. – user2562841

ответ

1

Избавьтесь от первого вызова myReader.Read(), который является вашей проблемой.

Ваш читатель всегда возвращает 1 строку (даже если в базе данных нет строк, она возвращает результат (0 или нуль)).

Что делает ваш код выглядит следующим образом:

  1. Выполняет команду - она ​​возвращает 1 строку.
  2. вызовов myReader.Read(), который считывает первую строку
  3. Вызовы myReader.HasRows, который возвращает верно, так как она имеет одну строку
  4. Кода входит в блок, если и вызывает myReader.Read(), который возвращает ложь, поскольку вы уже прочитали одну строку, возвращаемую на этапе 4.
  5. Выходной цикл while.
  6. temp никогда не устанавливается как оставлено как ноль.
+0

, так что я должен изменить для своего кодирования? – user2562841

+1

Избавьтесь от первого вызова myReader.Read() – shf301

+0

Я меняю свой код и получаю ответ ady.thnx каждый. – user2562841

Смежные вопросы