Subformularios

Necesito por favor ayuda, no he podido solucionar este problema
tengo un formulario llamado movicon y dentro de el un subform llamado detmovicon(viene a ser el detalle), este subform lo manejo con los campos Codcomp, dcto, codcta, nit, dctoref, db, cr y sld, cuando ya el movimiento esta listo activo el botón de comando guardar movimiento donde se ejecuntan una serie de funciones que me deben permitir actualizar los saldos de las cuentas en diferentes tablas y otros datos como tipos de movimiento en otra tabla, esto lo tenia en el último campo de la grid del subform, lo que indica que actualizaba por registro en todas las tablas, pero me dí cuenta que al querer corregir o borrar tenía que dar mucha vuelta para realizar las correcciones de las demás tablas implicadas, entonces al hacerlo desde el botón de comando se hace más corto el recorrido puesto que se pueden hacer correcciones al movimiento antes de actualizar todas las tablas implicadas, pero cómo ya comenté, me surge este problema, puesto que no se como hacer para ubicar el puntero en el primer registro del subform(puesto que este pierde el enfoque y lo toma el form movicon), para que valla pasando registro por registro y lo compare uno a uno con la tabla de detmovcon y las demás, hasta que encuentre el registro igual y me permita hacer las actualizaciones correspondientes.
Por favor que alguien me ayude a solucionar el problema, a mi me gusta trabajar con funciones por aquello de la corrección del código al ejecutar la aplicación y además que se está más cerca de la programación de VBA.
Gracias de antemano.
Janiso

1 respuesta

Respuesta
1
Si entiendo bien el problema, podrías usar un registro auxiliar para barrer el sub formulario, de la siguiente manera
Dim Rst as Recordset
set Rst= detmovicon.form.RecordsetClone
Luego vas realizando la comparancion con el registro principal o puedes posicionarte en el registro del subformulario luego de encontrar algun criterio en el registro auxiliar con la siguiente clausula
detmovicon.form.Recordset.Bookmark= Rst.Bookmark
Jeddy, agradezco tu respuesta, me funcionó tu aclaración, solo que al continuar con la programación se me presentó lo siguiente, me colaboras por favor:
Adicioné un do while para poder recorrer registro a registro en el subform pero cuando llego al último registro me pasa dos veces por este y al llegar a la linea del f.Form.Recordset.MoveNext, me saca el mensaje de que no hay ningún registro activo, es decir si el subform tiene 4 registros el cuarto lo repite dos veces, te coloco el script
Dim f As SubForm
Dim Rst As Recordset 'registro auxiliar
Forms![movcon]![detmovcon].Enabled = True ' activo el subform
Forms![movcon]![detmovcon].Form![codcta].SetFocus ' coloco el enfoque en el subform
If Forms![movcon]![detmovcon].Enabled = True Then 'verifico que esté activo
Set f = Forms![movcon]![detmovcon] 'asigno el objeto a la variable
Set Rst = f.Form.RecordsetClone 'asignacion al registro auxiliar
f.Form.Recordset.Bookmark = Rst.Bookmark
If f.Form.CurrentRecord <> 1 Then ' para mirar que el puntero va pasando al siguiente registro
End If
Do While Not f.Form.RecordsetClone.EOF ' ciclo repetitivo según la cantidad de registros del subform
If f.Form.RecordsetClone.EOF <> True Then ' verifico que no sea el final del ciclo nuevamente, pues...cuando llego al último registro lo pasa dos veces
MsgBox "hola" ' representa las acciones de las demas funciones
f.Form.Recordset.MoveNext 'lo pasa al siguiente registro en el subform
Else
Exit Function
End If
Loop
End If
Realmente agradezco tu ayuda, gracias.
(xxxxxx)
Jeddy, agradezco tu respuesta, me funcionó tu aclaración, solo que al continuar con la programación se me presentó otra cosa al realizar varias pruebas, me colaboras por favor:
Adicioné un do while para poder recorrer registro a registro en el subform pero cuando llego al último registro me pasa dos veces por este y al llegar a la linea del f.Form.Recordset.MoveNext, me saca el mensaje de que no hay ningún registro activo, es decir si el subform tiene 4 registros el cuarto lo repite dos veces, te coloco el script
Dim f As SubForm
Dim Rst As Recordset 'registro auxiliar
Forms![movcon]![detmovcon].Enabled = True ' activo el subform
Forms![movcon]![detmovcon].Form![codcta].SetFocus ' coloco el enfoque en el subform
If Forms![movcon]![detmovcon].Enabled = True Then 'verifico que esté activo
Set f = Forms![movcon]![detmovcon] 'asigno el objeto a la variable
Set Rst = f.Form.RecordsetClone 'asignacion al registro auxiliar
f.Form.Recordset.Bookmark = Rst.Bookmark
If f.Form.CurrentRecord <> 1 Then ' para mirar que el puntero va pasando al siguiente registro
End If
Do While Not f.Form.RecordsetClone.EOF ' ciclo repetitivo según la cantidad de registros del subform
If f.Form.RecordsetClone.EOF <> True Then ' verifico que no sea el final del ciclo nuevamente, pues...cuando llego al último registro lo pasa dos veces
MsgBox "esto es una prueba" ' representa las acciones de las demas funciones
f.Form.Recordset.MoveNext 'lo pasa al siguiente registro en el subform
Else
Exit Function
End If
Loop
End If
Realmente agradezco tu ayuda, gracias.
(xxxxxx)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas