¿Cómo crear etiquetas según campo variedad y que te de numero de copias según campo n de cajas?

Poseo una base de datos donde genero las etiquetas según un informe y este me genera 1 etiqueta por cada variedad que tengo pero necesito que genere según la variedad el numero de etiquetas según el numero de cajas que sean de cada variedad.

2 respuestas

Respuesta
1

La idea es la misma que la de Icia pero sin necesidad de mover el formulario con lo que ganaremos en velocidad de proceso sobretodo en tablas con muchos registros.

Creamos la misma tabla AuxProductos y el boton en el formulario en cuestion. Cambiar el código del evento OnClick del botón por:

dim i as integer

ssql="delete * from AuxProductos"

set db=CurrentDb

db.Execute ssql

seleccion="select * from productos"

set tabla=currentdb.openrecordset(seleccion)

do until tabla.eof

   selec2="select * from AuxProductos"

   set tabla2=currentdb.openrecordset(selec2)

   for i=1 to tabla.ncajas

      tabla2.addnew

      tabla2.producto=tabla.producto

      tabla2.variedad=tabla.variedad

      tabla2.ncajas=tabla.ncajas

      tabla2.ncaja=i

      tabla2.update

   next i

   set tabla2=nothing

   tabla.movenext

loop

De esta manera la tabla AuxProductos la tienes siempre lista para poder imprimir las etiquetas cuantas veces quieras. Fíjate que hay que añadir a la tabla AuxProductos el campo ncaja (numérico - integer) porque en el vamos guardando el numero secuencial de la caja en cuestión y así podrás imprimir, si te interesa en algún momento, "Caja X de T"

Ademas tenemos la ventaja de que, al no tocar el formulario, el proceso siempre nos dejara en el registro que teníamos activo.

Si la tabla tiene muchos registros este método es mucho más rápido que el mover un formulario con las constantes actualizaciones de pantalla que te va a realizar el Access.

Respuesta

Una solución para salir del paso.

Supongamos que tienes una tabla Productos, con Producto, Variedad, Ncajas, etc., y supongamos que tienes un formulario(da igual formulario único o continuos), con esos cuadros de texto.

Crea una tabla igual que Productos(vacía) y llámala AuxProductos.

En el formulario crea un botón de comando y en sus Propiedades-eventos-Al hacer clic crea un procedimiento de evento y entre Privte Sub y End Sub escribe

Dim i As Integer
DoCmd.GoToRecord , , acFirst
For i = 1 To Form.Recordset.RecordCount
    Dim a As Integer
    For a = 0 To ([Ncajas] - 1)
    DoCmd.SetWarnings False
    DoCmd. RunSQL "insert into Auxproductos(producto, variedad, ncajas)values(forms!nombreformulario!producto, forms!nombreformulario!variedad, 1"

    Next a
DoCmd.GoToRecord , , acNext
Next i
DoCmd. GoToRecord,, acFirst

En esencia lo que hará es recorrer todos los registros del formulario, mirando cuantas cajas hay en cada registro e insertando un registro, en la tabla AuxProductos, por cada caja que aparezca en el registro.

Luego con esa tabla Aux, puedes hacer el informe de etiquetas.

Luego la borras y en paz.

Más adelante, cuando quieras hacer nuevas etiquetas, como se habrán actualizado el número de cajas, vuelves a pulsar el botón y colorin, colorao.

De todas formas, si no me he explicado bien, y quieres mándame un mensaje a [email protected] y te mando un ejemplo. Si lo haces, en el Asunto del mensaje pon tu alias Manuel David, que si no ni los abro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas