Generar informe para un mismo día y mes de todos los años.

Tengo una BD CLIENTES con un campo fecha. Esta fecha se refiere al día de fundación de la entidad de mi cliente y yo quiero que mi BD me recuerde esta importante fecha a traves de un informe o aviso para enviarle una felicitación por cualquier canal de comunicación. Es decir que cada 24 de diciembre de cada año me anuncie cuáles clientes celebran ese día.

3 respuestas

Respuesta
2

Te digo lo mismo de antes, se puede hacer . Todo depende de si abres las base de datos todos los días. Vamos a suponer que sí, y que al abrirla muestra un formulario de inicio.

En sus propiedades-eventos-al abrir puedes poner, por ejemplo

dim respuesta as byte

If dcount("*","clientes","day(date())=24 and month(Date())=12")>=1 then

respuesta=msgbox("Alexis, hay que felicitar a clientes. ¿Quieres verlos?",vbyesno+vbexclamation,"Que no se te olvide)

if respuesta=vbyes then

docmd.openform"clientes",,,"day([fechacontrato])=24 and month([fechacontrato])=12"

end if

end if

Es decir, que cuando se abre cuenta si hay algún cliente en la tabla Clientes cuyo día de FechaContrato es el 24 y el mes es el 12. Si al menos hay 1 te muestra el mensaje y si le dices que si quieres verlos se abre el formulario clientes sólo con ellos.

Si en la tabla clientes tuvieras un campo, por ejemplo, email, podrías enviarle un correo a cada uno con un informe "bonito" adjunto. ( Y recordarles que tienen que pagarte)

En fin, que lo puedes hacer de mil formas.

Discúlpame Julián, creo que debí de explicarme mejor. No te dije que lo del 24 de diciembre era un ejemplo.

Lo primero que tengo dudas es en la TABLA CLIENTES donde está el campo DÍA ANIVERSARIO, me pregunto si debo establecer algún formato específico que solo permita día y mes. En mi caso la tengo como fecha corta que admite día, mes y año.

Segundo: La BD se abre todos los días en el formulario Ficha del Cliente. Quiero que al abrir ese formulario me diga de ese día cualquiera, cuáles clientes de mi BD cumplen aniversario en esa fecha. El resto de la idea me encanta e incluso trataré de ver si hago lo del mensaje por correo electrónico también.

Todo depende del formato del campo DiaAniversario, si es texto o número y si pones, por ejemplo 07/12 ó 7/12 ó si el mes lo pones como 7, 07 o Agosto( mal porque en agosto no se debe trabajar)

Por ejemplo, por poner uno. Tengo una tabla con DiaAniversario y otro campo MesAniversario

Puedes ver que hay dos clientes que "cumplen" hoy. En un formulario, en un evento cualquiera le pongo( en este ejemplo se lo pongo en el evento Al abrir el formulario de inicio)

Private Sub Form_Open(Cancel As Integer)
Dim i As Integer, respuesta As Byte
i = DCount("*", "clientes", "diaaniversario=day(date()) and mesaniversario=month(Date())")
If i >= 1 Then
respuesta = MsgBox("Hay " & i & " clientes que cumplen hoy. ¿Quieres verlos?", vbYesNo + vbInformation, "Recuérdale que te paguen")
If respuesta = vbYes Then
DoCmd.OpenForm "clientes", , , "diaaniversario=day(date()) and mesaniversario=month(Date())", acFormReadOnly, acDialog
End If
End If
End Sub

De forma que cuando lo abro

Si le digo que sí

Por eso es importante saber como "almacenas" el valor de díaaniversario.

Respuesta
1

No me queda claro que todos los clientes (se supone que cada uno con su campo de 'fecha aniversario') coincidan en celebrarlo el día 24 de diciembre (que puede ser/no-ser laborable y que puede coincidir en los clásicos no-laborables sábado/domingo).

Para comparar las fechas de los diversos aniversarios sin modificar el código, lo mas sencillo es darles (a la fecha de referencia y a la actual) un formato de mes y día para poder compararlos:

Format([una-fecha], "mdd") ==>  el uno de enero devolverá '101' y el 24 de diciembre '1224'

Nada impide en crear un informe (o lo que sea adecuado) y que la maquina envíe las felicitaciones de forma automática (si permanece siempre encendida, ejemplo un servidor, no le importara que sea sábado, domingo o un festivo local)

Respuesta
1

Puede crear una consulta y utilizarla como origen de datos de un informe.

Ingrese en la cuadricula de diseño los siguiente

SELECT *
FROM tblusuarios
WHERE DatePart('m', fecharegistro) = Month(Date()) AND DatePart('d',fecharegistro) = Day(Date());

Cambie tblusurios por el nombre de su tabla y fecharegistro por el nombre del campo fecha de su tabla.

Puede utilizar esta consulta como origen de datos de un formulario o reporte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas