Update

11/11/2004 - 02:14 por Julio | Informe spam
Hola grupo

Tengo el siguiente problema:

Esto es para un sistema de requisicion en la cual cada departamento tiene un
numero de requisicion diferente que contiene la siguiente nomenclatura


estos numeros corresponde al departamento 01
04-01-01

este numero de requisicion quiere decir:
04 corresponde al año actual
01 corresponde al codigo del departamento
01 es un numero que se va incrementando

de esta forma se obtiene la RequisicionNumero

lo que sucede es que cuando entre el nuevo año es decir 2005 la requisicion
que continuara deberia ser
04-01-01
04-01-02
04-01-03
05-01-01 *********** Nuevo año*******
05-01-02
05-01-03

donde el 01 del final vuelve a iniciar en 1 porque cambio el año

todo me funciona bien execto que no he podido poner el ultimo numero a
iniciar en uno





Estas son las tablas

CREATE TABLE [dbo].[RequisicionPorDepartamento] (
[RequisicionID] [int] IDENTITY (1, 1) NOT NULL ,
[RequisicionNumero] [varchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[Fecha_Requerida] [datetime] NULL ,
[DepartamentoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Empleado] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Ubicacion] [varchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Suplidor] [varchar] (200) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Condicion] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[prioridad] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Anexo] [varchar] (500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Nota] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Fecha] [datetime] NULL ,
[Monto] [float] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE TABLE [dbo].[Departamento] (
[DepartamentoID] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[Nombre] [varchar] (19) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[numero_requisicion] [varchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS
NULL
) ON [PRIMARY]
GO

insert into departamento (departamentoID,nombre,numero_requisicion) values
('1','ventas','0')
insert into departamento (departamentoID,nombre,numero_requisicion) values
('2','compras','0')








SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO







CREATE PROCEDURE [insert_RequisicionPorDepartamento]

@DepartamentoID int = null,
@fecha_requerida [datetime],
@ubicacion [varchar](50),
@Suplidor [varchar](50),
@Prioridad [char](10),
@Monto [float]


AS

declare @RequisicionNumero varchar(20)

Begin tran

update departamento set numero_requisicion = numero_requisicion + 1
where departamentoID = @departamentoID
Set @RequisicionNumero = (select datepart(year,getdate()))
set @RequisicionNumero = substring(@RequisicionNumero,3,3) + '-'
+ (select DepartamentoID from departamento where departamentoID =
@departamentoID)
+ '-'
+ (select numero_requisicion from departamento where departamentoID =
@departamentoID)

IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END





INSERT INTO [requisiciones].[dbo].[RequisicionPorDepartamento]
(

[RequisicionNumero],
[fecha_requerida],
[DepartamentoID],
[Ubicacion],
[Suplidor],
[Prioridad],
[Monto])



VALUES
(
@RequisicionNumero,
@fecha_requerida,
@DepartamentoID,
@Ubicacion,
@Suplidor,
@Prioridad,
@monto)

IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN
 

Leer las respuestas

#1 ulises
11/11/2004 - 13:01 | Informe spam
1) Como veo que estas guardando el último número de
requisión en la tabla departamento, puedes agregar una
columna que contenga también el año, luego de eso al
momento del update puedes usar case

update departamento
set numero_requisicion = ( case when year(getdate()) columnaañorequ then numero_requisicion + 1 else 1 end )
where departamentoID = @departamentoID

2) Ya no guardar la información del último número de
requisición en la tabla departamento, sino que leer siempre
el último número creado, obtener la parte del año
compararla con la fecha actual y hacer la misma
actualización que la anterior.

Saludos,
Ulises


Hola grupo

Tengo el siguiente problema:

Esto es para un sistema de requisicion en la cual cada


departamento tiene un
numero de requisicion diferente que contiene la siguiente


nomenclatura


estos numeros corresponde al departamento 01
04-01-01

este numero de requisicion quiere decir:
04 corresponde al año actual
01 corresponde al codigo del departamento
01 es un numero que se va incrementando

de esta forma se obtiene la RequisicionNumero

lo que sucede es que cuando entre el nuevo año es decir


2005 la requisicion
que continuara deberia ser
04-01-01
04-01-02
04-01-03
05-01-01 *********** Nuevo año*******
05-01-02
05-01-03

donde el 01 del final vuelve a iniciar en 1 porque cambio


el año

todo me funciona bien execto que no he podido poner el


ultimo numero a
iniciar en uno





Estas son las tablas

CREATE TABLE [dbo].[RequisicionPorDepartamento] (
[RequisicionID] [int] IDENTITY (1, 1) NOT NULL ,
[RequisicionNumero] [varchar] (20) COLLATE


SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[Fecha_Requerida] [datetime] NULL ,
[DepartamentoID] [varchar] (50) COLLATE


SQL_Latin1_General_CP1_CI_AS NULL ,
[Empleado] [varchar] (100) COLLATE


SQL_Latin1_General_CP1_CI_AS NULL ,
[Ubicacion] [varchar] (100) COLLATE


SQL_Latin1_General_CP1_CI_AS NULL ,
[Suplidor] [varchar] (200) COLLATE


SQL_Latin1_General_CP1_CI_AS NULL ,
[Condicion] [char] (10) COLLATE


SQL_Latin1_General_CP1_CI_AS NULL ,
[prioridad] [char] (10) COLLATE


SQL_Latin1_General_CP1_CI_AS NULL ,
[Anexo] [varchar] (500) COLLATE


SQL_Latin1_General_CP1_CI_AS NULL ,
[Nota] [text] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Fecha] [datetime] NULL ,
[Monto] [float] NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

CREATE TABLE [dbo].[Departamento] (
[DepartamentoID] [varchar] (50) COLLATE


SQL_Latin1_General_CP1_CI_AS NOT
NULL ,
[Nombre] [varchar] (19) COLLATE


SQL_Latin1_General_CP1_CI_AS NULL ,
[numero_requisicion] [varchar] (50) COLLATE


SQL_Latin1_General_CP1_CI_AS
NULL
) ON [PRIMARY]
GO

insert into departamento


(departamentoID,nombre,numero_requisicion) values
('1','ventas','0')
insert into departamento


(departamentoID,nombre,numero_requisicion) values
('2','compras','0')








SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO







CREATE PROCEDURE


[insert_RequisicionPorDepartamento]

@DepartamentoID int = null,
@fecha_requerida [datetime],
@ubicacion [varchar](50),
@Suplidor [varchar](50),
@Prioridad [char](10),
@Monto [float]


AS

declare @RequisicionNumero varchar(20)

Begin tran

update departamento set numero_requisicion numero_requisicion + 1
where departamentoID = @departamentoID
Set @RequisicionNumero = (select datepart(year,getdate()))
set @RequisicionNumero = substring(@RequisicionNumero,3,3)


+ '-'
+ (select DepartamentoID from departamento where


departamentoID =
@departamentoID)
+ '-'
+ (select numero_requisicion from departamento where


departamentoID =
@departamentoID)

IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END





INSERT INTO [requisiciones].[dbo].[RequisicionPorDepartamento]
(

[RequisicionNumero],
[fecha_requerida],
[DepartamentoID],
[Ubicacion],
[Suplidor],
[Prioridad],
[Monto])



VALUES
(
@RequisicionNumero,
@fecha_requerida,
@DepartamentoID,
@Ubicacion,
@Suplidor,
@Prioridad,
@monto)

IF @@ERROR <> 0
BEGIN
ROLLBACK TRAN
RETURN
END
COMMIT TRAN


.

Preguntas similares