Control secuencia de fechas

15/07/2005 - 22:00 por Alfredo Crisostomo | Informe spam
Hola, necesito una idea para implementar lo siguiente.

Tengo una tabla de documentos numerados con un campo clave ID y otro campo
FECHA, entre otros.. Este campo es numerico pero no es secuencial pues los
usuarios lo deben introducir. El problema es que el sistema debe controlar
que las fechas digitadas esten ordenadas en el orden de la PK, es decir:

ID fecha
0001 02/07/2005
0002 07/07/2005
0004 10/07/2005

que la fecha de un nuevo ID que se digite no sea mayor que la de su ID
siguiente (si lo hay) y no sea menor que la del ID anterior (si lo hay).
Nota. Los ID's se digitan en orden aleatorio.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
15/07/2005 - 23:17 | Informe spam
Alfredo,

Pudieras crear un trigger, por ejemplo para insert, que chequea la regla.
Algo asi como.

use northwind
go

create table t1 (
c1 int not null unique,
c2 datetime not null
)
go

create trigger tr_t1_ins on t1
for insert
as
set nocount on

if exists(
select
*
from
inserted as i
where
exists(
select
*
from
t1 as a
where
a.c1 = (select max(b.c1) from t1 as b where b.c1 < i.c1)
and a.c2 > i.c2
)

or

exists(
select
*
from
t1 as a
where
a.c1 = (select min(b.c1) from t1 as b where b.c1 > i.c1)
and a.c2 < i.c2
)
)
begin
rollback transaction
raiserror('Fecha incorrecta.', 16, 1)
return
end
go

insert into t1(c1, c2) values(1, '20050715')
insert into t1(c1, c2) values(3, '20050716')
insert into t1(c1, c2) values(5, '20050717')
go

insert into t1(c1, c2) values(2, '20050714')
go

insert into t1(c1, c2) values(4, '20050718')
go

select * from t1 order by 1
go

drop table t1
go


AMB

"Alfredo Crisostomo" wrote:

Hola, necesito una idea para implementar lo siguiente.

Tengo una tabla de documentos numerados con un campo clave ID y otro campo
FECHA, entre otros.. Este campo es numerico pero no es secuencial pues los
usuarios lo deben introducir. El problema es que el sistema debe controlar
que las fechas digitadas esten ordenadas en el orden de la PK, es decir:

ID fecha
0001 02/07/2005
0002 07/07/2005
0004 10/07/2005

que la fecha de un nuevo ID que se digite no sea mayor que la de su ID
siguiente (si lo hay) y no sea menor que la del ID anterior (si lo hay).
Nota. Los ID's se digitan en orden aleatorio.







Respuesta Responder a este mensaje
#2 Alfredo Crisostomo
15/07/2005 - 23:52 | Informe spam
Muchas gracias Alejandro.

Una duda mas, en un ambiente de mucha digitacion concurrente no seria un
poco pesado ese control en un trigger ?

Gracias de nuevo


"Alejandro Mesa" escribió en el
mensaje news:
Alfredo,

Pudieras crear un trigger, por ejemplo para insert, que chequea la regla.
Algo asi como.

use northwind
go

create table t1 (
c1 int not null unique,
c2 datetime not null
)
go

create trigger tr_t1_ins on t1
for insert
as
set nocount on

if exists(
select
*
from
inserted as i
where
exists(
select
*
from
t1 as a
where
a.c1 = (select max(b.c1) from t1 as b where b.c1 < i.c1)
and a.c2 > i.c2
)

or

exists(
select
*
from
t1 as a
where
a.c1 = (select min(b.c1) from t1 as b where b.c1 > i.c1)
and a.c2 < i.c2
)
)
begin
rollback transaction
raiserror('Fecha incorrecta.', 16, 1)
return
end
go

insert into t1(c1, c2) values(1, '20050715')
insert into t1(c1, c2) values(3, '20050716')
insert into t1(c1, c2) values(5, '20050717')
go

insert into t1(c1, c2) values(2, '20050714')
go

insert into t1(c1, c2) values(4, '20050718')
go

select * from t1 order by 1
go

drop table t1
go


AMB

"Alfredo Crisostomo" wrote:

> Hola, necesito una idea para implementar lo siguiente.
>
> Tengo una tabla de documentos numerados con un campo clave ID y otro


campo
> FECHA, entre otros.. Este campo es numerico pero no es secuencial pues


los
> usuarios lo deben introducir. El problema es que el sistema debe


controlar
> que las fechas digitadas esten ordenadas en el orden de la PK, es decir:
>
> ID fecha
> 0001 02/07/2005
> 0002 07/07/2005
> 0004 10/07/2005
>
> que la fecha de un nuevo ID que se digite no sea mayor que la de su ID
> siguiente (si lo hay) y no sea menor que la del ID anterior (si lo hay).
> Nota. Los ID's se digitan en orden aleatorio.
>
>
>
>
>
>
>
Respuesta Responder a este mensaje
#3 Maxi
16/07/2005 - 02:10 | Informe spam
Hola, pues yo te voy a dar otra alternativa ;) podrias usar check y una
funcion definida por el usuario para el check. De todas maneras poner este
tipo de reglas asi puede hacer muy lento el sistema, no entiendo porque
buscas una regla asi?


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Alfredo Crisostomo" escribió en el mensaje
news:%
Hola, necesito una idea para implementar lo siguiente.

Tengo una tabla de documentos numerados con un campo clave ID y otro campo
FECHA, entre otros.. Este campo es numerico pero no es secuencial pues
los
usuarios lo deben introducir. El problema es que el sistema debe
controlar
que las fechas digitadas esten ordenadas en el orden de la PK, es decir:

ID fecha
0001 02/07/2005
0002 07/07/2005
0004 10/07/2005

que la fecha de un nuevo ID que se digite no sea mayor que la de su ID
siguiente (si lo hay) y no sea menor que la del ID anterior (si lo hay).
Nota. Los ID's se digitan en orden aleatorio.






Respuesta Responder a este mensaje
#4 Alonso
16/07/2005 - 03:15 | Informe spam
tipo de reglas asi puede hacer muy lento el sistema, no entiendo porque
buscas una regla asi?




Me imagino que porque se lo pidió el cliente :). No creo que un
programador por propia iniciativa va a querer hacer algo tan complicado.

A mi casualmente me pidieron algo parecido y tuve tambien que meterlo en un
trigger pues a fin de cuentas hacer una funcion es funcionalmente casi lo
mismo.
Respuesta Responder a este mensaje
#5 Maxi
16/07/2005 - 03:24 | Informe spam
Hola, puede ser, lo q me gustaria saber atras de esa regla si es tan asi, o
sea, el cliente pidio una ragla tan asi o el programador transformo un
pedido del cliente en un modelo y eso es lo que quiere llevar adelante? No
veo porque un usuario deba ingresar un valor y que ese sea (parece) el
numerador de un documento, es extraño!!


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Alonso" escribió en el mensaje
news:
tipo de reglas asi puede hacer muy lento el sistema, no entiendo porque
buscas una regla asi?




Me imagino que porque se lo pidió el cliente :). No creo que un
programador por propia iniciativa va a querer hacer algo tan complicado.

A mi casualmente me pidieron algo parecido y tuve tambien que meterlo en
un
trigger pues a fin de cuentas hacer una funcion es funcionalmente casi lo
mismo.


Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida