Activar Chexboxs según valore de una tabla

Hola fiera.
Estoy intentando hacer una aplicación en Access y tengo varias dudas.
Tengo una tabla llamada Trabajadores que tiene varios campos uno de ellos se llama Imprimir y es de tipo SI/NO. Esta tabla tiene 16 registros. También tengo un formulario en el que, entre otras cosas tengo 16 Casillas de Verificación. Lo que quiero hacer es que cuando se abra el formulario me lea el valor de los 16 registros del campo Imprimir de la tabla Trabajadores y ponga el valor de la Casilla de Verificación en función del valor leído.
Por otra parte también quiero que si cambio el valor de la Casilla de Verificación en el formulario, también se modifique el valor del campo Imprimir de la tabla Trabajadores.
Muchas gracias por adelantado.

1 Respuesta

Respuesta
1
Vamos pasito a pasito...
Lo que haría yo... (que no es de necesaria cumplimentación)..
Nombraría las casillas de verificación con el nombre.. verTrabajador1 hasta verTrabajador16...
Al abrir el formulario indicaría el siguiente código...
Dim dbs as database
dim rst as recordset
set dbs=currentdb
set rst=dbs.openrecordset("Trabajadores")
Do until rst.Eof
me("verTrabajador" & rst!CodigoTrabajador)=rst!Imprimir
rst.movenext
loop
Considerando que el campo CodigoTrabajador es el que indica si es el 1 ó el 5 ó cualquier otro...
En el evento después de actualizar de cada casilla de verificación escribiría el siguiente código...
If msgbox("¿Está seguro de modificar el valor del campo Imprimir en el trabajador seleccionado?",vbquestion+vbyesno,"Cambiar Estado")=vbyes then
strSql="UPDATE Trabajadores Set Imprimir=" & verTrabajador1 & " WHERE CodigoTrabajador = 1"
currentdb.execute, strsql, dbFailOnError
end if
Evidentemente este código es únicamente válido para la casilla de verificación número 1...
Tambien podrías utilizar la siguiente función:
Function ActualizarTrabajador
dim x as byte
On error goto Failure
x=right(activecontrol.name,1)
If msgbox("¿Está seguro de modificar el valor del campo Imprimir en el trabajador seleccionado?",vbquestion+vbyesno,"Cambiar Estado")=vbyes then
strSql="UPDATE Trabajadores Set Imprimir=" & activecontrol & " WHERE CodigoTrabajador = " & x
currentdb.execute, strsql, dbFailOnError
Salida:
Exit function
Failure:
msgbox err.number & vbcrlf & err.description,vbcritical
resume salida
End Function
Esta función seria válida si en las propiedades de TODAS las casillas de verificación, en el evento después de actualizar escribes textualmente "=ActualizarTrabajador()" sin las comillas..
Espero que te sirva..
Saludos.
Jordi Pérez i Madern
Mataró (Barcelona)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas