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

Preguntas similare

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


.

Respuesta Responder a este mensaje
#2 Julio
11/11/2004 - 15:21 | Informe spam
Pero ahi puede darse el caso en que una persona genere una requisicion el
11/12/04 en la tabla requisicionPordepartamento la ultima fecha que va a
existir seria 11/12/04
entonces RequisicionNumero por ejemplo seria 04-01-5
luego cuando valla a generar la proxima y la hace el 01/01/05 entonces
requisicionNumero seria 05-01-06 pero con requisicionNumero no con cero
'0" sino con el ultimo que tenia, ahora luego para la proxma si tendria
05-01-01


Es lo que creo que podria pasar no lo he probado







"ulises" wrote in message
news:4d0601c4c7e6$257497a0$
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


.

Respuesta Responder a este mensaje
#3 ulises
11/11/2004 - 15:38 | Informe spam
No, porque el UPDATE a 1 cuando cambie la fecha lo haces
antes de obtener el valor para generar el número de
requerimiento, lo que me olvidaba es que también debes
actualizar ese nuevo campo año.

Saludos,
Ulises

Pero ahi puede darse el caso en que una persona genere una


requisicion el
11/12/04 en la tabla requisicionPordepartamento la ultima


fecha que va a
existir seria 11/12/04
entonces RequisicionNumero por ejemplo seria 04-01-5
luego cuando valla a generar la proxima y la hace el


01/01/05 entonces
requisicionNumero seria 05-01-06 pero con


requisicionNumero no con cero
'0" sino con el ultimo que tenia, ahora luego para la


proxma si tendria
05-01-01


Es lo que creo que podria pasar no lo he probado







"ulises" wrote in message
news:4d0601c4c7e6$257497a0$
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


.





.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida