Access - Ciclo For

 
Vista:
sin imagen de perfil
Val: 95
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ciclo For

Publicado por Antonio (81 intervenciones) el 18/08/2020 15:13:19
Estimados, estoy "estancado" con un problema. Estoy realizando un programa sencillo de etiquetado. El usuario digita el código y le da clic a la casilla "imp" en el form llamado "etiquetas", posteriormente va al botón imprimir he ingresa el número de copias que se almacena en variable llamada "aux", la variable I da el inicio al ciclo FOR en base a la variable "aux". Como puedo hacer que el for comience desde el último registro almacenado en la tabla "informe" señalada en la imagen. Las etiquetas se imprimen por fecha (fs en la tabla) y quiero comenzar a imprimir desde el el último registro ingresado por fecha.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
AUX = InputBox("Ingresar el número de copias") ' genera cuadro de ingreso de datos y almacena lo ingresado en la variable aux
If Val(Nz(AUX, 0)) > 0 Then
    DoCmd.OpenReport stDocName, acPreview 'que cosa hare esa cantidad de veces
    DoCmd.PrintOut acPrintAll, , , acNormal, AUX, False
Else
    MsgBox ("FALTA INGRESAR EL NUMERO DE COPIAS BUEN AMIGO"), vbCritical, "ERROR"
End If
 
On Error Resume Next
'DoCmd.RunSQL "DROP TABLE informe"
 
DoCmd.RunSQL "CREATE TABLE informe(id int, contenido text, codigo, fs, fp)"
On Error GoTo 0
 
DoCmd.SetWarnings False
For I = I To AUX Step 1
    DoCmd.RunSQL "INSERT INTO informe values(" & I & ",'" & AUX & "', '" & Me.Codi & "', #" & Nz(Me.fecha_fs, 0) & "#," & Nz(feca_fp, 0) & " )"
Next
DoCmd.SetWarnings True

Agradezco cualquier impulso o dato para llegar a obtener un resultado.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ciclo For

Publicado por Anonimo (3316 intervenciones) el 18/08/2020 19:53:29
El orden no me parece el mas adecuado.

Antes de abrir un informe, se han de crear los datos, un informe (a diferencia de un formulario) es un objeto estático, esto es:

Es el equivalente a una fotografía y solo funciona cuando 'lo que va a ser retratado' posa ante la cámara, no funciona lo de disparar la foto y después meterle a la gente (sin hacer diabluras digitales).

Si se va a utilizar con frecuencia la tabla, en lugar de destruirla y volverla a crear .... la vaciaría ( 'DoCmd.RunSQL "Delete * From informe" ) y la rellenaría con los nuevos datos (por lo menos se ahorra un paso y se ocupa menos memoria) y si molesta su contenido después de haber hecho su función, al cerrar el informe que también se vacíe la tabla (no pasa nada si 'se vacía estando vacía' ).

¿Te has planteado el utilizar un formulario para la toma de ese dato?.

El formulario solo necesitaría un cuadro de texto para la toma de ese dato y (por ser un formulario) admitiría programación para validar el dato, vaciar y llenar la tabla .... y con los deberes bien hechos abrir el informe (sea para visualizar o para imprimir).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 95
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ciclo For

Publicado por Antonio (81 intervenciones) el 19/08/2020 13:44:15
Estimado Anonimo, una vez más gracias por tus respuestas. En base a tus consejos no me queda otra cosa más que decir "que trasque", No he podido pasarle al informe un id único por cada impresión. Intentaré hacer lo que me comentas, crear un formulario para pasarle ese id único autoincrementable al informe desde el formulario. Saludos y se agradece la ayuda!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 95
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ciclo For

Publicado por Antonio (81 intervenciones) el 26/08/2020 19:46:38
Estimado Anonimo, espero y puedas ver este mensaje. He llegado hasta este código pero no me incrementa el valor de la variable "X" en el informe a imprimir, Textboxaux lo aloje en mi formulario, pero cunado lo llamo desde el informe no se incrementa en 1 al pasar por el bucle ¿o quizás estré tratando de hacer una diablura al querer colocar esa variable en el informe ? :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub Comando104_Click()
 
    Dim stDocName As String ' declarar una variable tipo texto para almacenar nombre del informe
    Dim  N As Integer '  variable n almacena nro. de copias
    Dim X As Integer ' nro. que cambia en cada etiqueta u informe
 
 
 
If QtyPrint <> "" Then 'valida que cantidad no sea 0
 
N = Str(QtyPrint) 'asigna el nro de copias a imprimir
 
'X = 0
 
Do While N <> 0 ' ciclo qe imprime n copias
 
X = X + 1 'aumenta en nro de copias en cuestión
 
Textboxaux = Str(X) 'asigna valor a un txtbox desde donde mandas a imprimir
 
 
stDocName = "E_80X80"
 DoCmd.OpenReport stDocName, acPreview 'que cosa hare esa cantidad de veces
DoCmd.PrintOut acPrintAll, , , acHigh, 1
 
N = N - 1
 
Loop
Else
 
MsgBox "cuantas copias necesitas ?", vbCritical, "Alert"
 
QtyPrint.SetFocus
 
End If
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ciclo For

Publicado por Anonimo (3316 intervenciones) el 30/08/2020 16:57:39
Desconociendo la aplicación, lo que puedo aportar es simple teoría que será mas o menos adecuada en funcion de que se cumplan unos mínimos.

Lo primero que se necesita conocer es que tipo de etiquetas se utilizan, pues no es lo mismo una por hoja que rellenar una hoja que pueda tener dos o mas, si solo tiene dos se pierde una pero si tiene una hoja con veinte y solo se utilizan cinco ¿qué se hace con las quince restantes?.

Recuerdo que (ya en A2.0) hubo quien resolvió el problema de aprovechar la etiquetas libres, solicitando cual era la primera disponible (en el caso de antes, la sexta) y a partir de ese punto ......

Vamos a teorizar un poco (después llegara l practica).

Lo primero es tener un conjunto de datos a imprimir
Lo segundo es conocer si se han de imprimir el mismo numero de etiquetas de cada elemento
lo tercero es si se han de imprimir en algún orden (consecutivas/grupales).

Lo usual es consecutivas y si es así.

..- Bucle que recorre el conjunto de datos
..-- Bucle que recorre el numero de etiquetas
----- acción de imprimir esa etiqueta -dependiendo de las etiquetas/hoja- guardar en un subconjunto la etiqueta
..-- siguiente etiqueta (del mismo ítem)
..- siguiente ítem del conjunto
--- acción de imprimir la hoja/hojas de etiquetas

Para la acción de imprimir, se ha de proporcionar la información para esa UNICA etiqueta y lo habitual es utilizar una tabla que se vacía al inicio, se llena con la iteración de los bucles y al finalizar ... se imprime el contenido de la tabla (lo que dará lugar a todo el conjunto de etiquetas).

Presumo que no es el caso pero desconociendo el entorno real es difícil continuar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 95
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Ciclo For

Publicado por Antonio (81 intervenciones) el 07/09/2020 15:08:58
Solo paso a dejarte las gracias Anonimo, he dado con la solución a mi problema gracias a tus consejos sos una máquina. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar