Para este caso no creo que se pueda clonar el formulario porque tiene un subformulario. Le cuento como lo hago:
Observe que tengo un botón "Postergar Factura" y otro "Continuar factura" (se puede hacer en uno solo cambiando el texto y color). Si hago clic en postergar factura obtengo el siguiente mensaje:
Hago clic en Si y obtengo:
Con esto queda listo el formulario para hacer otra venta, si inicio otra venta y no se ha completado y hago clic en "Continuar factura", obtengo el siguiente mensaje:
PASOS
Utilizo 3 tablas temporales, así :
1 para el detalle de la factura
1 para guardar temporalmente el encabezado
1 para guardar temporalmente los artículos del detalle.
PROCESO
Para guardar la factura temporalmente hago:
- Copio la información del encabezado en la tabla temporal encabezado, lo hago con INSERT INTO..
- Copio todos los registros de la tabla detalle a la tabla temporal detalle, igualmente con INSERT INTO...
- Retiro los datos de las tablas encabezado y detalle, hago un requey
- Para continuar con la factura tomo el contenido de los campos de la tabla temporal encabezado y lleno el encabezado. Lo hago con DAO, por ejemplo:
Set rs = db.OpenRecordset("tblTemCabeceraFactura")
Me.opcTipo = rs!mopctipo
Me.FechaEntrega = rs!mfechaentrega
Me.cboVenta = rs!mcboventa
Me.cboFormaPago = rs!mcboformapago
Me.cboEmpleado = rs!mcboempleado
Después hago un INSERT INTO ... a la tabla inicial de la factura desde la tabla temporal del detalle de la factura. Algo como:
DoCmd.RunSQL "DELETE FROM tblTemArticulosFactura"
DoCmd.RunSQL "INSERT INTO tblTemArticulosFactura SELECT tblPosrtergaArticulosFactura.* FROM tblPosrtergaArticulosFactura;"
DoCmd. RunSQL "DELETE FROM tblPosrtergaArticulosFactura"
DoCmd. RunSQL "DELETE FROM tblTemCabeceraFactura"
Esto permite trabajar sin problemas en un entorno multiusuario (lo hago con PostgreSQL), pero todo lo manejo desde Access.
Bueno puede que existan más opciones, serán bien recibidas.