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

Invalid length parameter passed to the SUBSTRING function.

Estas en el tema de Invalid length parameter passed to the SUBSTRING function. en el foro de SQL Server en Foros del Web. Hola a todos en el foro, tengo el siguiente problema con el siguiente codigo que lo que intenta hacer el concater muchos registros en un ...
  #1 (permalink)  
Antiguo 25/02/2010, 11:30
 
Fecha de Ingreso: septiembre-2009
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Invalid length parameter passed to the SUBSTRING function.

Hola a todos en el foro, tengo el siguiente problema con el siguiente codigo que lo que intenta hacer el concater muchos registros en un solo registro (iislas comentabas que mi logica no era muy bueno y pues efectivamente no lo es) el error que me arroja es el siguiente "Invalid length parameter passed to the SUBSTRING function." y estuve investigando y aparentemente esto pasa por que intenta concatenar resultados nullos o en 0, ya que cuando si existen registros para unir el SP funciona correctamente, ahora mi duda es la siguiente como puedo validar que no me erroje este error el codigo es el siguiente

declare @producto nvarchar(4000)
select @producto = space(4000)

set @producto = ''
select @producto = @producto + rtrim(ltrim(a.id_producto)) + ', '
from trafico a
where a.id_entrada = '05264'

set @tamaño = len(ltrim(@producto))

set @producto = SUBSTRING(@producto, 1,len(ltrim(@producto))-1)
print (@producto)
  #2 (permalink)  
Antiguo 25/02/2010, 12:20
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Invalid length parameter passed to the SUBSTRING function.

Para los valores NULL, existe la funcion ISNULL(columna, 'valor'), que lo que hace es SUBSTITUIR por el 'valor' aquellas columnas en NULL
  #3 (permalink)  
Antiguo 25/02/2010, 12:25
 
Fecha de Ingreso: septiembre-2009
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Respuesta: Invalid length parameter passed to the SUBSTRING function.

si encontre algo como lo que me comentas iislas de hecho trate de implementarlo pero no dio resultado, ahora entiendo por que , de que otra manera podre hacer esto que intento tienes alguna sugerencia?
  #4 (permalink)  
Antiguo 25/02/2010, 12:37
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Invalid length parameter passed to the SUBSTRING function.

Pues no se comprende de porque NO puedes implementarlo

select @producto = @producto +ISNULL(rtrim(ltrim(a.id_producto)), '') + ', '
  #5 (permalink)  
Antiguo 25/02/2010, 13:20
 
Fecha de Ingreso: septiembre-2009
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Invalid length parameter passed to the SUBSTRING function.

Me sigue marcando el mismo error
  #6 (permalink)  
Antiguo 25/02/2010, 15:30
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Invalid length parameter passed to the SUBSTRING function.

¿que trae @producto y @tamaño?
  #7 (permalink)  
Antiguo 25/02/2010, 15:52
 
Fecha de Ingreso: septiembre-2009
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Invalid length parameter passed to the SUBSTRING function.

@producto trae los diferentes productos de una factura, pueden ser numeros o letras y @tamaño no lo utilizo para nada se me escapo ahi la variable pero esa no se utiliza
  #8 (permalink)  
Antiguo 25/02/2010, 16:07
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Invalid length parameter passed to the SUBSTRING function.

Antes de hacer el SUBSTRING, has un PRINT de @producto, con esto entiendo que id_producto es un VARCHAR?
  #9 (permalink)  
Antiguo 25/02/2010, 16:33
 
Fecha de Ingreso: septiembre-2009
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Invalid length parameter passed to the SUBSTRING function.

nvarchar y si lo hago antes del substring de todas maneras funciona ahora no entiendo,
  #10 (permalink)  
Antiguo 25/02/2010, 17:18
 
Fecha de Ingreso: septiembre-2009
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
De acuerdo Respuesta: Invalid length parameter passed to the SUBSTRING function.

ya encontre el error de hecho es muy tonto en esta sentencia:

set @producto = SUBSTRING(@producto, 1,len(ltrim(@producto))-1) la utilizo para quitarle la ultima coma y como le resto -1 marca error por que cuando trae 0 e intenta quitarle 1 pues truena la aplicacion , bueno al menos ya tengo un problema menos en mi vida muchas gracias por tu ayuda iislas
en verdad se te agradece
  #11 (permalink)  
Antiguo 26/02/2010, 09:09
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Invalid length parameter passed to the SUBSTRING function.

Antes de hacer SUBSTRING, valida la longitud de tu cadena LEN(CADENA)
  #12 (permalink)  
Antiguo 26/02/2010, 09:34
 
Fecha de Ingreso: septiembre-2009
Mensajes: 66
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Invalid length parameter passed to the SUBSTRING function.

asi es exactamente lo que hice

if len(@producto) > '0'
"sentencia"

y asunto arreglado! muchas gracias por todo nuevamente

Etiquetas: function
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 15:39.