Factura autonumerica

27/10/2003 - 19:52 por Julio | Informe spam
Hola Grupo

Existe la posibilidad en Sql de poner un campo a que se auto-enumere, es
decir tengo un campo que se llama número de factura el cual el número de
factura tiene una secuencia igual: 03- 85.

El 03 representa el Año y el 85 la secuencia de la factura. Lo que quiero
saber si puedo hacer un insert de un nuevo usuario y que el número de
factura se incremente solo sin que el usuario tenga que especificarlo.



Es decir automatizar este campo.

Preguntas similare

Leer las respuestas

#1 Accotto Maximiliano Damian
27/10/2003 - 20:06 | Informe spam
Si!! esto se puede hacer.
El tema es asi, sql puede manejar Autonumerico pero de la siguiente forma:
1,2,3 por ej, lo tuyo tiene una codificacion especial. Yo lo que haria es un
trigger que haga esta funcion, que al insertatr cualquier registro busque
cual es el ultimo y segun tu algotirmo le sume uno por ej, y eso se lo
pondria en el update del trigger.

Suerte

"Julio" escribió en el mensaje
news:%
Hola Grupo

Existe la posibilidad en Sql de poner un campo a que se auto-enumere, es
decir tengo un campo que se llama número de factura el cual el número de
factura tiene una secuencia igual: 03- 85.

El 03 representa el Año y el 85 la secuencia de la factura. Lo que quiero
saber si puedo hacer un insert de un nuevo usuario y que el número de
factura se incremente solo sin que el usuario tenga que especificarlo.



Es decir automatizar este campo.


Respuesta Responder a este mensaje
#2 Javier Loria
28/10/2003 - 00:37 | Informe spam
Hola Julio:
Podrias normalizar la columna y dividirla en 2.
Si es asi podrias usar un IDENTITY pero te lo desrecomiendo, por los
problemas que puede producir si hay rollbacks, o si en algun momento se cae
el servidor, etc. Si te decides por el identity aprende a usar el comando
DBCC CHECKIDENT.
Si decider normalizar la tabla, podria ser algo como:
/* Codigo de Creacion de la Tabla */
CREATE TABLE Facturas(
AnoFactura INT NOT NULL,
NumFactura INT NOT NULL
CHECK (NumFactura BETWEEN 1 AND 999),
FacturaID AS
RIGHT(CAST(AnoFactura AS CHAR(4)),2)
+'-'
+ RIGHT('0000'+CAST(NumFactura AS VARCHAR(4)), 4)
)

INSERT Facturas(AnoFactura, NumFactura)
VALUES(2003,1)
INSERT Facturas(AnoFactura, NumFactura)
VALUES(2003,2)

SELECT * FROM Facturas
/* Fin de Codigo de Creacion de la Tabla */

Veras como la columna calculada IDFactura, tiene el formato deseado pero
es mas facil manejar los numeros por separado.
Para insertar "automaticamente" un nuevo valor puedes usar:
/* Inserta siguiente factura */
INSERT Facturas(AnoFactura, NumFactura)
SELECT YEAR(GETDATE()),
COALESCE(MAX(NumFactura),0)+1
FROM Facturas
WHERE AnoFactura=YEAR(GETDATE())
/* Fin de Siguiente Factura */

Espero te sirva,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Julio escribio:
Hola Grupo

Existe la posibilidad en Sql de poner un campo a que se auto-enumere,
es decir tengo un campo que se llama número de factura el cual el
número de factura tiene una secuencia igual: 03- 85.

El 03 representa el Año y el 85 la secuencia de la factura. Lo que
quiero saber si puedo hacer un insert de un nuevo usuario y que el
número de factura se incremente solo sin que el usuario tenga que
especificarlo.



Es decir automatizar este campo.
Respuesta Responder a este mensaje
#3 Julio
28/10/2003 - 12:53 | Informe spam
Gracias Lo pondre a prueba.
"Javier Loria" wrote in message
news:eo5K$
Hola Julio:
Podrias normalizar la columna y dividirla en 2.
Si es asi podrias usar un IDENTITY pero te lo desrecomiendo, por los
problemas que puede producir si hay rollbacks, o si en algun momento se


cae
el servidor, etc. Si te decides por el identity aprende a usar el comando
DBCC CHECKIDENT.
Si decider normalizar la tabla, podria ser algo como:
/* Codigo de Creacion de la Tabla */
CREATE TABLE Facturas(
AnoFactura INT NOT NULL,
NumFactura INT NOT NULL
CHECK (NumFactura BETWEEN 1 AND 999),
FacturaID AS
RIGHT(CAST(AnoFactura AS CHAR(4)),2)
+'-'
+ RIGHT('0000'+CAST(NumFactura AS VARCHAR(4)), 4)
)

INSERT Facturas(AnoFactura, NumFactura)
VALUES(2003,1)
INSERT Facturas(AnoFactura, NumFactura)
VALUES(2003,2)

SELECT * FROM Facturas
/* Fin de Codigo de Creacion de la Tabla */

Veras como la columna calculada IDFactura, tiene el formato deseado


pero
es mas facil manejar los numeros por separado.
Para insertar "automaticamente" un nuevo valor puedes usar:
/* Inserta siguiente factura */
INSERT Facturas(AnoFactura, NumFactura)
SELECT YEAR(GETDATE()),
COALESCE(MAX(NumFactura),0)+1
FROM Facturas
WHERE AnoFactura=YEAR(GETDATE())
/* Fin de Siguiente Factura */

Espero te sirva,


Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Julio escribio:
> Hola Grupo
>
> Existe la posibilidad en Sql de poner un campo a que se auto-enumere,
> es decir tengo un campo que se llama número de factura el cual el
> número de factura tiene una secuencia igual: 03- 85.
>
> El 03 representa el Año y el 85 la secuencia de la factura. Lo que
> quiero saber si puedo hacer un insert de un nuevo usuario y que el
> número de factura se incremente solo sin que el usuario tenga que
> especificarlo.
>
>
>
> Es decir automatizar este campo.


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