Imprimir página | Cerrar ventana

Recuperar datos a partir de tablas

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=85825
Fecha de impresión: 22/Abril/2021 a las 13:51


Tema: Recuperar datos a partir de tablas
Publicado por: damian_colomb
Asunto: Recuperar datos a partir de tablas
Fecha de publicación: 18/Febrero/2021 a las 00:22
Hola! 
Tengo una base de datos con datos de pacientes (DNI, nombre, apellido, etc) pude realizar el formulario para cargar nuevos datos en la misma, pero el problema lo tengo cuando quiero utilizar esos datos en otro formulario, más precisamente para escribir un informe. 
En conclusión, no se por donde buscar, necesito saber si se puede realizar con alguna función o debo escribir un macro en vb para ello.
La idea es realizar un formulario en el cual a partir de que se carga el numero de documento, se completan los cuadros de texto con los datos que se relacionan con el mismo.
No se si me expliqué bien.
Por ejemplo:
Base de datos: 
---DNI---Apellido---Nombre---Sexo---
3481734--Perez----Juan-------Masculino---
En el formulario tengo varios cuadros de textos vacios (Apellido, nombre, sexo, etc), la idea es que al colocar el DNI, complete los cuadros con los datos relacionados, en este caso se colocaria 3481734 y automaticamente se completarian los cuadros de texto con el perez, juan y masculino.

Estoy medio perdido por donde buscar entonces se me está haciendo complicado encontrarle la vuelta.
Muchas gracias por la ayuda de siempre
Saludos



Respuestas:
Publicado por: mounir
Fecha de publicación: 18/Febrero/2021 a las 08:39
Hola!

Tan simple como crear un cuadro combinado que incluya los DNIes y seguir el asistente de controles, seleccionas la tercera opción y ya está. Eso sí, el formulario tendría que tener si origen de registro la tabla en cuestión.

https://support.microsoft.com/es-es/office/permitir-a-los-usuarios-buscar-un-registro-seleccionando-un-valor-de-una-lista-e3ed7711-433a-4931-9cab-b0f71a90c329" rel="nofollow - https://support.microsoft.com/es-es/office/permitir-a-los-usuarios-buscar-un-registro-seleccionando-un-valor-de-una-lista-e3ed7711-433a-4931-9cab-b0f71a90c329

-------------
Un Saludo.


Publicado por: damian_colomb
Fecha de publicación: 18/Febrero/2021 a las 16:37
Hola! Gracias por responder.
En realidad el cuadro combinado no sería el ideal.
Mi intención es que se completen todos los datos a partir de un único registro, es decir el único campo que completaría el usuario sería el de DNI.
Una vez completado ese campo, la idea es que se completen los cuadros de textos correspondientes con todos los datos relacionados a ese DNI, de manera que queden como base para una futuro informe.
Estaba investigando la función Dbusq, tal vez pueda ayudarme


Publicado por: emiliove
Fecha de publicación: 18/Febrero/2021 a las 17:07
Con DBusq se puede pero hay mas formas, quizás column es mas simple o en automático que lo haga access, algunas formas de hacerlo:
http://emilioverastegui.blogspot.com/2015/02/usando-dos-o-mas-tablas-en-un.html" rel="nofollow - http://emilioverastegui.blogspot.com/2015/02/usando-dos-o-mas-tablas-en-un.html

Saludos.


Publicado por: mounir
Fecha de publicación: 18/Febrero/2021 a las 17:09
Hola!

Si copiases el código que genera el cuadro combinado y lo aplicases en el evento al salir del cuadro de texto tendrías el mismo rsultado.

-------------
Un Saludo.


Publicado por: damian_colomb
Fecha de publicación: 18/Febrero/2021 a las 19:51
Muchas gracias a los dos por sus respuestas!
Es muy bueno el blog que me pasaste emi, pasa que todos los ejemplos son a apartir de un cuadro combinado que se hace con asistente.
En mi caso, el dato inicial, parte de un cuadro de texto, DNI, a partir del cual se deberian completar todos los datos de los otros cuadros de texto, no se si se entiende bien!
No puedo hacerlo funcionar tampoco con el Dbúsq, probé con un código usando la función dlookup, pero tampoco me funciona.
Les transcribo el código y mi interpretación a ver si se dan cuenta cual es mi error:

Apellido = DLookup("[apellido]", "[pacientes]", "txt_dni_veda=" & dni)

Por lo que interpreto, lo que le estoy diciendo es que:

Apellido = que devuelva el campo apellido, de la tabla pacientes,  según el valor del cuadro de texto txt_dni_veda que coincida con el campo dni de la tabla pacientes.

El problema es que el al colocar el DNI en el cuadro de texto "txt_dni_veda", el cuadro texto donde coloqué el código queda en blanco



Publicado por: xavi
Fecha de publicación: 18/Febrero/2021 a las 23:39
Hola,

Empiezo por el final: ese DLookup no funciona porque el orden de la equivalencia es al revés. Además se podría dar el caso de que el campo dni fuera de tipo texto y tu lo estás tratando como un número. Añádele apostrofes y debería funcionar:
Me!Apellido = Dñlookup("[Apellido]", "[pacientes]". "dni = '" & Me!txt_dni_veda & "'")

Por otro lado yo insistiría con el tema del cuadro combinado cómo método de rellenado.
Te propongo 2 opciones partiendo ambas de un cuadro combinado con los campos necesarios en sus columnas (aunque no esten visibles). Imaginemos que el cuadro combinado tiene 4 columnas (dni, nombre, apellido y sexo)
Opción A: que los controles dónde debas mostrar los otros datos se basen en una llamada a esas columnas. Así la propiedad origen del control apunta a la propiedad column del control cboDNI en su columnas adecuada:
=cboDNI.Column(1) devolveria el nombre
=cboDNI.Column(2) devolveria el apellido
=cboDNI.Column(3) devolveria el sexo

Nota: la primera columna tiene índice 0

Esta opción es adecuada si los datos de nombre, apellidos, sexo, etc no se van a guardar en la tabla

Opción 2: manejar el AfterUpdate del cuadro combinado para traspasar los valores de las columnas a loc cuadros de texto
Me!txtNombre = Me!cboDNI.Column(1)
Me!txtApellidos =Me!cboDNI.Column(2) 
Me!txtSexo =Me!cboDNI.Column(3) 

Esta opción es adecuada si se requiere almacenar los datos en la tabla.

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: pitxiku
Fecha de publicación: 20/Febrero/2021 a las 11:52
Otra posibilidad, siempre y cuando ese segundo (¿informe/formulario?) esté basado en otra tabla y no se quiera guardar los nombres, apellidos y sexo, es basar ese formulario en una consulta.

Por ejemplo, si tenemos una tabla e visitas con los campos DNI, fecha y hora de visita, podemos crear una nueva consulta y:

1. Agregar la tabla de visitas a la consulta
2. Añadir la tabla de pacientes a la consulta
3. Relacionar los DNI de las 2 tablas: todos los registros de visitas y los relacionados de pacientes
4. Seleccionar todos los campos de la tabla visitas que queramos ver, incluyendo el campo DNI
5. Seleccionar los campos nombre, apellidos y sexo de la tabla pacientes
6. Comprobar que la consulta hacer lo que queremos, y usarla como origen del formulario

Si quieres/necesitas guardar esta campos en la segunda tabla, tendrás que usar la segunda opción de Xavi.


Publicado por: damian_colomb
Fecha de publicación: 28/Febrero/2021 a las 15:34
Muchísimas gracias a todos!


Publicado por: damian_colomb
Fecha de publicación: 05/Marzo/2021 a las 03:43
Se puede cerrar este hilo
Drop here!



Imprimir página | Cerrar ventana