Envíos de Correo electrónico desde Access

Tengo una base de datos, en la que necesitaría enviara el formularioactual a la dirección correspondiente, el problema es que me manda todos los datos, habría alguna forma de que solo me mandara los registros que veo en pantalla

2 respuestas

Respuesta
2

Pedro, puedes hacerlo de muchas formas. Lo importante sería saber como lo quieres hacer tú. En principio, para que no te envíe todo el formulario convendría individualizar el registro que quieres enviar y saber si el formulario es único o continuo. Por ejemplo, supongamos que tengo el formulario Clientes, donde le he añadido un cuadro combinado donde puedo elegir el nombre del cliente.

Selecciono a María y primero me lleva al registro de ella

E inmediatamente

Le digo que lo mande en formato PDF que "queda más bonito". El código del evento Después de actualizar del combinado, que se llama Enviar es

Private Sub Enviar_AfterUpdate()
Me.RecordSource = "select * from clientes where cliente='" & Me.Enviar & "'"
DoCmd.SendObject acSendForm, "clientes", "PDFFormat(*.pdf)", "" & Me.email & "", , , "Me debes dinero", "Paga o te mando a Tony El Gordo"
End Sub

BUenos días y muchas gracias por la atención, la cosa es que yo tengo en la ficha de clientes el correo electrónico, con lo que cuando pulso el botón la dirección ya esta asignada

Yo también la tengo, mira la tabla origen del formulario

En caso de que el formulario estuviera basado en otra tabla que no fuera la de Clientes, por ejemplo Ventas deberías usar algo como

Din s as string

s=dlookup("email","clientes","cliente='" & me.enviar & "'")

docmd.send...........,"" & s & "",.......

Por eso sería conveniente que pusieras una imagen del formulario.

Te adjunto imagen y muchas gracia

Pues más fácil me lo pones, donde yo digo "" & me. Email & "" ( que es el nombre del cuadro de texto donde aparece su email)tu tienes que poner el nombre del cuadro de texto donde aparece su correo electrónico.

He modificado tu código, donde Id es el registro activo que quiero mandar por correo, operaciones es el nombre de el formulario y correo es el cmpo que contiene la dirección de correo pero me sigue dando error

Private Sub Comando81_Click()
Me.RecordSource = "select * from operaciones where id='" & Me.Enviar & "'"
DoCmd.SendObject acSendForm, "operaciones", "PDFFormat(*.pdf)", "" & Me.correo & "", , , "Adjuntamos Documento"
End Sub

Es una forma tan buena como cualquier otra, con el origen del registro en el id, individualizas un registro. Es de suponer que has hecho el combinado con el asistente y le ha añadido la columna Id.

NO entiendo cuando dices "

Es de suponer que has hecho el combinado con el asistente y le ha añadido la columna Id.

Cuando se crea un combinado con el asistente de creación de controles Active X, siempre le añade como columna dependiente un Id, ya sea IdCliente, Idventa, etc, aunque la ponga como oculta. Personalmente hago los combinados o cuadros de lista como quiero yo, no como quiere el asistente. Por eso, en el combinado sólo aparecía el nombre del cliente que a su vez es la columna dependiente.

Pero si el combinado tiene como columna dependiente la del id( que supongo que será numérico) la expresión sería

...."Id=" & me.enviar & ""

Cuando una variable o el valor de un control es numérico se pone

"Id=" & me.enviar & ""

Si el valor del control es texto

"Id='" & me.enviar & "'"

si el valor del control es fecha

"Id=#" & me.enviar & "#"

Respuesta
1

¿Cuándo dice "que solo me mandara los registros que veo en pantalla" ¿Es qué están en un cuadro de lista?. Si adiciona una imagen nos evita estar improvisando

Supone que solo mande el formulario activo, el cual tiene un campo llamado correo donde esta el correo electrónico del cliente al que le quiero mandar el documento, te adjunto imagen de lo que quiero mandar cuando pulso el botón de la impresora

Cambie acSendForm por acSendNoObject en el ejemplo que le dan. Personalmente no utilizo DoCmd. SendObject, ya que es muy limitado. Consulte este link:

3 métodos fáciles para enviar correos electrónicos desde Access 2007/2010/2013/2016/2019 (accessrepairnrecovery.com)

Y tampoco utilizo Outlook lo hago con CDO y utilizo el servidor de Google.

En su caso le queda más fácil con Outlook reemplazando los campos de acuerdo con la información del formulario.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas