Consulta del estado de un cliente en un rango de fechas

Tengo dos tablas en acces:

Tabal 1: Una tabla con un listado de clientes con una fecha de pedido.

Tabla 2: Otra tabla con un registro cada x tiempo para cada cliente en los que se indica el estado del cliente. El estado va cambiando o no entre estos 3 estados moroso, al día, pendiente de estudio en función de su estado en la fecha en que se realiza la consulta.

Necesitaría generar una consulta que me indicará el estado del cliente a la fecha de pedido, que no tiene porque ser la actual sino una de hace dos años.

1 Respuesta

Respuesta
2

Jorge: Una manera de hacerlo sería:

Con el asistente de Consultas, elige diseño de Consulta >> No le pongas ninguna Tabla >> Elige cerrar en el Menú emergente. Botón derecho del Mouse y en el Menú que te sale eliges SQL Vista SQL >> Borra lo que haya (Casi seguro que habrá un SELECT), y pega éste Código:

SELECT ClientesEstado.IdCliente, Max(ClientesEstado.FechaEstado) AS UltFEstado, DLookUp("Estado","ClientesEstado","ClientesEstado!IdCliente = " & [IdCliente]) AS Estado
FROM ClientesEstado
GROUP BY ClientesEstado.IdCliente;

Debes adaptar los Nombres a los que tu tengas, y aquí estoy suponiendo que el IdCliente es numérico. ClientesEstado sería tu segunda Tabla ... Un saludo >> Jacinto

Jorge: Repasando mi respuesta, creo que no es adecuada y en su lugar te propongo:

Siguiendo la operativa para la creación de una consulta que te comento arriba, construyes una para guardarla, con el Nombre de: QryClientesEstadoActual (u otro Nombre que tu prefieras)

Lo que has de copiar en esa Consulta en vista SQL sería:

SELECT ClientesActualEstado.IdCliente, ClientesActualEstado.FechaEstado, ClientesActualEstado.Estado

FROM ClientesActualEstado

WHERE (((ClientesActualEstado.Estado) In (SELECT TOP 1 Estado FROM ClientesActualEstado AS DupliTabla WHERE DupliTabla.IdCliente = ClientesActualEstado.IdCliente ORDER BY DupliTabla.FechaEstado DESC, DupliTabla.Estado DESC)))

ORDER BY ClientesActualEstado. IdCliente, ClientesActualEstado. FechaEstado, ClientesActualEstado.Estado;

Al igual que te comentaba en mi primera respuesta, has de adecuar los Nombres a los que tu tengas. Lo de DupliTabla es un alias, que tu puedes sustituir por T1 por ejemplo

Después ya si desde tu Formulario en un Cuadro de Texto que voy a llamar TxtEstActualCliente, capturas el valor de ese Cliente en la Consulta creada.

Lo has de hacer en algún evento apropiado del Formulario. Ejemplo: Si vas a hacer un pedido, en el AfterUpdate del Cliente.

Me.TxtEstActualCliente = DLookUp(“Estado”,”QryClientesEstadoActual”, “IdCliente = “ & Me.idCliente)

Si ese Cliente no está te devolverá un Error, que se puede prevenir, pero como principio, asegura que esto que te envío te resuelve el problema. Un saludo >> Jacinto

Jacinto,

Lo primero agradecerte tu respuesta.

Perdona mi ignorancia. Estoy intentando aplicar la respuesta que me has facilitado. Me cuesta porque mi nivel en visual y SQL es limitado (principiante). 

Necesito que me genere una consulta o una tabla donde me indique para una fecha (que ya está pregrabada) cuál era el estado de ese DNI (ID cliente). No consigo entender la instrucción que me mandas para poder completarlo.

Muchas gracias por tu colaboración y paciencia 

Jorge: Si en tu Base de datos, o en la parte que afecta a ese proceso no tienes datos personales y/o confidenciales, me la puedes enviar a [email protected]

Te comento ésto porque sin tener delante los objetos, se hará más dificil conseguir el objetivo que buscas. Puedes también aislar esos objetos e inventar algunos datos.

Si eso no fuera posible por alguna razón, mira de poner alguna imagen de la Tabla o Tablas donde se vean los elementos necesarios. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas