iam sa snaží získať maximálne číslo z tabuľky a vložiť ho na iné číslo s vb.net 2008 a prístup db 2003 tento môj kód
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> Chystám sa mimo rozsah
odpovede:
0 pre odpoveď č. 1Zmeňte svoj dotaz na
Dim strQ As String = "SELECT MAX(IDbatch) as MaxIDbatch from batches "
a váš kód, ktorý číta hodnotu
it = QReader.Item("MaxIDbatch")
Ako už máte teraz
MAX(IDbatch)
vytvára pole s iným názvom nežIDbatch
a snaží sa získať obsah tohto poľa pomocou názvuIDbatch
neposkytneIndex out of range exception
Mimochodom, šek na
FieldCount > 0
bude vždy pravdivé aj v prípadoch, keď v tabuľke šarží nie je záznam. Takže, ak ste to urobili na ochranu v prípade, že nebudete mať žiaden záznam, je lepšie písaťDim result = cmdQ.ExecuteScalar() if result IsNot Nothing then Dim it = Convert.ToInt32(result) MsgBox(it) End If
Pomocou tohto prístupu môžete tiež vynechať aliasing na poli IDbatch