Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Condicion de autonumeracion

Estas en el tema de Condicion de autonumeracion en el foro de SQL Server en Foros del Web. Hola amigos les ecribo para pedirles una ayuda lo q pasa es q necesito hacer hacer lo siguiente: por ejemplo la numeracion es la siguiente ...
  #1 (permalink)  
Antiguo 09/08/2013, 07:03
 
Fecha de Ingreso: agosto-2013
Mensajes: 9
Antigüedad: 10 años, 8 meses
Puntos: 0
Condicion de autonumeracion

Hola amigos les ecribo para pedirles una ayuda lo q pasa es q necesito hacer hacer lo siguiente:

por ejemplo la numeracion es la siguiente 001-002-000157472

lo que quiero es aber como hacer si quiero que si cambio el 001 por 002 o 003 me de otra numeracio osea seria algo asi 000217578 y que vaya cambiando depende de lo q vaya cambiando los primeros 3 digitos espero me puedan ayudar de antamo les agradesco.
  #2 (permalink)  
Antiguo 09/08/2013, 07:52
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Condicion de autonumeracion

aqui depende de la logica que quieras manejar, puedes crear un trigger para que primero valides que tipo de valor vas a insertar por ejemplo que sea 002, entonces en el cuerpo del trigger pones un proceso que primero obtenga el maximo valor que tengas en el rango del 002 si no hay valores entonces empiezas con los valores que vas a manejar ejem 000200001 y lo almacenas en tu tabla, aclarando que el el trigger tendrias una validacion en donde verificarias los primeros 3 digitos de tu autonumerico.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 09/08/2013, 07:56
 
Fecha de Ingreso: agosto-2013
Mensajes: 9
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Condicion de autonumeracion

Bueno soy un poco nuevo en esto de sql server 2008 si me pudieras explicar mejor en codigo te lo agradeceria mucho
  #4 (permalink)  
Antiguo 09/08/2013, 08:16
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Condicion de autonumeracion

Explicado en codigo :)

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. valor VARCHAR(30)
  4. )
  5.  
  6. INSERT INTO #temp VALUES ('001-002-000157472')
  7. INSERT INTO #temp VALUES ('001-002-000157473')
  8. INSERT INTO #temp VALUES ('001-002-000157474')
  9. INSERT INTO #temp VALUES ('001-002-000157469')
  10. INSERT INTO #temp VALUES ('001-002-000157475')
  11.  
  12. DECLARE @param VARCHAR(20)
  13. DECLARE @total INT
  14. DECLARE @maximo INT
  15. DECLARE @int_param INT
  16.  
  17. DECLARE @new_value VARCHAR(20)
  18. SET @param='0003'
  19.  
  20.  
  21. SELECT @total=COUNT(*) FROM(
  22. SELECT SUBSTRING(valor1,charindex('-',valor1,1)+1,LEN(valor1)) AS total FROM(
  23. SELECT SUBSTRING(valor,charindex('-',valor,1)+1,LEN(valor)) AS valor1 FROM #temp
  24. ) AS t1
  25. ) t2 WHERE total LIKE @param + '%'
  26.  
  27. IF @total=0
  28. BEGIN
  29.   SET @int_param=CONVERT(INT,@param)
  30.   SET @param=CONVERT(VARCHAR(20),@int_param)
  31.   SET @new_value= '001' + '-' + '002-' + REPLICATE('0',3) + @param + '00001'
  32. END  
  33. ELSE
  34. BEGIN
  35. SELECT @maximo=MAX(CONVERT(INT,total)) FROM(
  36. SELECT SUBSTRING(valor1,charindex('-',valor1,1)+1,LEN(valor1)) AS total FROM(
  37. SELECT SUBSTRING(valor,charindex('-',valor,1)+1,LEN(valor)) AS valor1 FROM #temp
  38. ) AS t1
  39. ) t2 WHERE total LIKE @param + '%'
  40. SET @maximo=@maximo+1
  41. SET @new_value= '001' + '-' + '002-' + REPLICATE('0',3) + CONVERT(VARCHAR(20),@maximo)
  42. END  
  43. INSERT INTO #temp VALUES (@new_value)
  44. SELECT * FROM #temp
  45.  
  46. ----------------------------------------------

ya lo que tienes que hacer es aplicar una logica parecida para un trigger o como lo vayas a manejar :)

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:42.