Acceder a otro Formulario por cada una de las líneas en un Form continuo

Tengo un Formulario continuo, que a través de un botón, cuando pulso este, accedo a otro Formulario que trabaja en forma transparente donde son realizados diferentes cálculos y después retorna al Form principal el resultado de los cálculos realizados.

Intento evitar que tener que pulsar por una de las líneas el botón de acceso para realizar los cálculos ya que son muchísimas las líneas.

He colocado el acceso al mismo en el evento: "Después de Actualizar" pero no consigo que realice el acceso.

Respuesta
3

La verdad, no he entendido la pregunta. ¿Hay un botón en el encabezado del formulario o es uno por registro? ¿Es necesario que se abra un formulario para hacer cálculos? Te lo digo porque si de "recorrer" registros se trata, lo que haría sería poner un botón en el encabezado del formulario y poner, más o menos

Docmd.setwarnings false

dim i as integer

docmd.gotorecord,,acfirst

for i=1 to me.recordset.recordcount

textoA = dsum(....)*loquesea/esto y aquello

textoB=dlookup("precio".......)*Cantidad+ aaa.....

docmd.gotorecord,,acnext

next

Me explico, al pulsar el botón(que no sería necesario, pero es didáctico), se va al primer registro, hace los cálculos que tenga que hacer y los pone en el control A y ControlB, y se va al segundo, lo mismo, y así hasta el final.

El boton esta en cada uno de los registros.

Al llamar al segundo formulario por medio de un boton  este esta compuesto por varios subformularios y extrayendo los datos de todos ellos es cuando calcula el resultado por cada una de las lineas del formulario principal y traspasa el resultado al form desde donde hago la llamada.

¿Seria posible que me mandaras la(s) tabla(s) en cuestión con dos o tres registros inventados y los formularios implicados a [email protected] y las miro. Es que no me hago la idea de como lo tienes.

Si lo haces, en el asunto del mensaje pon tu alias Jobe Orba, ya que si no sé quien me escribe no los abro.

He adaptado tus instrucciones colocando un botón de acción a mi proceso de esta forma:..

Private Sub Comando27_Click()
DoCmd.SetWarnings False
DoCmd.OpenQuery "borratarifas"
Dim Nombre1 As String
Dim i As Integer
DoCmd.GoToRecord , , acFirst
For i = 1 To Me.Recordset.RecordCount
If Me.Nombre = "VARIOS" Then
GoTo Salto
Else
DoCmd.OpenForm "articulospresupuestosunidades"
Forms!articulospresupuestosunidades!Nombre = Me.Nombre
Nombre1 = Me.Nombre
Forms!articulospresupuestosunidades!iProducto = Me.IdProducto
Forms!articulospresupuestosunidades!IdFamilia = Me.IdFamilia
Forms!articulospresupuestosunidades!UNIDADES = 1
DoCmd.OpenQuery "VENTASPRODUCTOSBORRADO"
DoCmd.OpenQuery "VENTASPRODUCTOSBORRADODISEÑO"
DoCmd.OpenQuery "VENTACALCULOMATERIALES"
DoCmd.OpenQuery "VENTACALCULODISEÑOBLOQUE"
DoCmd.OpenQuery "VENTACALCULODISEÑOPRODUCTO"
DoCmd.OpenQuery "VENTACALCULOMANIPULADOBLOQUE"
DoCmd.OpenQuery "VENTACALCULOMANIPULADOPRODUCTO"
DoCmd.OpenQuery "VENTACALCULOEXTRASBLOQUE"
DoCmd.OpenQuery "VENTACALCULOEXTRASPRODUCTO"
DoCmd.OpenQuery "VENTACALCULOCOSTESIMPRESION"
Forms!ARTICULOSPRESUPUESTOSUNIDADES.Recalc
Me.PVP = Forms!ARTICULOSPRESUPUESTOSUNIDADES!PVP
strPVP = Replace(PVP, ",", ".")
CurrentDb.Execute "INSERT INTO [TARIFASPRECIOS](Nombre,PVP,IdFamilia) VALUES ('" & Nombre1 & "'," & strPVP & "," & IdFamilia & ")"
End If
Salto:
DoCmd.GoToRecord , , acNext
Next
DoCmd.SetWarnings True
End Sub

El problema que tengo es que recorre toda la tabla pero solo coge los valores del primer registro insertando siempre con el mismo valor por cada uno de los elementos del form.

Chico lo siento, cuando he visto lo de

Docmd. goto salto ya me he perdido, no sé para que sirve. Y como te decía, no entiendo que haya que abrir( aunque sean de actualización) consultas. Normalmente los cálculos se hacen en código. Por ejemplo tengo la tabla Clientes con un campo Yoquese, que voy a rellenar en función de algunos países

En el formulario le pongo un botón

Cuando lo pulso me va recorriendo registros y el resultado

El código del botón, que lo he puesto al tuntun

Si necesito buscar algún valor en otro sitio, como es en este caso la tabla Productos que no tiene nada que ver con Clientes uso Dlookup, pero podría usar Dcount, etc. Lo mismo que en Francia uso la función Dmax.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas