Crear e Imprimir Etiquetas (Report) Masivas en Access

Realice esta pequeño Access con una base (Etiquetas) la cual me registra un auto numérico, fecha (ingresada a mano en un form) y un número de control (también ingresado a mano).

El cual en el Form al finalizar le pongo el botón imprimir y me genera una etiqueta (diseñada en Report) con los datos y a cual se imprime.

Hasta aquí todo perfecto, pero ahora tengo el dilema de que quiero imprimir de forma masivo.

Por ejemplo, al abrir el form parto del folio (Auto numérico) No. 31, y quiero que me imprima de golpe 40 etiquetas, ósea en alguna parte indicar que guarde 40 registros y los imprima, respetando la misma fecha ingresada y control.

Ósea al apretar el botón mi imprima desde la 31 a la 71 masivamente, y no tener que ir 1 a 1 imprimiendo.

En esto último es donde necesito su valiosa ayuda de Expertos.

Adjunto imágen para que se entienda aún más, de la base, del Form y la Etiqueta (report).

2 Respuestas

Respuesta
2

Puedes hacerlo de muchas, muchas formas. Por ejemplo, en el formulario puedes

1º Poner un cuadro de texto al que, para el ejemplo, llamaremos Contador, donde escribirás el número de folio que quieras como límite.

En sus propiedades-eventos-después de actualizar crear un procedimiento de evento y poner

docmd.openreport"nombreinformeetiquetas",,,"folio between " & me.folio & " and " & me.contador & ""

Así, cuando en el cuadro de texto Contador pongas el último numero de folio que quieras y pulses Enter, te imprimirá las etiquetas comprendidas entre el folio que en ese momento aparece en el control Folio y la que aparece en el control Contador

2º Poner un botón y en sus propiedades-eventos-al hacer clic

docmd.openreport"nombreinformeeqtiquetas",,,"folio between [Escriba un número de folio inicial] and [Escriba un número de folio final]"

En este caso te pedirá que escribas un número inicial. Lo escribes, aceptas. Te pedirá que escribas uno final. Lo escribes, aceptas y chim pum.

Hay más, por ejemplo, que se abra un inputbox, etc

¡Gracias! Muchachos, probe las respuestas e información que me han otorgado, genere el boton donde me solicita desde que folio a cual quiero imprimir, y funciona perfecto.

El problema que tengo es que solo imprime si los folios fueron creados en la base, por ejemplo si imprimo del 1 al 10, y en la base solo esta creado hasta el 7, imprime del 1 al 7. faltando el 8,9 y 10.

Entonces lo que me esta faltando es: como agregar los registros masivos a la tabla para poder imprimir masivo?

por ejemplo en la tabla  el ultimo folio es el 10, yo quiero generar 20 registros enseguida usando los mismos datos de fecha y control que estan en el textbox. y asi luego podria imprimir masivo desde el 11 hasta 30.

Se entiende? desde ya agradezco enormemente su ayuda.

Lo puedes hacer de muchas formas. Vamos a ver si lo he entendido. Todo depende de como "trabajes". Por ejemplo, vamos a suponer que tienes una tabla Etiquetas donde guardas los datos que quieres que te aparezcan en ellas. Y vamos a suponer que en ese momento el último registro tiene un IdCliente( o lo que sea) con un valor de 7.

Vamos a suponer que en el formulario tienes los controles NombreCliente, Dirección, País y quieres que te inserte esos valores en la tabla Etiquetas hasta que haya un Idcliente con un valor que tu decidas,

En ese cuadro Contador pones el número que desees y en el evento Después de actualizar o en otro evento puedes poner

Dim i as byte

for i=idcliente to Contador

Docmd. Runsql"insert into etiquetas(nombrecliente, direccion, pais) values(nombrecliente, direccion, pais)"

next

docmd.openreport"Etiquetas",,,"idcliente between " & me.idcliente & " and " & me.contador & ""

Me explico. Imagina que en ese momento, en el registro que estás del formulario tiene un Idcliente 7, en los cuadros de texto te aparecen Pepe López, Calle Mayor 5 y España. En el cuadro de texto Contador pones 25 y pulsas Enter

Primero te insertará en la tabla Etiquetas 18 registros con Pepe Lopez, Calle Mayor 5 y España y luego te imprimirá el informe Etiquetas comenzando en el idcliente=7 y terminando en el Idcliente=25

No sé si era eso a lo que te referías. Si no fuera, dímelo

¡Gracias! Muchas Gracias!, me funciono perfecto, además que quite los mensajes de Alerta por usar runsql. Quedo Perfecto, te lo agradezco.

Solo me queda corregir un detalle que es hacer que la Fecha se imprima en Long Date 00/MES/0000 y no 00/00/00, aunque en la base esta configurado como Long date, de igual forma en el Report lo muestra en Short Date.

Si tiene algún dato para esto seria espectacular, por otra parte vuelvo agradecer por el código del FOR, ya que estaba probando con un Do While, pero me creaba un registro adicional y perdía siempre un Folio en cada creación.

Saludos! Y que tengas un excelente semana.

¡Gracias! 

Como te decía, lo puedes hacer de muchas formas, pero si no quieres calentarte la cabeza, en el informe etiquetas pon el control Fecha como visible=no y reduce su tamaño lo que quieras. Luego le añades un cuadro de texto, al que para el ejemplo llamaremos FechaL. En la sección Detalle del informe(ya que supongo que los cuadros de texto están ahí), en su propiedades-Eventos-Al dar formato, crea un procedimiento de evento y pon

FechaL=format([fecha],"dd/mmmm/yyyy")

O el formato de fecha que quieras

Por ejemplo

No hagas caso del formulario. Cuando pulso el botón

Respuesta
2

Se trata simplemente de crear una consulta que seleccione todos los registros de los que quieres imprimir etiquetas, y usarla como origen de los datos de reporte de la etiqueta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas