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

Preguntas similare

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/
Respuesta Responder a este mensaje
#2 Alejandro Maldonado
25/04/2005 - 08:21 | Informe spam
Amaia, es mas recomendable utilizar el metodo ExecuteScalar

Ejemplo (C#):

cmd.CommandText = "SELECT MAX(NumCli) FROM Cliente";
Int32 nMax = (int32) cmd.ExecuteScalar();



Ejemplo 2:

Dim myCommand As New SqlCommand(myScalarQuery, myConnection)
myCommand.Connection.Open()
myCommand.ExecuteScalar()
myConnection.Close()



Saludos,

Alejandro Maldonado



"Amaia" escribió en el mensaje news:0c3e01c54839$05c41740$
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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida