CLR: .Net / Mono / Boo / Otros CLR > VB .NET
Instryccion While....
spiderman160281:
que bueno camarada me da gusto, cualquier cosa por aquí andamos :D
Nebire:
Aunque hayas solucionado el problema no es nada 'elegante'...
el goto rompe la secuencia de escape del flujo de un bucle, es decir si proviene de otros flujops romperá dicha secuencia y no podrá retornar por donde vino...
Cuando se desea salir del mismo aún no cumpliéndose la condición, usar un 'exit while' (justo en el sitio desde donde quieres salir) ..esto no rompe secuencias de retorno de la pila y por tanto no entra en conflicto con otras partes del programa.... el goto es muy bueno pero para saltos dentro de un mismo bucle, ya que de ese modo no rompe secuencias de la pila de retorno, solo desplaza el puntero del programa.
saludos..
spiderman160281:
Acabo de leer algo sobre el exit while y tiene razón camarada gracias por la observación navire y disculpa vortice pero bueno no conocía ese exit while.. :(
Scherzo:
Hola, otra forma de plantear esto que quieres hacer podría ser así:
--- Código: Text --- strSQL = strSQL.Append("SELECT ")strSQL = strSQL.Append("(CASE WHEN COUNT(*) > 0 THEN '" & bool.TrueString & "' ELSE '" & bool.FalseString & "' END) AS EXISTE ")strSQL = strSQL.Append("FROM USUARIOS ")strSQL = strSQL.Append("WHERE")strSQL = strSQL.Append(" nombre_usuario = '" & usu.Text & "'")strSQL = strSQL.Append(" AND password = '" & password.Text & "'") Boolean.TryParse(Command.ExecuteScalar().ToString(), ByRef blnExiste) if (blnExiste) Then 'El usuario existeElse 'El usuario no existeEnd If
Con esto, te ahorras tener que hacer un bucle While que recorra todos los usuarios en busca de aquel que coincida con los datos del Login, ya que la propia consulta SQL te devolverá directamente un "True" si el usuario existe o un "False" si no existe.´
Este planteamiento es más rápido que un bucle While, sobre todo si tienes muchos usuarios, y en mi opinión más legible y directo que el otro (el peso de la búsqueda se lo dejas al motor SQL, que es mucho más rápido que si lo haces desde código VB).
Saludos
PD1: el código lo he escrito sin compilarlo y tienes que adaptarlo ligeramente a tu código, por lo que a lo mejor he metido algún error de sintaxis o falla alguna cosa, en cualquier caso, espero que se entienda la idea de lo que quiero expresar.
PD2: para que no se te pase por alto, date cuenta que uso ExecuteScalar() en lugar de ExecuteNonQuery().
Navegación
[*] Página Anterior
Ir a la versión completa