Como crear más de un informe de una misma tabla access

Tengo una tabla Acces donde me aparecen registros de diferentes clientes. Esta tabla es móvil, por lo que cuando la actualizo, pueden aparecer 5, 20 o 10 clientes, con sus respectivos pedidos.

Una de las columnas es el código de cliente, y otra es su número de pedido.

Me gustaría hacer un módulo vba, que me permitiese agrupar los pedidos por cliente, y crear tantos informes como clientes aparezcan ese día en la tabla, para posteriormente poder enviarlos vía mail, a cada cliente su informe.

La idea es crear un informe por cada cliente, con sus pedidos, de forma automática.

No sé como hacer el código.

3 respuestas

Respuesta
1

Vamos a suponer que tienes ya hecho el informe Clientes, donde has agrupado los pedidos por cliente. Con la tabla esa, que llamaremos también Clientes, y que supongamos tiene también el campo Email, haces un formulario donde aparezca CodCliente, da igual único o continuo, y en algún evento, por ejemplo Al hacer clic de un botón puedes poner

docmd.setwarnings false

docmd.gotorecord,,acfirst

dim i as integer

for i=1 to form.recordset.recordcount

docmd.openreport"clientes",acpreview,,,"codcliente=" & me.codcliente & ""

DoCmd.SendObject acReport, "Cliente", "PDFFormat(*.pdf)", "" & me. Email & "", "", "", "Envio pedido", "Como no pagues, voy a verte", True, ""

Docmd. Gotorecord,, acnext

next

Lo que hace es ir "recorriendo" los registros enviando el informe, en formato pdf a cada dirección de correo que aparece en el cuadro de texto Email del registro

Buenas noches Icue;

No te he entendido muy bien, yo parto de la Tabla donde tengo toda la información de los clientes y su pedido, esta llamaremos Tabla1. Esta tabla contiene 1 columna con el código de cliente, otra columna con los diferentes numero de pedido, y otra con las direcciones de email.

De esta tabla1 genero un formulario, con el asistente de formularios, del tipo " en columnas", que llamaremos formulario1. Y en el incluyo un botón, que al clickarlo, ejecuta el código que me indicas. ¿Eso así?

¿Qué quieres decir con  "haces un formulario donde aparezca CodCliente, da igual único o continuo"?

Si me puedes ayudar te lo agradecería.

Muchas gracias.

En un formulario único sólo ves los campos de un solo registro, y para ver el siguiente tienes que desplazarte.

Esto es un formulario continuo

En este caso, en el evento Al hacer clic de un botón, podría decir lo de

docmd.openreport"clientes",acpreview,,"nombrecompañia='" & me.nombrecompañia & "'"

Es decir, una instrucción que identifique un registro en particular, lo mismo que en el informe.

En tu caso sería

docmd.openreport"nombre del informe tuyo",acpreview,,"[codigo del cliente]='" & me.[control del formulario donde este el código del cliente] & "'"

Lo demás de la instrucción que te puede es igual

Respuesta
1

Daniel: Un proceso completo, de lo que pretendes hacer, está explicado en el enlace de éste ejemplo que tengo en Mediafire>>

http://www.mediafire.com/file/ccja396gccjzwfu/EMailConOutLook.rar 

Si quieres contemplar otras alternativas, mira en la Web de Neckkito >>

En la ección de Código encontrarás >> Y una de Mail... Y tres de Mail. Un saludo >> Jacinto

Respuesta

Pienso que primero hay que poner en orden las cosas: Yo haría lo siguiente:

Tendría una tabla digamos tblclientes con los campos idcliente (Autonumerico clave principal), nombre, apellidos, email, imprime (campo tipo Si/No).. etc, y una tabla tblarticulos, con los campos idarticulo (Autonumerico clave principal, articulo. Otra tabla digamos tblpedidos con los campos idpedido (autonumerico), idcliente, idarticulo, fechapedido, idarticulo .. etc

Establecería una relación de uno a varios entre la tabla tblclientes y tblpedidos por medio del campo idcliente. Y una relación de uno a varios entre las tablas tblarticulo y tblpedidos relacionando el campo idarticulo de uno a varios.

Crearía el reporte con base en una consulta que incluye las tablas tblclientes, tblpedidos y tblarticulos al menos incluiría los siguientes campos:

Idcliente, nombre, apellidos, idpedido, fecha, articulo, cantidad, imprime... etc

En el reporte le digo a Access que agrupe por idcliente y que totalice por cada idcliente.

Ahora me faltaría un formulario para seleccionar los clientes a imprimir, es decir, aquellos que active la casilla "Imprimir". Este formulario tiene el origen de datos en la tabla tblclientes, campos:

Idcliente, nombre, apellidos, imprimir

Observe el campo imprimir que es de tipo Si/No para elegir los clientes a imprimir. Ahora si tengo muchos clientes crearía un botón para seleccionar todos, en este caso, lo haría con una clausula UPDATE y otro botón para deseleccionar también mediante UPDATE.

Ahora el botón de imprimir seria algo como:

SUB imprimir_click()

Dim rs AS Recordset

Set rs=Me.Recordset.Clone

DO UNTIL rs.EOF()

    DoCmd.openreport"clientes",acpreview,,,"imprime=TRUE"

DoCmd.SendObject acReport, "Cliente", "PDFFormat(*.pdf)", "" & me. Email & "", "", "", "Envio pedido", 

   rs.movenext

LOOP

Esto recorre el recordset clonando del formulario e imprime y envía el corro solo los clientes que estén marcados. Hay otra forma y es mediante un cuadro de lista en este caso no se requiere el campo "imprimir".

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas