Tengo un base de datos en Access 2007, y una tabla Bajas Medicas y tengo creado 3 campos, Fecha inicial, Fecha Seg y Fecha final y otro campo si/no llamado no presente, lo que quería es que automáticamente el campo si/no se activara o no dependiendo de la fecha actual, por ejemplo si alguien esta de baja del 20/1/2011 y Fecha final es 29 y hoy es 26 que estuviera el campo no presente como si. Gracias
1 Respuesta
Respuesta de xavi -ae soft-
1
1
xavi -ae soft-, 20años de experiencia en programacion Access a razon de 10 horas...
En el evento Current del formulario debes evaluar las condiciones que indicas y activar/desactivar la casilla de verificación. If Not IsDate(Me!FechaFinal) Then Me!NoPresente = False Else If Me!FechaFinal > Date Then Me!NoPresente = True Else Me!NoPresente = False End If End If Escrito del tirón... PD: esto no funciona en un formulario continuo. De hecho, en un formulario continuo no veo forma de hacerlo.
Hola, se me olvido 2 cosillas, 1- Ando un poco verde en access y no se donde encontrar el evento Current y 2º comentarte que estos campos están metidos dentro de un subformulario Bajas medicas que a la vez esta metido en un formulario, supongo que no cambiara nada . De todas formas me da la impresión que access para ciertas cosas esta limitado o son muy complicadas de crear, saludos, por cierto leí tu página web y me llamo la atención tus inicios con el Commodore y el Amstrad, yo en cambio empecé un poco programación con el Spectrum 48k y la revista microhobby que venia con programillas para copiar, un saludo
1. Todos hemos estado en algún momento un poco verdes... al final acabamos madurando. El evento Current es el evento Al activar registro 2. El hecho de situarlo en un subformulario implica (habitualmente) que se muestra en forma "Formularios continuos" o sea, en modo Lista. Tal como decía antes, em principio no puedes hacerlo en un formulario continuo tal como lo he dicho antes. 3. No comparto la opinión de Access es limitado. Lo que ocurre es que, a veces, hay que echarle algo de ingenio para conseguir lo que se desea. La gbran ventaja de Access es que, para cosas más o menos sencillas, se hacen con 2 clicks. Las cosas un poco más complicadas requieren un pelín más de trabajo. Pero ese trabajo no es nada comparado con el trabajo que cuesta hacer un formulario en VB.NET (por ejemplo) dónde debes hacerlo absolutamente todo. 4. Si empezaste con un Spectrum48... es que empezamos casi al mismo tiempo ;-P Solución (que nadie dice que sea sencilla) En lugar de utilizar una tabla como origen del registro del subformulario, utilizar una consulta dónde ya hagas la evaluación y, en función del resultado, devolver un True/False. Para ello abres una consulta en vista diseño basada en la tabla, añades todos los campos que quieres mostrar y, al final, añades una expresión para generar el valor que tomará el checkbox NoPresente. Para generar la expresión utilizaría una función SiInm dónde compararía la fechafinal con la fecha actual y devolvería un boolean: NoPresente: SiInm(Nz([Tabla].[FechaFinal];0)>Fecha(); True; False) Prueba la SQL hasta que te devuelva los valores que deseas. Una vez conseguido, esa SQL debe ser el origen del registro del formulario y, el CheckBox NoPresente debe apuntar, en la propiedad Origen del control, al campo NoPresente de la SQL (Que hemos creado con esa expresión)