Consulta que repita un campo n veces

Tengo una tabla con los sig campos
Clave, descripción, cantidad.
Lo que quiero hacer es que a la hora de mandar los datos a un informe me los mande n veces según sea el contenido dl campo "cantidad". Ej, si clave=5454, descripcion= mochilas, cantidad=5; entonces en el informe deve aparecer impresa 5 veces.

1 respuesta

Respuesta
1
No creo que se pueda resolver sin escribir un poco de código.
Yo lo resolvería así:
1)Crearía una tabla auxiliar con los mismos campos.
2)Escribiría una rutina que lea la tabla original y por cada registro que lee grabe todos los registros en la tabla auxiliar, para hacerlo
For i=1 to cantidad
graba un registro en auxiliar
next
3) Crear el informe con la tabla auxiliar
4) El botón que manda imprimir debe tener algo que borre todos los registros de la tabla auxiliar (que han quedado de una ejecución anterior) y luego llame la rutina escrita como se explica en 2
Y listo, decinos si necesitás ayuda para escribir toda la rutina, en tal caso informá bien el nombre de la tabla y de los campos.
Suerte, Marciana
La tabla se llama compra, los campos son:
foli, fecha, prov, cve, nomart, cant y costo. Gracias por ayudarme, esq soy nuevo en esto.
No me olvidé, pero tengo que juntar un rato para escribir el código y probarlo. Pero te aviso que lo tengo presente.
Te agradezco tu ayuda, espero resp.
Creá una tabla Auxiliar igual a Compra pero sin datos.
Agregá este código en un módulo, luego con el cursor dentro del módulo ejecutalo tocando F5.
Comprobá que la tabla Auxiliar tiene la cantidad de registros que corresponde.
Armá la impresión a partir de la tabla Auxiliar.
El código está probado
Public Sub GeneraREgistros()
Dim rsIn As New ADODB.Recordset
Dim rsOut As New ADODB.Recordset
Dim i As Integer
RsIn. Open "Compra", CurrentProject. Connection, adOpenForwardOnly, adLockReadOnly
rsOut. Open "Auxiliar", CurrentProject. Connection, adOpenDynamic, adLockPessimistic
'Primero vacía la tabla Auxiliar
rsOut.MoveFirst
Do While Not rsOut.EOF
rsOut.Delete
rsOut.MoveFirst
Loop
rsIn.MoveFirst
Do While Not rsIn.EOF
For i = 1 To rsIn!cant
rsOut.AddNew
rsOut!foli = rsIn!foli
rsOut!fecha = rsIn!fecha
rsOut!prov = rsIn!prov
rsOut!cve = rsIn!cve
rsOut!nomart = rsIn!nomart
rsOut!cant = rsIn!cant
rsOut!costo = rsIn!costo
rsOut.Update
Next
rsIn.MoveNext
Loop
End Sub
Contame cómo te fue.
Marciana

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas