Estimados, cree un procedimiento en la version 1.10.0.3 para el formulario de evaluación de desempeño de forma masiva, al momento de hacer la evaluación lo muestra y se puede hace el calculo de bien, pero cuando cambio de opción y luego quiero volver a la opción de donde llené el formulario me lanza el siguiente mensaje:

System.InvalidOperationException: La secuencia no contiene ningún elemento coincidente
   en System.Linq.Enumerable.First[TSource](IEnumerable`1 source, Func`2 predicate)
 en         Aseinfo.VH4.EvaluacionDesempenio.Controllers.EvaluacionDesempenioController.OnFormularioDinamicoReadingData(Object sender, FormularioDinamicoDataReadingEventArgs e) en c:\BuildAgent\work\89066541112bb801\VH4\EvaluacionDesempenio\Controllers\EvaluacionDesempenioController.cs:línea 2529
en Aseinfo.VH4.General.Services.FormularioDinamicoService.GetFormularioDinamicoDataViewModel(Int32 codigoInstancia, List`1 parametros) en c:\BuildAgent\work\89066541112bb801\VH4\General\Services\FormulariosDinamicos\FormularioDinamicoService.cs:línea 115
en Aseinfo.VH4.General.Controllers.FormularioDinamicoControllerBase.GetFormulario(Int32 codigoFormulario, Nullable`1 codigoInstanciaFormulario, List`1 parametros, List`1 parametrosValueLists, Boolean enAnalisis, Boolean readonly, String prefixElementsName) en c:\BuildAgent\work\89066541112bb801\VH4\General\Controllers\FormularioDinamicoControllerBase.cs:línea 80
en Aseinfo.VH4.EvaluacionDesempenio.Controllers.EvaluacionDesempenioController.ObtenerFormulario(Int32 codigoFormulario, Nullable`1 codigoInstanciaFormulario, List`1 parametros, List`1 parametrosValueLists, Boolean esPortal, Boolean readonly) en c:\BuildAgent\work\89066541112bb801\VH4\EvaluacionDesempenio\Controllers\EvaluacionDesempenioController.cs:línea 2504
en Aseinfo.VH4.EvaluacionDesempenio.Controllers.EvaluacionDesempenioController.GetFormularioPortal(Int32 codigoFormulario, Nullable`1 codigoInstanciaFormulario, List`1 parametros, List`1 parametrosValueLists, Boolean readonly) en c:\BuildAgent\work\89066541112bb801\VH4\EvaluacionDesempenio\Controllers\EvaluacionDesempenioController.cs:línea 1090
en lambda_method(Closure , ControllerBase , Object[] )
en System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
en System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
en System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
en System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult)
en System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b.<BeginInvokeAction>b__1c()
en System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult)

El procedimiento es el siguiente:

IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID('[eva].[gfm_genera_formulario_masivo]') AND type='P')
   DROP PROCEDURE [eva].[gfm_genera_formulario_masivo]
GO
--exec eva.gfm_genera_formulario_masivo 1,5,'bryan_menendez'
CREATE PROCEDURE [eva].[gfm_genera_formulario_masivo]
   @codcia INT,
   @codpev INT,
   @user VARCHAR(36)
AS
BEGIN

DECLARE
@0 varchar(4000),@1 varchar(4000),@2 bit,@3 int,@4 varchar(50),@5 varchar(50),@6 datetime2(7),
@identity INT --, @codpev int = 1

DECLARE @fdi_codigo INT, @esquema_codigo int, @contador int = 0

--SELECT @fdi_codigo = fdi_codigo
-- FROM gen.fdi_formulario_dinamico
--WHERE fdi_nombre = '{NombreSeccionEvaluacionCompetencias, EvaluacionDesempenio}'
--     AND fdi_descripcion = 'Evaluación periodo ' + convert(varchar,@codpev) AND fdi_tipo =     'EvaluacionDesempenio'

DELETE FROM [gen].[cdd_campo_dinamico_data] WHERE cdd_codcfd IN (SELECT cfd_codigo 
                                                                                                          FROM gen.cfd_campo_form_dinamico 
                                                                                                         WHERE cfd_codfdi in (SELECT fdi_codigo = fdi_codigo
                                                                                                                                                FROM gen.fdi_formulario_dinamico
                                                                                                                                         WHERE fdi_nombre = '{NombreSeccionEvaluacionCompetencias, EvaluacionDesempenio}'
                                                                                                                                         AND fdi_descripcion = 'Evaluación periodo ' + convert(varchar,@codpev) 
                                                                                                                                         AND fdi_tipo = 'EvaluacionDesempenio'))
DELETE FROM [gen].[fdd_form_dinamico_data] WHERE fdd_codfdi in (SELECT fdi_codigo = fdi_codigo
                                                                                                        FROM gen.fdi_formulario_dinamico
                                                                                                              WHERE fdi_nombre = '{NombreSeccionEvaluacionCompetencias, EvaluacionDesempenio}'
                                                                                                        AND fdi_descripcion = 'Evaluación periodo ' + convert(varchar,@codpev) 
                                                                                                              AND fdi_tipo = 'EvaluacionDesempenio')
DELETE FROM [gen].[vcd_valores_campos_din] WHERE vcd_codcfd IN (SELECT cfd_codigo FROM gen.cfd_campo_form_dinamico WHERE cfd_codfdi in (SELECT fdi_codigo = fdi_codigo
                                                                                                                                                                                                                          FROM gen.fdi_formulario_dinamico
                                                                                                                                                                                  WHERE fdi_nombre = '{NombreSeccionEvaluacionCompetencias, EvaluacionDesempenio}'
                                                                                                                                                                                               AND fdi_descripcion = 'Evaluación periodo ' + convert(varchar,@codpev) 
                                                                                                                                                                                               AND fdi_tipo = 'EvaluacionDesempenio'))
DELETE FROM [gen].[cfd_campo_form_dinamico] WHERE cfd_codfdi in (SELECT fdi_codigo = fdi_codigo
                                                                                                        FROM gen.fdi_formulario_dinamico
                                                                                                        WHERE fdi_nombre = '{NombreSeccionEvaluacionCompetencias, EvaluacionDesempenio}'
                                                                                                              AND fdi_descripcion = 'Evaluación periodo ' + convert(varchar,@codpev) AND fdi_tipo = 'EvaluacionDesempenio')
DELETE FROM [gen].[gcf_grupo_campo_dinamico] WHERE gcf_codfdi in (SELECT fdi_codigo = fdi_codigo
                                                                                                        FROM gen.fdi_formulario_dinamico
                                                                                                        WHERE fdi_nombre = '{NombreSeccionEvaluacionCompetencias, EvaluacionDesempenio}'
                                                                                                              AND fdi_descripcion = 'Evaluación periodo ' + convert(varchar,@codpev) AND fdi_tipo = 'EvaluacionDesempenio')

UPDATE eva.esq_esquemas
       SET esq_codfdi = NULL
WHERE esq_codpev = @codpev

DELETE FROM [gen].[fdi_formulario_dinamico] WHERE fdi_codigo in (SELECT fdi_codigo = fdi_codigo
                                                                                                        FROM gen.fdi_formulario_dinamico
                                                                                                        WHERE fdi_nombre = '{NombreSeccionEvaluacionCompetencias, EvaluacionDesempenio}'
                                                                                                              AND fdi_descripcion = 'Evaluación periodo ' + convert(varchar,@codpev) AND fdi_tipo = 'EvaluacionDesempenio')

DECLARE C_CURSOR CURSOR FOR 
SELECT distinct pue_codncc
from eva.esq_esquemas
   join eor.pue_puestos on pue_codigo = esq_codpue
where esq_codpev = @codpev

open c_cursor

fetch next from c_cursor into @esquema_codigo

while @@FETCH_STATUS = 0
begin

   SELECT @0='{NombreSeccionEvaluacionCompetencias, EvaluacionDesempenio}',
                @1='Evaluación periodo ' + convert(varchar,@codpev),
                @2=0,
                @3=1,
                @4='EvaluacionDesempenio',
                @5=@user,
                @6=GETDATE()

   INSERT [gen].[fdi_formulario_dinamico]([fdi_nombre], [fdi_descripcion], [fdi_llenado_anonimo], [fdi_codgrc], [fdi_tipo], [fdi_usuario_grabacion], [fdi_fecha_grabacion], [fdi_usuario_modificacion], [fdi_fecha_modificacion])
   VALUES (@0, @1, @2, @3, @4, @5, @6, NULL, NULL)

   SET @identity = @@IDENTITY

   --select * FROM gen.fdi_formulario_dinamico WHERE fdi_codigo = @identity

   UPDATE [eva].[esq_esquemas]
   SET [esq_debe_reg_form] = 0, [esq_codfdi] = @identity, [esq_usuario_modificacion] = @user, [esq_fecha_modificacion] = getdate()
   from eva.esq_esquemas
         join eor.pue_puestos on pue_codigo = esq_codpue
   WHERE [esq_codpev] = @codpev
         and pue_codncc = @esquema_codigo

   --select * FROM eva.esq_esquemas where esq_codpev = @codpev

   INSERT [gen].[gcf_grupo_campo_dinamico]([gcf_peso], [gcf_nombre], [gcf_descripcion], [gcf_codgcf], [gcf_codfdi], [gcf_orden], [gcf_usuario_grabacion], [gcf_fecha_grabacion], [gcf_usuario_modificacion], [gcf_fecha_modificacion])
   SELECT DISTINCT 0,fac_grupo,null,NULL, @identity,0,@user,GETDATE(),NULL,NULL 
    FROM eva.feq_factores_esquema
         JOIN eva.esq_esquemas ON esq_esquemas.esq_codigo = feq_factores_esquema.feq_codesq
         JOIN eva.fac_factores ON fac_factores.fac_codigo = feq_factores_esquema.feq_codfac
         join eor.pue_puestos on pue_codigo = esq_codpue
   WHERE esq_codpev = @codpev
         and pue_codncc = @esquema_codigo
   --select * FROM gen.gcf_grupo_campo_dinamico WHERE gcf_codfdi = @identity

   INSERT [gen].[gcf_grupo_campo_dinamico]([gcf_peso], [gcf_nombre], [gcf_descripcion], [gcf_codgcf], [gcf_codfdi], [gcf_orden], [gcf_usuario_grabacion], [gcf_fecha_grabacion], [gcf_usuario_modificacion], [gcf_fecha_modificacion])
   SELECT feq_peso,fac_nombre,fac_descripcion,
   (SELECT gcf_codigo FROM gen.gcf_grupo_campo_dinamico WHERE gcf_nombre = fac_grupo AND gcf_codfdi = @identity),
   @identity,ROW_NUMBER() OVER(ORDER BY fac_nombre),@user,GETDATE(),NULL,NULL
   from (
   select distinct feq_peso,fac_grupo,fac_descripcion,fac_nombre
   FROM eva.feq_factores_esquema
         JOIN eva.esq_esquemas ON esq_esquemas.esq_codigo = feq_factores_esquema.feq_codesq
         JOIN eva.fac_factores ON fac_factores.fac_codigo = feq_factores_esquema.feq_codfac
         JOIN eva.rub_rubros ON rub_rubros.rub_codfac = fac_factores.fac_codigo
         join eor.pue_puestos on pue_codigo = esq_codpue
   WHERE esq_codpev = @codpev
         and pue_codncc = @esquema_codigo
   )a

   --select * FROM gen.gcf_grupo_campo_dinamico WHERE gcf_codfdi = @identity
   --alter table gen.gcf_grupo_campo_dinamico add gcf_nombre_rubro varchar(500)

   INSERT [gen].[cfd_campo_form_dinamico]([cfd_fieldname], [cfd_prompt_loc_key], [cfd_descripcion_loc_key], [cfd_orden], [cfd_requerido], [cfd_regex], [cfd_regex_msg_loc_key], 
   [cfd_peso], [cfd_inicio_rango_escala], [cfd_loc_key_ini_rango_esc], [cfd_fin_rango_escala], [cfd_loc_key_fin_rango_esc], [cfd_codgcf], [cfd_codfdi], [cfd_tipo_control], [cfd_codvli], [cfd_usuario_grabacion], [cfd_fecha_grabacion], [cfd_usuario_modificacion], [cfd_fecha_modificacion],
   [cfd_codrub])
   SELECT ROW_NUMBER() OVER(ORDER BY gcf_codigo),
         gra_descripcion,NULL,ROW_NUMBER() OVER(ORDER BY gcf_codigo),0,NULL,NULL,0,NULL,NULL,NULL,NULL,
         gcf_codigo,gcf_codfdi,'Radio',NULL,@user,GETDATE(),NULL,NULL,rub_codigo
   from
   (
   select rub_descripcion gra_descripcion,gcf_codigo,gcf_codfdi ,rub_codigo
   FROM gen.gcf_grupo_campo_dinamico
         JOIN eva.fac_factores ON fac_nombre = gcf_nombre
         JOIN eva.rub_rubros ON rub_codfac = fac_codigo
         --JOIN eva.gra_grados ON gra_grados.gra_codrub = rub_rubros.rub_codigo
   WHERE gcf_codfdi = @identity
         AND gcf_nombre NOT IN (SELECT DISTINCT fac_grupo FROM  eva.fac_factores WHERE fac_codpev = @codpev)
   )a
   --select * FROM [gen].[cfd_campo_form_dinamico] WHERE cfd_codfdi = @identity order by cfd_codgcf

   --declare @rubro varchar(1000),@cfd_codigo int

   --declare c_rub cursor for
   --select distinct rub_descripcion,cfd_codigo
   -- from eva.rub_rubros
   --     join gen.cfd_campo_form_dinamico on cfd_prompt_loc_key = rub_descripcion
   --where cfd_codfdi = @identity

   --open c_rub

   --fetch next from c_rub into @rubro,@cfd_codigo

   --while @@FETCH_STATUS = 0
   --begin

         INSERT [gen].[vcd_valores_campos_din]([vcd_nombre_opcion_loc_key], [vcd_nota], [vcd_codcfd])
         select gra_descripcion,gra_codigo,cfd_codigo
         from [gen].[cfd_campo_form_dinamico]
                join eva.rub_rubros on rub_codigo = cfd_codrub
                join eva.gra_grados on gra_codrub = rub_codigo
         where cfd_codfdi = @identity

--           fetch next from c_rub into @rubro,@cfd_codigo
--     end
--     close c_rub
--     deallocate c_rub

   fetch next from c_cursor into @esquema_codigo
end 
close c_cursor
deallocate c_cursor

   --select *
   -- FROM gen.vcd_valores_campos_din WHERE vcd_codcfd IN (SELECT cfd_codigo FROM [gen].    [cfd_campo_form_dinamico] WHERE cfd_codfdi = @identity)
   --ORDER BY vcd_codcfd

END

Alguien me puede ayudar a saber a que se debe ese error.

asked 12 Jul '16, 09:54

Josue%20Mancilla's gravatar image

Josue Mancilla
(suspended)
accept rate: 42%

edited 14 Jul '16, 09:50

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635


El error en el código fuente se da porque los datos no están en el formato esperado.

var campo = eva.EsquemaEvaluacion.FormularioDinamico.Campos
            .First(c => c.Fieldname == grado.RubroEvaluacion.Codigo.ToString());

Está tratando de obtener un campo del formulario dinámico cuyo FieldName sea igual al código del Rubro de Evaluación.

Es un problema de tu SP que no genera los datos en el formato esperado por el código fuente.

Porque no guardas los datos de tu generación en SP y lo comparas con la generación hecha a mano desde la pantalla, para que veas las diferencias.

link

answered 14 Jul '16, 09:49

Fernando%20Paz's gravatar image

Fernando Paz ♦♦
17.3k81635
accept rate: 51%

Gracias Fernando, era en el insert a la tabla [gen].[cfd_campo_form_dinamico] en donde el campo cfd_fieldname tenia que ir el codigo del rubro y yo puse un row_number().

(14 Jul '16, 16:20) Josue Mancilla Josue%20Mancilla'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:

×51
×2

Asked: 12 Jul '16, 09:54

Seen: 1,063 times

Last updated: 14 Jul '16, 16:20

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