Access - Busqueda en una tabla

   
Vista:

Busqueda en una tabla

Publicado por carlos (34 intervenciones) el 30/11/2011 17:46:14
Buenas a todos,
a ver si me podéis echar un cable.
Estoy haciendo una pequeña aplicación en access pero no estoy tadavía muy ducho en VB.
Tengo una tabla con usuario y password, quiero que al abrir un form me pida usuario y password, el usuario lo puedo buscar en un cuadro combinado y la password ponerla en un cuadro de texto.
Al pulsar sobre el comando, debe buscar en la tabla y comprobar si para el usuario indicado la password es correcta, si lo es que me deje abrir otro formulario.
Como veis, me cuesta sobre todo como trabajar con el recordset.

Gracias de antemano.
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

Busqueda en una tabla

Publicado por Emilio Verástegui Garay (221 intervenciones) el 01/12/2011 01:16:32
Lo puedes hacer con un Dlookup, mucho mas facíl

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

Busqueda en una tabla

Publicado por carlos (34 intervenciones) el 01/12/2011 09:15:48
Hola Emilio,

me podias indicar como hacerlo con el Dlookup?

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

Busqueda en una tabla

Publicado por angelessebas (208 intervenciones) el 01/12/2011 19:59:33
Hola,

En la página: http://angelessebas.es/

en el apartado supuestos y solucciones ---> Formularios ---> Validar Usuario y Password. Sí es correcto abrir un formulario y que nos muestre el nombre del usuario

tienes un ejemplo que te puede ayudar.

Cualquier duda, me consultas.

Saludos, Angeles
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

Busqueda en una tabla

Publicado por carlos (34 intervenciones) el 02/12/2011 10:27:06
Hola Angeles,

gracias por tu ayuda. He accedido a tu página (que por cierto está genial) y he reproducido lo que tienes para familiarizarme con el código y la forma de recorrer tablas para buscar registros.
El caso es que me da un error. Me dice, al pulsar sobre el botón "entrar", lo siguiente:

Error de compilación
No se ha definido el tipo definido por el usuario

y se queda en la primera línea, donde se declara la variable dim db as Database

Tal vez estoy omitiendo algo. Utilizo Access 2007.

Saludos, Carlos
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

Busqueda en una tabla

Publicado por angelessebas (208 intervenciones) el 02/12/2011 11:09:01
Hola,

Cuando escribes código te sale un cuadro con los comandos que puedes utilizar.

Cuando escribes:

Dim db AS ¿te sale en ese cuadro para elegir DATABASE?

si no sale lo que puede pasar es que no tienes chequeado la referencia:

Microsoft DAO

en access 2003, que es el que utilizo se chequea en:

estando en el generador de código ---> Herramientas ---> Referencias

Me cuentas, saludos Angeles
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

Busqueda en una tabla

Publicado por carlos (34 intervenciones) el 02/12/2011 12:11:00
Hola Angeles,

efectivamente he tenido que seleccionar en Herramientas-Referencias, Microsoft DAO 3.6 Object Library. Tambien estaba la versión 3.51 pero me daba error al seleccionarla.
No obstante, al ejecutar me sigue dando error en la línea:
Set rs = db.OpenRedordset......me dice error 13-no coinciden los tipos
Lo he revisado todo y no entiendo el porque.

Saludos, Carlos
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

Busqueda en una tabla

Publicado por angelessebas (208 intervenciones) el 02/12/2011 12:40:42
Hola,

Eso pasa porque en el where del recordset estas igualando campos numéricos con texto.

Si por ejemplo igualas el usuario que tienes en el formulario en un cuadro de texto txtUsu:

Si el campo Usuario de la tabla es de texto:

Usuario='" & form!txtUsu.value & "'

si es numérico:

Usuario=" & form!txtUsu.Value & "

es decir, quitas las comillas simples que son los delimitadores de texto

Si fuese de fecha:

Usuario=cDate('" & form!txtUsu.Value & "')

es decir, lo tienes que pasar a fecha.

Tienes que tener en cuenta que el valor de un cuadro de texto, combinado... etc. de un formulario siempre te devuelve un texto.

Saludos, Angeles
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

Busqueda en una tabla

Publicado por carlos (34 intervenciones) el 02/12/2011 13:13:59
Hola Angeles,

yo creo que no es eso que indicas.
Estoy reproduciendo lo mismo que tienes en tu página porque precisamente tenía una tabla con usuario, password y nombre (los 3 de tipo texto).
No sabía muy bien como recorrer una tabla para buscar un registro y me vino muy bien tu ejemplo para familiarizarme con ello, pero ahora mismo tengo una tabla como la tuya y un formulario como el tuyo.

Saludos, Carlos
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

Busqueda en una tabla

Publicado por angelessebas (208 intervenciones) el 02/12/2011 13:18:27
Hola,

¿Puedes copiar y pegar la linea dónde abres el recordset?

Saludos, Angeles
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

Busqueda en una tabla

Publicado por carlos (34 intervenciones) el 02/12/2011 13:43:55
Hola Angeles,

Te pego lo que tengo en ese botón

Private Sub entrar_Click()
Dim db As Database
Dim rs As Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("select Usuario, Contraseña, Nombre from TUsuarios where Usuario='" & Form!Txtusuario.Value & "' and Contraseña='" & Form!Txtpassword.Value & "'")

If Not rs.EOF Then
vNombre = rs!Nombre
DoCmd.OpenForm "FInicio", acNormal
Else
MsgBox "Usuario o password no válidos"
End If
End Sub

Saludos, Carlos
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

Busqueda en una tabla

Publicado por angelessebas (208 intervenciones) el 02/12/2011 13:52:29
Hola,

El código es correcto.

Mírate este link que he encontrado con el mismo problema, creo que es cuestión de DAO o ADO

http://www.lawebdelprogramador.com/foros/Access/1137016-ERROR_13_ACCESS_2007.html

Me cuentas, saludos Angeles
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

Busqueda en una tabla

Publicado por angelessebas (208 intervenciones) el 02/12/2011 13:54:40
Prueba a declarar la variable de forma:

Dim rs As DAO.Recordset

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

Busqueda en una tabla

Publicado por angelessebas (208 intervenciones) el 02/12/2011 14:09:22
Hola,

Comprueba que si tienes una referencia ADO esta tiene que estar por debajo de la referencia DAO

Saludos, Angeles
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

Busqueda en una tabla

Publicado por carlos (34 intervenciones) el 02/12/2011 16:19:36
Hola Angeles,

declaré la variable como me indicaste:
Dim rs As DAO.Recordset
y ha funcionado.
De todas formas no sé las diferencias entre DAO y ADO.

Muchas gracias por tu ayuda.

Saludos, Carlos
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

Busqueda en una tabla

Publicado por angelessebas (208 intervenciones) el 02/12/2011 18:46:36
Hola,

Me alegro de que funciones.

Tanto DAO como ADO son sistemas de comunicación con las bases de datos:

DAO ---> Data Access Object

ADO ---> ActiveX Data Objects

DAO utiliza objetos Database y ADO objetos connection, por ejemplo para trabajar con SQL server

Saludos, Angeles
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