Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-08-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Crear un Triger para Generar Número de Serie en MS Sql Server Express 2008

Buenos dias A todos y muchas gracias por su tiempo ojala y me puedan ayudar con esto.


No tengo Idea de Como hacerlo y Necesito Hacer un Trigger para Generar los Numero de Comprobante Fiscal para una Factura de venta ( Dichos Numeros Tienen el Siguiente Formato A010010010100000001) y cada vez que se registra una factura de venta Nueva hay que incrementar en uno(1) este número para asignarselo a la nueva factura (ej: A010010010100000002).


Algunos detalles a tener en cuenta sobre el número de Comprobante Fiscal:

1) Los Primeros 11 caracteres son Fijos "A0100100101"
2) Los demás son la Secuencia "00000001
3) No se Pueden Repetir y es Obligatorio que al registrar cada factura de Venta se le Asigne un Número de Comprobante Fiscal


Tengo una Tabla Llamada Numeros de Serie para Guardar los Números de Comprobantes Fiscal Con la Siguiente Estructura


Número Inicial nvarchar(19)
Número Final nvarchar(19)
último Número Utilizado nvarchar(19) // Este campo Guarda el Número que se le a Asignado a la última factura realizada.


Antés de registrar la factura en la Base de datos, en la tabla Numeros de Serie ya tengo llenos los campos Número_Inicial y Número_Final porque esta secuencia de numero la entrega el Gobierno. (Ej: Número inicial: A010010010100000001, Número Final: A010010010100000050).


El Trigger que necesito es para que cuando se Guarde una Nueva factura de ventas se le asigne este número de comprobante Fiscal en la Tabla Cabecera_de_ventas y se actualice la Tabla Numeros de Serie.


Gracias por Regalarme un poco de tu tiempo y por la ayuda que puedan brindarme.

Saludos,

Alberto.
Responder Con Cita
  #2  
Antiguo 10-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y por qué escribes así?, en mayúsculas y minúsculas.
Supongo que lo has escrito todo en mayúsculas y el sistema lo ha detectadoy lo ha puesto así.
Si ese es el caso, no escribas en mayúsculas, ya sabes que eso en internet es GRITAR, y recuerda nuestra guía de estilo, gracias.
Responder Con Cita
  #3  
Antiguo 10-08-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Buenos dias Casimiro no he escrito todo en mayuscula solo la primera letra de Algunas palabras y la primero letra de los Numeros de Serie porque asi es como va no puede ser en mayuscula (Ej; A01001010010100000001).


Saludos y Muchas Gracias ojala y me puedan ayudar con esto...
Responder Con Cita
  #4  
Antiguo 10-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por hondaalberto Ver Mensaje
Saludos y Muchas Gracias ojala y me puedan ayudar con esto...
Hola, conozco poco MS sql, pero supongo, seguro, que existen programas "administradores/manejadores de esa base de datos" y encontrarás la opción de "Crear trigger".
También supongo que debe tener algún tipo de dato autoincrementable, como un generador o algo así.

Entonces lo único que debes hacer, en principio, es tomar la parte fija del número de serie y unirla con la parte generada. Ese dato es el que guardarías.
Responder Con Cita
  #5  
Antiguo 10-08-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Asi es SQL Server Cuenta con una Herramienta de administración para eso, lo que me interesara saber es si alguien tiene alguna idea del código sql que deberia aplicar para hacerlo.
Responder Con Cita
  #6  
Antiguo 10-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
A ver si puede ayudarte alguien que conozca ms sql.
Responder Con Cita
  #7  
Antiguo 15-08-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
Aqui esta el Trigger que necesitaba ojala le sirva a alguien más...

Este Triger lo que hace es Tomar un Número de Comprobante Fiscal (A010010010100000001) e incrementarlo en uno(1) cada vez que se ejecuta.

Ej: (A010010010100000001 + 1) = A010010010100000002


Código SQL [-]
USE [Prueba]
GO
/****** Object:  Trigger [dbo].[TI_Factura]    Script Date: 08/13/2012 19:26:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TI_Factura] ON [dbo].[Factura] FOR INSERT AS
 
 
declare @valor varchar(19)
declare @cadena varchar(19)
declare @numero int
declare @x int
declare @serie varchar(19)
 
DECLARE @CADENA2 varchar(19)
DECLARE @Prueba varchar(19) 
 
SELECT  @valor=[Ultimo_Utilizado] FROM(
SELECT  [Ultimo_Utilizado],convert(int,substring([Ultimo_Utilizado],12,len([Ultimo_Utilizado])))  AS numero FROM Table_3 
        where  codigo=(Select Inserted.codigo from  Inserted where Inserted.codigo = table_3.codigo)
)AS t1 ORDER BY numero DESC
 
SELECT @cadena=substring(@valor,12,len(@valor))
SELECT @CADENA2 =substring(@valor,1,11)
SET @numero=convert(int,@cadena)
SET @numero=@numero+1
SET @x=1
SET @serie=''
 
while @x <=(8-(SELECT len(convert(varchar(10),@numero))))
begin
    SET @serie=@serie + '0'
    SET @x=@x+1
end
SET @serie=@serie + convert(varchar(10),@numero)
 
Set @serie=@CADENA2  + @serie
 
--SET @serie='A0100100101' + @serie Si CADENA2  Funciona borrar esta linea
--INSERT INTO #temp values (@serie)
 
UPDATE Factura SET NCF = @serie  FROM inserted
WHERE Inserted.id = Factura.id
 
Update Table_3 
Set Ultimo_Utilizado= @serie,
    Resultado = @CADENA2 
--where Codigo='NCFCR'
 
WHERE table_3.Codigo = (Select Inserted.codigo from Inserted where Inserted.codigo = table_3.codigo)

Última edición por Casimiro Notevi fecha: 15-08-2012 a las 10:51:26.
Responder Con Cita
  #8  
Antiguo 15-08-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Estupendo


Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #9  
Antiguo 15-08-2012
hondaalberto hondaalberto is offline
Miembro
 
Registrado: sep 2010
Ubicación: República Dominicana
Posts: 67
Poder: 14
hondaalberto Va por buen camino
De Acuerdo Casimiro, Muchas Gracias por la Observación lo tendre pendiente para la Próxima vez.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Analizadores para sql server 2008 Jere_84 MS SQL Server 4 20-07-2012 22:40:37
Consulta ADO con MS SQL Server 2008 Express Jere_84 Conexión con bases de datos 8 22-05-2012 19:24:34
crear tablas en SQL express, utilizando VB.Net 2008 flashtkd .NET 0 21-08-2008 19:56:59
plz aclaracion para numero de serie de CD's lookmydoom API de Windows 3 25-10-2006 00:00:48
Como crear un numero de serie pgraciap Varios 5 28-11-2003 17:53:20


La franja horaria es GMT +2. Ahora son las 17:15:24.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi