Hola Claudio
Creo que no me explique bien con el campo calculado.
Si estas en MSSQL server podes hacer cosas como lo siguiente:
CREATE TABLE [dbo].[MiTabla](
[CUIT] [char](11) ,
[RazonSocial] [varchar](255) AS NULL,
[Alta] [datetime] NOT NULL,
[isapproved] AS (miFuncionDeDeterminacionisapproved()),
[Hoy] as GatDate()
Luego debes escribir la función:
miFuncionDeDeterminacionisapproved()
Tendria dentro al asi como:
IF( [tal fecha] > [que tal otra] AND [lo que sea] = [no se
que] )
BEGIN
RETURN 1
END
ELSE
BEGIN
RETURN 0
END
Entonces nadie debe calcular nada, el campo es de solo lectura.
Todos los que accedan tendrán el valor esperado sin que nadie actualice
nada.
Ninguna aplicación debería necesitar escribir el valor del campo.
Si necesitas de todas formas un campo que fuerce el estado si o si agrega
otro campo bit y que su valor intervenga en la funcion.
Saludos
Daniel Calvin
El día 18/07/07, Claudio M. E. Bastos Iorio <[EMAIL PROTECTED]> escribió:
Gracias Daniel por la respuesta.
El campo es por un lado calculado y deberia poder ser también actualizable
manualmente.
Tu opción B es buena. Pero a lo que no lo encuentro la vuelta es como
"disparar" ese calculo por ejemplo. Suponiendo que hoy 18/07/2007 usuario
JUAN debería estar desactivado, no quisiera tener que esperar al momento que
JUAN intenta loguearse para comprobar la fecha y establecer que la condición
[isapproved] debería ser 0, o cuando alguien se loguea en el CMS el calculo
se dispare y se actualice la condición de todos los usuarios aprobados o no,
se entiende?
Estoy estudiando esta opción: Combine Web and Windows Services to Run Your
ASP.NET Code at Scheduled Intervals
http://msdn.microsoft.com/msdnmag/issues/05/03/SchedulingASPNETCode/
Pero antes de eso queria saber si pudiera haber alguna otra opción. Desde
ya muchas gracias.
________________________________________________________
Claudio M. E. Bastos Iorio
http://www.blumer.com.ar
*From:* [email protected] [mailto:[EMAIL PROTECTED] *On Behalf Of *Daniel
Calvin
*Sent:* Wednesday, July 18, 2007 1:31 PM
*To:* [email protected]
*Subject:* [puntonet] mejor forma para hacer esto?
Hola Claudio
Opción A
Una forma, no es la que más me gusta, que se adapta a tu esquema que por
lo que parece esta centrado en datos es que [isapproved] sea un campo
calculado y no un campo actualizable. ( todo dentro del motor de base de
datos mediante alguna funcion o un subquery )
Opción B
Si por otra parte estas haciendo una aplicación mas OOP podrías tomar otro
enfoque, tener algún artefacto (clase) experto en las cuestiones relativas
a los usuarios o usuario.
Esa clase debería ser la responsable en base al x tiempo y el resto de las
"variables" intervinientes en la determinacion de [ isapproved]= true //
false.
1 - Ese enfoque te daría mayor flexibilidad ante el cambio.
2 - No dependerías de un estado persistido en tablas cuando en realidad es
el reultado de ciertas combinaciones y/u operaciones.
Solo algunas opciones que se me ocurren.
En lo personal armaría todo en función de la Opción B.
Saludos
Daniel A. Calvin
Cooperator Team Member
http://www.cooperator.com.ar
Microsoft Certified Professional
El día 18/07/07, *Claudio M. E. Bastos Iorio* <[EMAIL PROTECTED]>
escribió:
Tengo una tabla de usuarios con una columa [isapproved], que toma valores
0-1 en base a una aprobación manual via CMS. En base a [isapproved] el
usuario accede o no a ciertas funcionalidades. Hasta ahí todo ok.
Ahora necesito hacer expirar esa condición en "x" tiempo, digamos un año,
la fecha en que debe expirar es un valor en otra columna. Se que podría
chequear si hay un usuario "para expirar" ese día cada vez que me logueo en
el CMS, pero no lo veo muy "elegante". Que otras forma habría de hacer esto?
Sugerencias?
Desde ya muchas gracias.
________________________________________________________
Claudio M. E. Bastos Iorio
http://www.blumer.com.ar
--
Daniel A. Calvin
Cooperator Team Member
http://www.cooperator.com.ar
Microsoft Certified Professional
--
Daniel A. Calvin
Cooperator Team Member
http://www.cooperator.com.ar
Microsoft Certified Professional