Se esta dando el siguiente mensaje de error en la pantalla de administración de usuarios de evolution: "invalid length parameter passed to the left or substring function"

alt text


Se detecto que el problema se da cuando el usuario creado no tiene asociado ningun Rol y al volver a entrar al mantenimiento de usuarios muestra el mensaje indicado y ya no lista los usuarios.

Cliente: OIRSA Version: Evolution 1.9.0.0 Browser: FireFox 43.0.4

asked 14 Jan '16, 16:03

Valentino%20Lopez's gravatar image

Valentino Lopez
(suspended)
accept rate: 42%

Hice la prueba y si el usuario no tiene roles asignados sí puede entrar al sistema pero no puede ingresar al mantenimiento de usuarios (o a cualquier otra opcion). El smartlist del mantenimiento de usuarios no ocupa variables de entorno para pensar que tal vez alguna estaba nula

(14 Jan '16, 17:36) sbarahona ♦♦ sbarahona's gravatar image

Gracias, ya vi cual es el problema, lo que sucedio es que a ese smartlist se le agrego una columna hace tiempo porque solicitaron que desde la vista querian ver que rol(es) tenia asignado el usuario, y para ello se creo una funcion que va a obtener los roles del usuario y se usa la funcion SUBSTRING y como en ese caso que no tienen ningun rol asignado esta funcion da error, pero ya lo identifique y ya lo corregi. Saludos.

link

answered 14 Jan '16, 18:07

Valentino%20Lopez's gravatar image

Valentino Lopez
(suspended)
accept rate: 42%

Podrías compartir la función que hiciste, por si le sirve a alguien mas.

(18 Jan '16, 11:32) Fernando Paz ♦♦ Fernando%20Paz's gravatar image

Aqui el script:

FUNCTION [gen].get_user_roles RETURNS VARCHAR(MAX) AS BEGIN
DECLARE @rol varchar(30), @roles varchar(max)='' DECLARE c_roles CURSOR FOR SELECT rus_rol_id FROM sec.rus_roles_users WHERE rus_codusr = @codusr

OPEN c_roles FETCH c_roles INTO @rol WHILE (@@FETCH_STATUS = 0) BEGIN SET @roles=@roles + @rol + ',' FETCH c_roles INTO @rol END CLOSE c_roles DEALLOCATE c_roles -- QUITA COMA FINAL RETURN SUBSTRING(ISNULL(@rus_rol_id, ' '), 1, LEN(@rus_rol_id) - 1) END

(18 Jan '16, 13:59) Valentino Lopez Valentino%20Lopez's gravatar image

Puedes probar con esta función, tal vez te pueda funcionar más rápido (es preferible que crees la funcion en EvoConfig por temas de desempeño y el DTC)

CREATE FUNCTION cfg.get_user_roles(@codusr int) RETURNS varchar(max) AS
BEGIN
    DECLARE @roles VARCHAR(max)

    SELECT @roles = COALESCE(@roles + ', ', '') + rus_rol_id 
    FROM sec.rus_roles_users
    WHERE rus_codusr = @codusr

    RETURN @roles
END

Si creas la funcion en EvoConfig solo necesitarías crear un sinónimo para que se pueda utilizar desde EvoData

USE [EvoData]
GO

CREATE SYNONYM cfg.get_user_roles FOR [EvoConfig].cfg.get_user_roles
GO
link

answered 18 Jan '16, 15:42

sbarahona's gravatar image

sbarahona ♦♦
(suspended)
accept rate: 32%

edited 18 Jan '16, 15:43

Muchas gracias por la observación, voy a proceder a hacer el cambio como me indicas.

(19 Jan '16, 08:40) Valentino Lopez Valentino%20Lopez's gravatar image
Your answer
toggle preview

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Markdown Basics

  • *italic* or _italic_
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Evolution en BitBucket

En este sitio puede acceder al código fuente, centro de descargas y reportar bugs, propuestas y mejoras para Evolution.

Evolution en JIRA

En este sitio puedes sugerir nueva funcionalidad para Evolution, o puedes votar por la funcionalidad ya propuesta por otros usuarios.

Tags:

×13
×3
×1

Asked: 14 Jan '16, 16:03

Seen: 2,684 times

Last updated: 19 Jan '16, 08:40

[Acerca de] [Preguntas Frecuentes] [Privacidad] [Soporte] [Contacto]
Copyright 2013-2018. Asesores en Informática