Enviar por e-mail felicitaciones en access
Como se puede Crear un correo electrónico de cumpleaños automatizado. Osea en un formulario tengo una lista de los cumpleaños del mes al darle clic a uno de ellos me envíe otro formulario o informe por correo dando felicitaciones
1 respuesta
Vamos a suponer que el formulario depende de la tabla Empleados que tiene un campo FechaNac.
Puedes hacerlo de muchas formas, en realidad depende de como quieras hacerlo tú, si un formato de informe de felicitación predeterminado, como archivo adjunto, o simplemente un mensaje de texto, etc.
Por ejemplo, en el evento Al cargar del formulario puedes crear un procedimiento de evento y poner algo como
If nz(dcount("*","empleados","month([fechanac])=month(Date()) and day([fechanac])=day(date())"))=0 then
Msgbox"Para que voy a abrirme si no hay ningún cumpleaños hoy", vbokonly,"Prueba otro día"
Docmd. Close acform,"nombre del formulario"
else
me.recordsource="select * from empleados where month([fechanac])=month(Date()) and day([fechanac])=day(date())"
end if
Me explico, cuando vayas a abrir el formulario, primero comprobará si hay algún empleado que cumpla años ese día, si no lo hay, te muestra el mensaje y se cierra. Por el contrario, si lo(s) hay, el formulario sólo te muestra aquellos registros que cumplan años.
A partir de ahí, o bien cuando hagas doble clic en un registro, o bien que hagas que recorra los registros( si hay varios) diciéndole que envíe un mensaje de texto o un informe usando
Docmd.sendobject...
Por eso sería necesario que concretaras lo que le vas a enviar
Hola, buen día, gracias por su atención. me gusta esa idea,
Voy a tratar de ponerla en practica y le aviso
Lo puse en practica, lo que no entiendo como envío un formulario que tengo diseñado para dar las felicitaciones a quien corresponda enviarlo por email al dar clic, doble clic o simplemente envíe a los que cumplan ese día.
La ultima parte si no la entiendo , el de como enviar el formulario que diseñe para dar felicitaciones a los cumpleañeros del dia
Te decía, que se puede hacer de mil formas, dependiendo de si lo que quieres poner como asunto del mensaje es personalizado a cada cumpleañero, por lo que debería estar en un campo, si lo que quieres poner como asunto del mensaje, lo mismo, en que formato quieres enviar el formulario, etc, etc. Por ejemplo, vamos a suponer que tengo la tabla Clientes, donde puedes ver que hay que cumplen hoy día 20 de Mayo
Y tengo un formulario Cumpleaños, tal que
Y un formulario Felicitación
Cuando voy a abrir el formulario Cumpleaños me dice si hay alguno y el número de ellos
Si no los hubiera me diría que no hay y que para qué se va abrir. Al decirle que si quiero verlos
Sólo me muestra los que cumplen años. Si pulso el botón Enviar Felicitación, en Outlook
Yo le he puesto que envíe el formulario como archivo PDF, que siempre queda "más bonito" y lo que recibe como archivo adjunto es
El código del evento Al cargar del formulario Cumpleaños es
Private Sub Form_Load() Dim c As Byte, respuesta As Byte c = Nz(DCount("*", "clientes", "month([fechanac])=month(Date()) and day([fechanac])=day(date())")) If c > 0 Then respuesta = MsgBox("Hoy hay " & c & " personas que cumplen años. ¿Quiere verlos?", vbYesNo, "Tu decides") If respuesta = vbYes Then Me.RecordSource = "select * from clientes where month([fechanac])=month(Date()) and day([fechanac])=day(date())" ElseIf respuesta = vbNo Then DoCmd.Close acForm, "cumpleaños" End If Else MsgBox "Para que voy a abrirme si no hay nadie que cumpla hoy", vbOKOnly + vbInformation, "Quizá otro día" DoCmd.Close acForm, "cumpleaños" End If End Sub
he ampliado el código para tratar de cubrir todas las posibilidades, de que no hay, de que haya y no quieras verlos, y de que haya y quieras verlos.
Y el código del botón Enviar felicitación es
Private Sub Comando9_Click() Dim i As Byte DoCmd.GoToRecord , , acFirst For i = 1 To Me.Recordset.RecordCount DoCmd.SendObject acSendForm, "Felicitación", "PDFFormat(*.pdf)", "" & Me.Email & "", , , "Remitiendo felicitación", "Estimado amigo " & "" & Me.Cliente & "" & " Muchas felicidades" DoCmd.GoToRecord , , acNext Next End Sub
Aunque si fueran varios los que cumplen el mismo día, personalmente lo haría de otra forma.
Pero ya te digo que todo depende de lo que quieras poner.
¡Gracias! Lo estoy poniendo en practica y mada error de compilación, no se encontró método dato miembro y me abre el Visuar Basi, me sobre salta la palabra
Me.Email en la línea de indicaciones
Yo no se que quiere decir con eso!
Todo lo de más, funciona tal como explico usted, pero llega hasta ahí, al hacer clic no envía el formulario en cuestión porque da ese error.
Una pregunta aparte, claro tiene que ver con esto.
En ves de halar los datos para esta finalidad, ¿se podrá halar desde una consulta?
Ejemplo en ves de tomar los datos de la Tabla empleados, ¿se podría ser desde una consulta?
Lo de Email, es que como puedes ver, en el formulario tengo un cuadro de texto, que se llama así, Email, donde aparece el de cada cliente.
Podemos hacer una cosa. Si quieres, repito, si quieres, haz una copia vacía de tu base, sólo con la tabla de los empleados(vacía) y el formulario y me la mandas a [email protected]
La miro y te digo
Si lo haces, en el asunto del mensaje pon tu alias Abraham Gil, ya que si no sé quien me escribe ni los abro.
¡Gracias! Hola le envíe el asunto por su e-mail y como que no lo ha visto o si tiene mucho trabajo esperaré, saludos
No he recibido nada. Mi correo es [email protected]
- Compartir respuesta
Excelente, Lo voy a poner en practica - Eduardo Gimenez