Actualizar e insertar registros

Tengo una formulario llamado facturas con un subformulario dentro llamado subform y dentro de este tengo registros de nombres y de cantidad y precio.
cree un botón con el siguiente código que actiliza la cantidad del nombre en otra tabla llamada tblproductos y también inserta nombre,cantiad y precio en otra tabla llamada
tblcompras
SQL = "UPDATE tblproductos SET tblproductos.existencia=tblproductos.existencia+" & Me.subform.form.cantidad.Value & " WHERE tblproductos.idproducto = " & Me.subform.Form.idproducto.Value & " "
DoCmd.RunSQL SQL, False
SQL1 = "INSERT INTO tblcompras(nombre,cantidad,precio) values (" & Me.subform.Form.idproducto.Value & "," & Me.subform.Form.cantidad.Value & "," & Me.subform.Form.precio.Value & ")"
DoCmd.RunSQL SQL1, False
End Sub
Mi problema es que solo el código funciona para un registro del formulario, para 2 o más ya no se como se hace.

1 respuesta

Respuesta
1
Imagino que cuando me dice que el problema es que el código solo funciona para un registro del formulario lo que quieres decir es que te funciona solo para un registro del subformulario, ya que las clausulas where de ambas consultas usan como parámetro u origen de datos al registro activo del subformulario.
Parto de esta premisa para responderte.
Cuando dices para 2 o más, tienes que decidir primero si lo quieres hacer con todos los registros del subformulario o solo con algunos que se lecciones. Lo más sencillo es hacerlo con todos, ya que hacerlo solo con algunos te obligaría a realizar bastantes cambios. Para hacerlo solo con algunos tendrías que añadir al menos un campo en el subformulario en el que marcases los que quieres usar para copiar o insertar, y deberías de dejar marcados de alguna manera los registros que ya han sido copiados o insertados.
Si lo quieres hacer con todos los registros del subformulario es más sencillo ya que no te obliga a cambios en tablas.
No se que tal te manejas con el código, por lo que te comento brevemente como hacerlo, y si necesitas más detalles házmelo saber y procuraré responderte más largamente.
En lugar de pasar el criterio del registro activo en el subformulario debes de crear un recordset con todos los registros del mismo. Para ello al hacer click sobre el botón lo primero que debes de hacer es crear un recordset que contenga todos los registros del subformulario activo. Para ello usa la propiedad RecordsetClone aplicada al origen de datos del subformulario. Una vez definido cargalo completamente yendo al último registro y luego volviendo al primero (MoveLast y MoveFirst). Haz un bucle que vaya recorriendo el recordset por los registros de uno en uno. En cada uno de ellos ejecuta la sql de UPDATE pero cambiando la clausula Where de modo que en lugar de usar "Me.subform.Form.idproducto.Value" como criterio use el valor del campo IdProducto activo en el recordset. Ejecuta también la otra consulta de INSERT pero usando como valores los del registro activo en tu recordset. Tras cada registro haz un MoveNext hasta que no queden más registros (EOF=True). En el fondo estás haciendo lo mismo que ahora, pero en lugar de hacerlo con el registro activo lo haces con todos los registros del subformulario recorriendo una copia del mismo de uno en uno.
Repito que si necesitas más detalles o ayuda con el código procuraré responderte.
Cordiales saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas