Acces, como enviar el formulario actual por mail

Tengo un formulario que lo diligencia un usuario, selecciona guardar y debe enviarlo por correo. Pero me esta enviando todos todos los registros, solo necesito que envíe el formulario actual, como puedo hacer, por macros no logre encontrar la función.

Y si paso toda la orden que tengo en esta macro, la verdad no se como se puede hacer.

¿Me podrían explicar como hacer el código en VB de esta macro y enviar por correo solo el formulario actual?

Mil gracias

Respuesta
3

Es muy sencillo, primero te explico cómo hacerlo con macros (ya casi lo tienes), y luego te digo lo mismo en VBA.

1º/ Con macros solo has de crear una macro con dos acciones:

En primer lugar la acción "AbrirFormulario", tal como tienes en la imagen, y añadiendo el filtro en la parte de la condición WHERE. Por ejemplo, si tienes un campo ID, la condición WHERE sería:

[ID]=[Formularios]![PROGRAMA]![ID]

En segundo lugar, la acción "EnviarPorCorreoObjetoDeBaseDeDatos", exactamente como la tienes. Aunque yo le cambiaría lo de Modificar mensaje a "No" para que lo envíe directamente.

2º/ Por código:

En el evento "al hacer clic" de un botón (o en el evento que prefieras), pones:

DoCmd.OpenForm "TOperarios", acNormal, , "IDOperario=" & Me.IDoperario, , acHidden
DoCmd. SendObject acSendForm, "TOperarios", acFormatPDF, "[email protected]",,, "Test", "Probando a enviar mail", False

Te subo un ejemplo con las dos formas: http://www.filebig.net/files/PMTmHDFHK3

Un saludo.


¡Gracias! 

Buen día

Consulta, tengo un formulario en el cual el usuario debe diligenciar 8 campos. A cada campo en la tabla de había colocado como requerido=si. Para que sea obligatorio y no deje guardar si no llena los campos. ¿Hay otra forma de hacerlo obligatorio?

¿Cómo enlazo este código para que se obligue a llenar los campos? Al colocarlo me sale error que falta

For each control in form.controls

If control.controltype=actextbox and control.value=Null then

msgbox"Por favor diligencie todos los campos"

en ese formulario solo tengo este evento 

Private Sub Form_Current()
If CurrentProject.AllForms("login").IsLoaded Then
Me.IDUSUARIO = DLookup("idusuario", "usuarios", "usuario=forms!login!txtusuario")
Me.USUARIO = Forms!login!txtusuario
End If
End Sub

como puedo colocar el codigo que obligue a llenar los campos?, si no los llena pues no deja guardar el registro, eso lo habia logrado colocando a cada campo en requerido=si.

Agradezco su orientación

Gloria, lo adecuado es que hagas tus nuevas consultas abriendo nuevas preguntas, porque si alguien tiene tu misma duda de cómo obligar a rellenar todos los campos, nunca encontrará la respuesta bajo una pregunta que se titula "enviar formulario por mail". Además, si encadenas preguntas distintas, la labor de los expertos queda sin valorar (solo puedes puntuar una vez por pregunta).

Para validar por código que los campos se rellenan el código sería (si lo pones en el mismo formulario en que lo ejecuta:

Dim ctl As Control
For Each ctl In Me.Controls 
If ctl.ControlType=acTextBox And Nz(ctl.Value,"") = "" Then
Msgbox "Tienes que rellenar el campo " & ctl.Name
End If
Next ctl

Este código te comprobará que en los cuadro de texto (podrías añadir la comprobación para cuadros combinado u otro tipo si los tuvieras) y te lanzará un mensaje indicando qué campos has de rellenar.

El código tendrás que colocarlo en el evento "antes de actualizar" del formulario, y no en "al activar registro".

Otra solución, más elegante, sería la que explico aquí: http://neckkito.xyz/nck/index.php/ejemplos/13-formularios/83-campos-obligatorios

En tu caso, si quieres validar todos los cuadros de texto, no te haría falta poner los de "Ob" en los nombres y te puedes saltar las lineas de código que hacen referencia a ellos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas