Access - VLOOKUP EN ACCESS

   
Vista:
Imágen de perfil de lefrancis

VLOOKUP EN ACCESS

Publicado por lefrancis (25 intervenciones) el 19/03/2014 17:04:58
Tengo
Un Combox en "Lista de valores" llamado (Categorías)
Un campo llamado Responsable
Una tabla llamada Responsable por Categorías

Quiero que cuando seleccione una categoria en el cuadro de texto (Responsable) me traiga el nombre del encargado de esa area.



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
Imágen de perfil de Neckkito

VLOOKUP EN ACCESS

Publicado por Neckkito (1104 intervenciones) el 22/03/2014 08:54:17
Hola!

En el evento "Después de actualizar" del combo escribe lo siguiente:

...
Private Sub...
If not isnull(me.Categorías.Value) then
me.Responsable.Value=dlookup("Responsable","Categorías","Categorías='" & me.Categorías.value & "'"
End if
...

El código anterior da por supuesto que el valor que te recoge el combo, y por extensión el campo Categorías, es de tipo texto. Si no fuera tipo texto no te funcionará.

Saludos,

http://neckkito.siliconproject.com.ar
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 lefrancis

VLOOKUP EN ACCESS

Publicado por lefrancis (25 intervenciones) el 24/03/2014 18:10:13
1
2
3
4
5
6
7
Private Sub Categoria_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.Categoria.Value) Then
Me.Responsable.Value = DLookup("Responsable", "categoria", "Categoria=" & Me.Categoria.Value & "'")
 
End If
 
End Sub

esta fue la formula que puse y me marca error :S
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 Neckkito

VLOOKUP EN ACCESS

Publicado por Neckkito (1104 intervenciones) el 24/03/2014 20:38:58
Hola!

Revisa los tipos de datos que tienen tus campos. Si el combo no te devuelve un string (texto) es normal que te dé un error.

Para saber qué valor te devuelve escribe tu código así. Te lo marco en negrita. Después puedes borrar esas líneas en negrita:

...
Private Sub Categoria_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.Categoria.Value) Then
msgbox me.Categoria.Value
Exit sub

Me.Responsable.Value = DLookup("Responsable", "categoria", "Categoria=" & Me.Categoria.Value & "'")
End If
End Sub
...

Si te sale un error de "uso no válido de null" es que no te está cogiendo el valor del combo.

Si por casualidad te devuelve un número y el campo de Categoria de tu tabla es string no puedes comparar dos tipos de datos diferentes. Debes comparar string-string o número-número.

Revisa los nombres de tus controles también. El código hace referencia a los nombres que me has dicho que estás utilizando, y esos nombres los puedes encontrar sacando las propiedades del control -> Pestaña Otras -> Nombre.

Por último, si lo anterior no funciona, necesitaría que me indicaras el número y la descripción del error.

Y en el peor de los casos, haz una miniBD con los elementos implicados y pásamela a mi mail y le echo un vistazo. El mail es neckkito(ARROBA)gmail(PUNTO)com.

Saludos,

Neckkito
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 lefrancis

VLOOKUP EN ACCESS

Publicado por lefrancis (25 intervenciones) el 24/03/2014 21:03:14
Cuando selecciono la categoría me devuelve la misma categoría (texto) te acabo de enviar el file de todas formas para ver si puedes ayudarme.



mil gracias.
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 Neckkito

VLOOKUP EN ACCESS

Publicado por Neckkito (1104 intervenciones) el 24/03/2014 21:40:38
Hola!

Te lo comento aquí por si alguien se encuentra con el mismo problema. Los errores que tenías eran tres:

1.- El evento que te comentaba era "Después de actualizar". Tú lo has puesto en "Antes de actualizar".

2.- Error en el filtro del dlookup: si comparas con un string el valor debe estar entre comillas simples. Es decir, que la línea, inicialmente, sería:

1
"Categoria='" & Me.Categoria.Value & "'")


Fíjate que, después del signo igual, hay una comilla simple, y el final, antes del paréntesis de cierre, hay una comilla simple encerrada entre comillas dobles.

3.- Error en la construcción del DLookup: la estructura del DLookup es, en este caso:

("valor a devolver", "tabla de origen", "filtro")

El valor a devolver es el nombre del responsable. Y el campo que guarda ese valor es [Responsable].
La tabla que contiene los valores con los responsables es [Responsable por Departamento]
El elemento que te filtra la categoría, en la tabla de origen, es [Departamento]

Por ello, tu código final debería quedarte así:

...
1
2
3
4
5
6
Private Sub Categoria_AfterUpdate()
    If Not IsNull(Me.Categoria.Value) Then
        Me.Responsable.Value = DLookup("Responsable", "[Responsable por Departamento]", _
            "Departamento='" & Me.Categoria.Value & "'")
    End If
End Sub
...

Y listos.

Saludos,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de lefrancis

VLOOKUP EN ACCESS

Publicado por lefrancis (25 intervenciones) el 25/03/2014 13:31:26
Funcionaaaa!!! a la perfeccion muchisimas gracias.

No es parte de este foro... pero podrias decirme como al cargar un formulario puedo filtrar un campo de un subformulario?
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 Neckkito

VLOOKUP EN ACCESS

Publicado por Neckkito (1104 intervenciones) el 25/03/2014 13:36:42
Hola!

Cuando te creas un subformulario puedes elegir el campo de relación con el form principal. Automáticamente los registros del subformulario quedan "filtrados" en función de ese valor del form principal.

Sólo tienes que seguir el asistente y, cuando llegas al punto de establecer la relación, le indicas que quieres definir la tuya propia y seleccionas del form y del subform los campos que te permitirán ese filtro.

Saludos,

Neckkito
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