Visual Basic - problema con base de datos

Life is soft - evento anual de software empresarial
 
Vista:

problema con base de datos

Publicado por william (27 intervenciones) el 27/02/2008 18:02:51
hola amigos, tengo un programa de inventarios, pero tengo el problema que cuando comparto lo que tengo en la base de datos, no me lo reconoce, me refiero al nombre y contraseña, son usuarios por niveles y dependiendo el nivel, es el permiso, les paso el codigo.

Private Sub Command1_Click()
Dim B As Object

On Error GoTo CONTROLERRORES
Data1.Refresh

USUARIOENCONTRADO = 0

'RUTINA DE VALIDAR CAMPOS CON CAMPOS VACIOS
If Text1.Text = "" Or Text2.Text = "" Then
If Text1.Text = "" Then
mensaje = MsgBox("INTRODUZCA EL NOMBRE DEL USUARIO", vbExclamation, "POZ")
Text1.SetFocus
Exit Sub
Else
If Text2.Text = "" Then
mensaje = MsgBox("INTRODUZCA LA CONTRASEÑA DEL USUARIO", vbExclamation, "POZ")
Text2.SetFocus
Exit Sub
End If
End If
End If
'FIN DE RUTINA DE ALTA CON CAMPOS VACIOS

Data1.Recordset.MoveFirst
Data1.Recordset.MoveNext
Do
If Data1.Recordset!NOMBRE = Text1.Text And Data1.Recordset!CLAVEUSUARIO = Text2.Text Then
TIPOUSUARIO = Data1.Recordset!TIPOUSUARIO
If TIPOUSUARIO = "USUARIO NIVEL 1" Then
IBMenuNivel1.StatusBar1.Panels(3).Text = "USUARIO: " & Text1.Text
IBMenuNivel1.Show
Data1.Recordset.MoveLast
USUARIOENCONTRADO = 1
GoTo SALIDA
'Unload Me
Else
IBMenuPrincipal.StatusBar1.Panels(3).Text = "USUARIO: " & Text1.Text
IBMenuPrincipal.Show
'IBMENUPRINCIPAL
USUARIOENCONTRADO = 1
GoTo SALIDA
'Unload Me
End If
' USUARIOENCONTRADO = 0
End If
Data1.Recordset.MoveNext
Loop Until Data1.Recordset.EOF

If USUARIOENCONTRADO = 0 Then
mensaje = MsgBox("USUARIO NO VALIDO, VERIFIQUE SU NOMBRE DE USUARIO Y SU CONTRASEÑA", vbQuestion, "POZ")
Text1.SetFocus
Exit Sub
End If

CONTROLERRORES:
Select Case Err.Number
Case 91
INS = 0
mensaje = MsgBox("LA INSTALACION CONTINUA.......,", vbInformation, "INSTALACION")
IBInstalarPrimeravez.Command1.Enabled = False
INS = 1
'Unload Me
IBInstalarPrimeravez.Show vbModal, Me
If INS = 1 Then
Exit Sub
End If
Case 3044
INS = 0
mensaje = MsgBox("LA INSTALACION CONTINUA.......,", vbInformation, "INSTALACION")
IBInstalarPrimeravez.Command1.Enabled = False
INS = 1
'Unload Me
IBInstalarPrimeravez.Show vbModal, Me
If INS = 1 Then
Exit Sub
End If
Case 3024
INS = 0
mensaje = MsgBox("LA INSTALACION CONTINUA.......,", vbInformation, "INSTALACION")
IBInstalarPrimeravez.Command1.Enabled = False
INS = 1
'Unload Me
IBInstalarPrimeravez.Show vbModal, Me
If INS = 1 Then
Exit Sub
End If
'FIN DE RUTINA
End Select

SALIDA:
Unload Me

End Sub

este codigo es del boton entrar, aqui se comprueba si la contraseña y nombre de usuario son validas.

en la base de datos hay 3 campos.

nombre
tipodeusuario
clavedeusuario

aqui se hace la comparacion para saber el tipo de usuario y asi mismo darle los privilegios a cada uno, pero al darle entrar, le pongo el nombre de usuario y contraseña correctos que tengo en la base de datos, que en este caso seria el usuario nivel 1, y me marca error de nombre de usuario y contraseña, o sea se cumple la condicion que puse al ultimo y no se que este pasando, les agradeceria su ayuda.

gracias
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

RE:problema con base de datos

Publicado por Emilio chapuzas (5 intervenciones) el 27/02/2008 19:07:29
Eso es justamente lo que se llama "malas técnicas de programación y desaprovechamiento de recursos"

*********************************************
70 líneas de códiGO que se pueden hacer en menos de 20, te pongo un ejemplo:
Select Case Err.Number
Case 91
INS = 0 <- NO VALE PARA NADA
mensaje = MsgBox("LA INSTALACION CONTINUA.......,", vbInformation, "INSTALACION") <- NO SE VA A VER NUNCA
IBInstalarPrimeravez.Command1.Enabled = False
INS = 1 <- TAMPOCO VALE PARA NADA
'Unload Me
IBInstalarPrimeravez.Show vbModal, Me
If INS = 1 Then <- IDEM DE IDEM
Exit Sub
End If
Case 3044... etc ... = 30 líneas de código (todos los select se repiten)

es lo mismo que poner:

If Err.Number = 91 Or Err.Number = 3044 Or Err.Number = 3024 Then
IBInstalarPrimeravez.Command1.Enabled = False
IBInstalarPrimeravez.Show vbModal, Me
End If

O sea 30 líneas de código reducidas a 4
**********************************************************

Dim B As Object
¿Qué es esto, para qué lo utilizas?

LAS VARIABLES DECLARADAS, AUNQUE NO UTILIZADAS, OCUPAN MEMORIA!
**********************************************************
If Text1.Text = "" Or Text2.Text = "" Then
ESTO TE LO PUEDES AHORRAR SOLO CON HACER LAS DOS COMPROBACIONES SIGUIENTES.

************************************************************

Pero el quiz de la cuestión está aquí:

Data1.Recordset.MoveFirst
Data1.Recordset.MoveNext

O sea.... mandas el puntero al primer registro y a continuación lo mueves al siguiente sin hacer ningún tipo de comprobación.
¿Y si el usuario buscado está en el primero? Pues nunca lo vas a encontrar.

Conclusión: No es una regañina, ni quiero que te sientas ofendido, pero hay que decir las cosas claras para que todos sigamos aprendiendo.

Un saludo
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

RE:problema con base de datos

Publicado por william (27 intervenciones) el 27/02/2008 19:29:04
hola amigo, te agradesco mucho tu ayuda. de hecho este programa ya esta muy empezado, yo no puse esta programacion, y la verdad me hise bolas de solo ver tantas lineas de codigo, pero mi trabajo es seguir desde aqui.

entonces con estos puntos:

Data1.Recordset.MoveFirst
Data1.Recordset.MoveNext

y como comentas el registro que busco es el primero

que puedo hacer o modificar para que ya no me de ese error??

gracias amigo
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

RE:problema con base de datos

Publicado por william (27 intervenciones) el 27/02/2008 19:40:20
amigo, lo que hise fue solo poner esas como comentario y ya me funciono, te agradesco mucho, si hise mal en solo ponerlas como comentario, dimelo x favor.

te agradesco
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

RE:problema con base de datos

Publicado por Emilio chapuzas (5 intervenciones) el 27/02/2008 19:49:12
Está bien, las dos instrucciones sobran el MoveNext porque se saltaba el primer registro y el MoveFirst porque anteriormente has puesto un Refresh que con eso ya se posiciona el puntero en el primer registro del Data.

Suerte!
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