/ / błąd poza zasięgiem w vb.net i dostęp get maxnumber - vb.net, ms-access

błąd poza zasięgiem w vb.net i dostęp get maxnumber - vb.net, ms-access

Próbuję uzyskać maksymalną liczbę z tabeli i wstawić ją na inny numer z vb.net 2008 i dostęp do db 2003 to mój kod

Dim strQ As String = "SELECT MAX(IDbatch) from batches "
Dim IDbatch As Integer
Dim cmdQ As OleDbCommand = New OleDbCommand(strQ, con)
If Not con.State = ConnectionState.Open Then
con.Open()

End If
Dim QReader As OleDbDataReader
Dim it As Integer
QReader = cmdQ.ExecuteReader
If QReader.FieldCount > 0 Then
While QReader.Read
it = QReader.Item("IDbatch")
MsgBox(it)
End While
End If
</ pre>

</ code> Otrzymuję błąd Poza zasięgiem

Odpowiedzi:

0 dla odpowiedzi № 1

Zmień zapytanie na

Dim strQ As String = "SELECT MAX(IDbatch) as MaxIDbatch from batches "

i twój kod, który odczytuje wartość

it = QReader.Item("MaxIDbatch")

Jak już masz teraz MAX(IDbatch) tworzy pole o innej nazwie niż IDbatch i próbuje odzyskać zawartość tego pola, używając nazwy IDbatch nie daje Index out of range exception

Przy okazji, twój czek na FieldCount > 0 będzie zawsze prawdziwe również w przypadkach, gdy nie ma rekordu w tabeli partii. Tak więc, jeśli zrobiłeś to, aby chronić w przypadku braku zapisu, to lepiej pisać

Dim result = cmdQ.ExecuteScalar()
if result IsNot Nothing then
Dim it = Convert.ToInt32(result)
MsgBox(it)
End If

Dzięki takiemu podejściu można również pominąć aliasing na polu IDbatch