CLR: .Net / Mono / Boo / Otros CLR > VB .NET
HasRows no es miembro 'System.Data.SqlClient.SqlDataReader
gerloxxx:
Segun entiendo lo que intentas es validar un loggin o algo asi. Revisa en el analizador de consultas que arroja ese query.
El metodo Read cada vez que lo ejecutas, por decirlo asi te coloca en un renglon de la tabla que obtuviste del query, pero en tu query tu ya estas filtrando algunos renglones:
--- Código: vb.net --- Dim sql As String = "select * from pruebas where codigo='" & txtCodigo.Text & "'" Por lo que si tu query anterior no consigue ningun registro, nunca entrara al while y no llegaras a esta parte:
--- Código: vb.net --- If Trim(myreader.Item("clave")) <> txtPassword.Text Then'realiza otra accionMessageBox.Show("Datos Incorrectos")End If lo que puedes hacer es filtrar desde el query como lo tienes, y luego preguntar si encontro algo (si obtienes más de un registro y necesitas el while, activa una bandera para ver si entro a este):
--- Código: vb.net --- if myreader.Read() then'codigo encontradoelseMessageBox.Show("Datos Incorrectos")endif espero estar entendiendo
denigrado:
Hola gerloxxx,
Te explico, el codigo si filtra desde el query, ya que hace la busqueda con referencia al valor que se ingresa.
Tambien entra al while, porque si ingreso el dato del primer regristro de la tabla de la DB, valida; pero si ingreso el segundo registro de la tabla o cualqueir otro que no sea el primero, tambien valida el else.... solo que no me valida el registro como existente en la DB.
Por ejemplo:
Si en la tabla es esta:
1-casa
2-techo
3-ventana
En el query envio como parametro "casa", la aplicacion entra al ciclo y hace ejecuta la funcion.
Pero si ingreso "techo" o "ventana", el sistema entra al ciclo, pero me arroja la accion "datos incorrectos".
Lo cual indica que, entra al "if" y tambien al "else", solo que no me esta recorriendo la tabla en la DB.
Espero haberme explicado bien.
Saludos!
gerloxxx:
Creo que estoy entendiendo poco... si recorres TODO el conjunto de resultados, al comparar cada registro incorrecto va a entrar al else, pero igual va a haber un momento en que entre a datos correctos, tal vez lo que necesitas es hacer la busqueda con el while y tomar acciones fuera de él, puedes romper el while cuando encuetres el registro... o algo por el estilo.
Con tus datos de ejemplo, digamos que buscas "techo" y tienes los siguientes valores:
1-casa
2-techo
3-ventana
en el primer ciclo comparas casa = techo, y se va para el else del if...
en el segundo ciclo techo = techo, lo encuentra en el segundo ciclo, pero para este punto ya mostro el mensaje de datos incorrectos del primero ciclo...
y en el tercer ciclo ventanta = techo, y vuelve a mostrar el mensaje de datos incorrectos.
Puedes hacer algo como esto:
dim blnEncontrado as Boolean = false
while myReader.Read()
if myReader.Item("campo") = DatoBuscado then
blnEncontrado = true
break
End if
End While
if blnEncontrado Then
'...hacer algo
else
'...mensaje de error
Saludos
Navegación
[*] Página Anterior
Ir a la versión completa