Consulta de un formulario continuo en Access

Tengo una tabla con los nombres de pacientes, y otra con tratamientos por lo que quiero hacer un formulario continuo porque son muchos tratamientos por paciente.

Cuando quiero hacer una consulta me salen tantas filas como tratamientos.

Hay alguna posibilidad de que en la consulta me aparezca una unica fila (o sea una sola vez el paciente) y que en las columnas aparezcan todos los tratamientos. Es que necesito para reportar datos que la consulta sea en horizontal.

1 respuesta

Respuesta
1

Se puede hacer con una consulta de tabla de referencias cruzadas. En 2010 se denominan en la cinta de opciones como General. Te aconsejo que te leas un documento de la ayuda de Access. Busca "Referencias cruzadas" y la primera entrada (al menos en 2010) es la página Facilitar la lectura de datos de resumen mediante una consulta de tabla de referencias cruzadas

Está muy bien explicado. Verás que la limitación que indican es que si hay muchas columnas el resultado es mas 'complicado de ver', por lo que no creo que sea la mejor manera de presentarlo, aunque si es cierto que es la forma ideal de exportarlos por ejemplo a Excel.

Si quieres un ejemplo sencillo te indico como probarlo con un ejemplo. Crea los siguientes objetos:

Tabla Pacientes: Campos Id (autonumérico y clave principal), Paciente (texto)

Tabla Tratamientos: Campos Id(autonumérico y clave principal), Tratamiento (texto) y IdPaciente (entero largo, para relacionarlo con el Id de Ia tabla Pacientes)

Introduce unos cuantos registros de prueba.

Créate una consulta con esta SQL:

SELECT Pacientes.Paciente, Tratamientos.Tratamiento
FROM Pacientes INNER JOIN Tratamientos ON Pacientes.Id = Tratamientos.IdPaciente;

Verás al ejecutarla un resultado como este:

Pacientes Tratamientos

Luis Analgésicos

Luis Omeprazol

Luis Analgésicos

Luis Ampicilina

Juan Hidrocortisona

Guarda la consulta anterior con el nombre PacientesTratamientos (para poder usarla como origen de datos en la segunda consulta).

Create una segunda consulta con esta SQL:

TRANSFORM Count(PacientesTratamientos. Tratamiento) AS CuentaDeTratamiento
SELECT PacientesTratamientos.Paciente
FROM PacientesTratamientos
GROUP BY PacientesTratamientos.Paciente
PIVOT PacientesTratamientos.Tratamiento; 

Verás que al ejecutarla el resultado es:

Paciente Ampicilina Analgésicos Hidrocortisona Omeprazol

Juan 1

Luis 1 2 1

Con esto tienes el resultado de pacientes en las filas y los tratamientos en las columnas. En la página de ayuda que te comentaba verás como usar filtros...

Cordiales saludos.

Muchas gracias Ángel, disculpa que no he respondido antes es que he estado fuera del país y no he podido.

Te agradezco mucho todas las molestias ocasionadas.

Un abrazo.

Carlos.

Y una pregunta más, es que me piden datos desde fuera y quería mandarselos en un excel. Por cada tratamiento tengo un par de datos más que quería enviar como son la fecha de inicio, de fin y el resultado del mismo. Habría alguna forma de crear una consulta para que me salgan todos los datos en fila?

Ej: Medicamento1, FechaIni1, FechaFin2, Resultado1, Medic2, FI2, FF2,Res2....etc?

Muchas gracias y disculpa nuevamente mis molestias.

Carlos.

No puedes anexar estos nuevos datos a la segunda consulta que te devuelve los resultados del número de tratamientos por paciente, ya que esta consulta no deja de ser un resumen de los datos y por tanto no muestra detalle de cada uno de los registros en los que se basa.

Si entiendo bien bastaría con crear una consulta como la primera que te indicaba (SELECT Pacientes.Paciente, Tratamientos.Tratamiento
FROM Pacientes INNER JOIN Tratamientos ON Pacientes.Id = Tratamientos.IdPaciente;) pero añadiendo las columnas de fechas y resultado. Añade o elimina la columna del paciente según debas de enviarla o no. Si los nuevos campos a añadir están en la misma tabla sin problemas; en caso de no estarlo añade la tabla en la que están esos campos a la consulta, indica la relación que corresponda (en este caso debe de ser obligatoriamente 1 a 1 entre claves principales) y ejecuta la consulta. Los resultados puedes exportarlos a Excel sin problemas.

Cordiales saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas