Cargar un dato de consulta en variable.

23/04/2005 - 21:16 por Amaia | Informe spam
Hola gente:

Yo tengo este código:

sql = "SELECT MAX(NumCli) FROM Cliente"
con.Open()
cmd = New SqlCommand(sql, con)
myReader = cmd.ExecuteReader
maxCli = myReader("NumCli")
maxCli = maxCli + 1
myReader.Close()

pues se me para en la línea maxCli=MyReader("NumCli"), y
me da el error siguente:
Excepción no controlada del
tipo 'System.IndexOutOfRangeException' en system.data.dll

Información adicional: NumCli

maxCli, es de tipo int, y NumCli, de tipo numeric en
SQLServer. He buscado el error por internet, pero no
entiendo muy bien la explicación. Si alguien puede
ayudarme, se lo agradecería mucho. Gracias

AMAIA
 

Leer las respuestas

#1 Eduardo A. Morcillo [MS MVP VB]
23/04/2005 - 22:30 | Informe spam
El error es que no has leido el registro con Read antes de querer leer el
valor del campo. Debes hacerlo asi:

sql = "SELECT MAX(NumCli) FROM Cliente"

Try

cmd = New SqlCommand(sql, con)

con.Open()

myReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

maxCli = myReader("NumCli")
maxCli = maxCli + 1

Finally

If Not myReader Is Nothing Then myReader.Close()
If Not cmd Is Nothing Then cmd.Dispose()

End Try

Tambien podrias usar ExecuteScalar y no necesitaras del DataReader.

Eduardo A. Morcillo [MS MVP VB]
http://www.mvps.org/emorcillo
https://mvp.support.microsoft.com/p...4EF5A4191C
http://spaces.msn.com/members/emorcillo/

Preguntas similares