Evento para asignar valor a casilla de verificación

Antes que nada, agradeceros como siempre la ayuda.

Tengo un formulario donde introduzco una serie de datos para elaborar una factura. Actualmente esta casilla de verificación la pincho manualmente para quede marcada como "facturado".

Habría algún procedimiento vba para que pusiera el foco el la casilla [facturado], la activara y por último pusiera el foco en otro campo [fecha], por ejemplo?

2 Respuestas

Respuesta
1

Si la casilla es el último campo del registro pruebe programando el evento Después de actualizar, algo como

Sendkeys "{Enter}"

Si muestra la estructura de la tabla le puedo complementar la pregunta, toda vez, que mientras no se cumplan las condiciones del registro no puede desplazarse a uno nuevo etc

El caso es que la idea es que la casilla se active en un evento al hacer click sobre un botón, de manera que ejecuta una serie de instrucciones y entre ella, que se marque la casilla, cómo podría hacerlo?

Gracias!

Vamos a ver si entiendo su pregunta.

Tengo este formulario

Hago clic en el botón Procesar y obtengo:

Envía el foco a la casilla de verificación si está desactivada, ésta al recibir el foco abre el subformulario (puede incluir el código que necesite y sea válido)

CÓDIGO DEL BOTON PROCESAR

Private Sub btnProcesar_Click()
 If Me.validado = False Then
   Me.validado = True
   Me.validado.SetFocus
 End If
End Sub

CÓDIGO DEL EVENTO AL RECIBIR EL ENFOQUE DE LA CASILLA

Private Sub validado_GotFocus()
  'Aquí puede ir el código a ejecutar, siempre y cuando no tenga errores
  DoCmd.OpenForm "frm_exportar_consulta",,,,, acDialog
 'Aquí puede ir el código a ejecutar, siempre y cuando no tenga errores
End Sub

Muchas gracias Eduardo. El formulario es el siguiente:

En la parte de arriba, el formulario principal ([NuevaFacturaAdministracion]) están los datos del cliente. En la parte de abajo, el subformulario (NuevaFacturaAdministracionSubf]) están los datos de la factura.

Cuando la casilla PagoI y la casilla Pago a propietario están activadas, el registro aparece en el subformulario.

Mi idea es que al pulsar el botón "Grabar" que está en el formulario guarde los datos de la factura (función que ya está programada y funciona correctamente) y al mismo tiempo active la casilla [Alquiler.Factura], de manera que se completa el proceso: el inquilino ha pagado la renta, el propietario ha recibido su mensualidad y la factura ha sido emitida. El procedimiento de envío por e-mail al propietario lo tengo en otro formulario y fusionar ambos formularios se me antoja ya para nota de máster...

Gracias de nuevo.

Como entiendo debe hacer un UPDATE desde el botón Grabar, algo como:

CurrentDB.Execute "UPDATE facturas SET AlquilerFactura=-1 WHERE factura='" & Me.NroFactura & " AND Pagol1=-1 AND [Pagado a propietario]=-1"

Me.NuevaFacturaAdministracionSubf.Form.Requery

Es una idea

El código del botón es el siguiente:

Forms!FacturaAdministracionNuevo!BaseImponible.Value = Forms!FacturaAdministracionNuevo!PresupuestoDetalle!SumaBaseImponibleDetalle.Value
Forms!FacturaAdministracionNuevo!ImporteIVA.Value = Forms!FacturaAdministracionNuevo!PresupuestoDetalle!SumaImporteIVADetalle.Value
Forms!FacturaAdministracionNuevo!TotalFactura.Value = Forms!FacturaAdministracionNuevo!PresupuestoDetalle!SumaSubtotalDetalle.Value
Forms!FacturaAdministracionNuevo!Beneficio.Value = Forms!FacturaAdministracionNuevo!PresupuestoDetalle!SumaBeneficioDetalle.Value
If Me.PrecioUnidad Then Forms!FacturaAdministracionNuevo!FacturaAdministracionControlRentasSubf!Grabarfacturaemitida.Click
DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunCommand acCmdRefresh
Honorarios.SetFocus
Forms!FacturaAdministracionNuevo!Fecha.SetFocus
DoCmd.GoToRecord , , acNewRec

La línea "If Me.PrecioUnidad..." es la que debería hacer que una vez que se ejecuten las instrucciones anteriores, la casilla de verificación quedara marcada.

Pero decía que se ejecutara un código al hacer clic. Si para activarla basta con

If Me.PrecioUnidad Then Forms!FacturaAdministracionNuevo!FacturaAdministracionControlRentasSubf!Grabarfacturaemitida=-1
Respuesta

Los eventos se producen por interacciones del usuario, el más adecuado será aquel que el que está programando considere idóneo (es el usuario quien ha de interactuar).

No hace falta desplazar el foco a un objeto para asignarle un valor, se puede hacer incluso tras añadir la fecha en el campo al que se desea ir después (tras añadir la fecha sería una opción válida)

Se evaluaría que la fecha es correcta y de serlo simplemente se le asigna valor a la casilla un (0) para desmarcar y el clásico (-1) para marcarla:

IF IsDate(Me.[campo de fecha]) Then Me.[casilla de verificación] = -1

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas