Visual Basic.NET - Ayuda con el siguiente error: "Error de lectura porque no hay datos"

 
Vista:
sin imagen de perfil

Ayuda con el siguiente error: "Error de lectura porque no hay datos"

Publicado por Oscar (3 intervenciones) el 31/12/2014 08:42:36
Hola, amigos.

Tengo un problema con mi código.
Lo que estoy haciendo es una ventana de Login.
Tiene: -Combobox, -Usuario y -Contraseña

Este código funciona, al momento de ingresar tipo, usuario y contraseña correctos, ingresa al sistema.
Pero al momento de meter datos incorrectos, me muestra un error "Error de lectura porque no hay datos".
Quiero validar esta ventana, que al momento de ingresar datos incorrectos, te muestre un aviso general que algún dato es incorrecto, y no ese error.
Quisiera que comparara lo que le estoy enviando al Stored, y que al verificar que son incorrectos los datos, se pase al Else, y mande un MessageBox con el aviso.

Al momento de debuggear, llega a "tipousuario=reader(0)" (como se muestra en rojo en la imagen), dice que tiene "0" y se brinca hasta el Catch.

Cabe mencionar que estoy usando StoredProcedures, con SQL Server.

Quisiera que iluminaran mi ignorancia. Agradecería mucho su ayuda.
De antemano, muchísimas gracias.

-Oscar


help
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda con el siguiente error: "Error de lectura porque no hay datos"

Publicado por giancarlo (488 intervenciones) el 31/12/2014 15:19:26
Efectivamente, es porque no hay datos, despues de hacer el reader.read. podrias hacer algo asi:

'reader.read
while reader.read
tipoUsuario=reader(0)
...
exit while
end while

if tipoUsuario>0'si los tipos son mayores a 0
'correcto
end if

Una observacion que haria es que dentro de tu procedimiento almacenado sel_login_sp deberias poner la condicion de la contraseña, en lugar de hacer if txtContraseña.text... dentro del procedimiento almacenado podrias:

select ... from tabla where nombreUsuaro=@usuario and clave=@clave
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda con el siguiente error: "Error de lectura porque no hay datos"

Publicado por Oscar (3 intervenciones) el 31/12/2014 22:47:38
Excelente. ¡Muchas gracias, giancarlo!
Conseguí lo que quería

Ahora solo un detalle más... en el error que tenía, al presionar el botón entrar me aparecía el error por el cuál solicité ayuda en esta página; pero al presionar 2 veces el botón, me aparecía el siguiente mensaje:
"La función o el procedimiento sel_login_SP tiene demasiados argumentos"

¿Qué se puede hacer para que no aparezca más ese mensaje?

asdcasdc
sdf
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de giancarlo
Val: 377
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda con el siguiente error: "Error de lectura porque no hay datos"

Publicado por giancarlo (488 intervenciones) el 31/12/2014 23:01:01
No recuerdo muy bien porque sale ese mensaje:

Los parámetros @variable son mas de los que acepta el procedimiento almacenado
O porque los parametros se quedan grabados e intentas ponerles mas.

Antes de los comando.parameter.add agrega:
Comando.parameters.clear
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Ayuda con el siguiente error: "Error de lectura porque no hay datos"

Publicado por Oscar (3 intervenciones) el 31/12/2014 23:14:59
Perfecto. Ahora sí ya está como quería.
¡Muchas gracias por tu ayuda, giancarlo!


Me volvería loco si continuara con estos errores si no fuera por tu ayuda.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

Ayuda con el siguiente error: "Error de lectura porque no hay datos"

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 31/12/2014 23:20:03
PArticularmente no me gusta esa manera de programar pero bueno, ya está y la solución a ambos problemas es el siguiente:
Para lo de no hay datos:
1
2
3
4
5
6
7
8
9
Dim reader as Sqldatareader=cmd.executereader()
if reader.hasrows then
 
if reader.read() then
 aqui capturas tus datos
end if
else
messagebox.show("No existen datos")
end

Ahora el problema de los parámetros es debido a que tienes declarado el Comando al inicio y está accesible a todo el formulario, entonces cuando insistes en dar clic en el boton la siguiente vez, como le estás diciendo new parameter, se está tratando de agregar nuevos parámentros, por lo tanto son mas parámetros de los que soporta

Recomendación: declarara ese comando en el botón y asunto arreglado.

PD: Mi recomendación general sería que programes orientado a objetos, que para eso VB.NET es orientado a objetos.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar