Estimados compañeros,
Se creo una entidad adicional con 7 campos tipo texto y se presento el problema, que al editar un registro da el mensaje de NOT FOUND y se detecto que este problema da, cuando llega a un máximo de caracteres de todos los campos, al ejecutar el SP (Proc. Select 1 Registro) si trae toda la información, no la corta, este es el SP:
ALTER PROCEDURE [eva].[sed_selecciona_entrevista_desempenio] ( @codiea INT -- Código de Instancia Entidad Adicional
)
AS
BEGIN
/*
* Debe retornar todos los campos fijos de la Entidad Adicional
* y un XML con la información de los campos de Formulario Dinámico
*/
SELECT iea_codemp_sujeto,
'<DocumentElement>
<ede>
<ede_codpev>'+ Convert(varchar,ede_codpev) +'</ede_codpev>
<ede_codpev_Texto>' + Convert( varchar, day(pev_fecha_del)) +'/' +gen.nombre_mes(MONTH(pev_fecha_del)) + '/' + Convert(varchar,YEAR(pev_fecha_del)) +' - '+ Convert(varchar, day(pev_fecha_al))+ '/' + gen.nombre_mes(MONTH(pev_fecha_al)) + '/' +Convert(varchar,Year(pev_fecha_al))
+ '</ede_codpev_Texto>
<ede_logros>' + ede_logros
+ '</ede_logros>
<ede_deficiencia>' + ede_deficiencia
+ '</ede_deficiencia>
<ede_planes_concretos>' + ede_planes_concretos
+ '</ede_planes_concretos>
<ede_incorporar_valores>' + ede_incorporar_valores
+ '</ede_incorporar_valores>
<ede_mas_gusta>' + ede_mas_gusta
+ '</ede_mas_gusta>
<ede_menos_gusta>' + ede_menos_gusta
+ '</ede_menos_gusta>
<ede_visualiza>' + ede_visualiza
+ '</ede_visualiza>
<ede_codcde>' + case when ede_codcde is null then '' else Convert(varchar,ede_codcde) end
+ '</ede_codcde>
<ede_codcde_Texto>'+ case when ede_codcde is null then '' else cde_descripcion end
+ '</ede_codcde_Texto>
</ede>
</DocumentElement>' iea_data_formulario
FROM eva.ede_entrevista_desempenio
JOIN sve.iea_inst_entidad_adic ON iea_codigo = ede_codiea
join eva.pev_periodos on pev_codigo = ede_codpev
left join eva.cde_codigos_desempenio on cde_codigo = ede_codcde
WHERE ede_codiea = @codiea;
END;
Se realizo la prueba de quitarle texto a los campos desde la base de datos a modo que si dejara abrir y si lo permitio.
Pero al agregar un texto mas, da el mensaje de NOT FOUND.
EL MENSAJE DE NOT FOUND se muestra al EDITAR un registro de la entidad adicional con una cantidad grande de texto, de todos los campos.
ERROR DE ELMAH:
System.Xml.XmlException: Unexpected end of file has occurred. The following elements are not closed: DocumentElement. Line 16, position 29.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.ThrowUnclosedElements()
at System.Xml.XmlTextReaderImpl.ParseEndElement()
at System.Xml.XmlTextReaderImpl.ParseElementContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlTextReader.Read()
at System.Data.DataTextReader.Read()
at System.Data.XmlDataLoader.LoadTable(DataTable table, Boolean isNested)
at System.Data.XmlDataLoader.LoadData(XmlReader reader)
at System.Data.DataTable.ReadXml(XmlReader reader, Boolean denyResolving)
at System.Data.DataTable.ReadXml(TextReader reader)
at Aseinfo.VH4.Solicitudes.Controllers.InstanciaEntidadAdicionalController.BuildTableFormulario(InstanciaEntidadAdicional entidadAdicional) in C:\vh4\VH4\Solicitudes\Controllers\InstanciaEntidadAdicionalController.cs:line 479
at Aseinfo.VH4.Solicitudes.Controllers.InstanciaEntidadAdicionalController.OnFormularioDinamicoReadingData(Object sender, FormularioDinamicoDataReadingEventArgs e) in C:\vh4\VH4\Solicitudes\Controllers\InstanciaEntidadAdicionalController.cs:line 101
at Aseinfo.VH4.General.Services.FormularioDinamicoService.OnFormularioDinamicoReadingData(FormularioDinamicoDataReadingEventArgs e) in C:\work\a3e0cbded2a6d4b3\VH4\General\Services\FormulariosDinamicos\FormularioDinamicoService.cs:line 30
at Aseinfo.VH4.General.Services.FormularioDinamicoService.GetFormularioDinamicoDataViewModel(Int32 codigoInstancia, List`1 parametros) in C:\work\a3e0cbded2a6d4b3\VH4\General\Services\FormulariosDinamicos\FormularioDinamicoService.cs:line 115
at Aseinfo.VH4.General.Controllers.FormularioDinamicoControllerBase.GetFormulario(Int32 codigoFormulario, Nullable`1 codigoInstanciaFormulario, List`1 parametros, List`1 parametrosValueLists, Boolean enAnalisis, Boolean readonly, String prefixElementsName, String actionName, String controllerName, Dictionary`2 routeValueDictionary, Boolean mostrarParaImpresion) in C:\vh4\VH4\General\Controllers\FormularioDinamicoControllerBase.cs:line 71
at Aseinfo.VH4.Solicitudes.Controllers.InstanciaEntidadAdicionalController.GetFormulario(Int32 codigoFormulario, Nullable`1 codigoInstanciaFormulario, List`1 parametros, List`1 parametrosValueLists, Boolean enAnalisis, Boolean readonly, String prefixElementsName, String actionName, String controllerName, Dictionary`2 routeValueDictionary, Boolean mostrarParaImpresion) in C:\vh4\VH4\Solicitudes\Controllers\InstanciaEntidadAdicionalController.cs:line 753
at lambda_method(Closure , ControllerBase , Object[] )
at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult)
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<>c__DisplayClass2b. <BeginInvokeAction>b__1c()
at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.
<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
¿Podrías documentar exactamente donde se muestra el error?
Revisa tambien si existe alguna descripcion del error en ELMAH, para adjuntarla a la pregunta.
Ya fue agregado el error que se muestra en el elmah.axd, este error se muestra cuando se abre de una entidad adicional un registro que tiene varias lineas de texto dentro de todos los campos de esa entidad adicional.
Si el campo que agregas tiene valor nulo, eso puede provocar el resultado errático. Seria de agregar código para manejar el nulo.
Es correcto, en el formulario de igual manera esta validado que todos los campos sean obligatorios y en este escenario de error todos los campos van con datos.