none
A field or property with the name '[Name]' was not found on the selected data source. RRS feed

  • Pregunta

  • Hola buenos días

    Estoy trabajando con una aplicación (web site) el cual recolecta información y después la muestra en unas tablas.

    Mi consulta se realiza de la siguiente manera:

    try

    {

    con.Open();

    SqlCommand selSerie = new SqlCommand("SELECT T.ROW AS fila, CONVERT(VARCHAR(10), T.[DATE], 108) AS Fecha, T.SHIFT , U.NO_SERIE , T.PERFORMED , " +

    "T.REASON , T.COMMENT , T.LEAKS , L.ROW AS Fugas, H.[DESCRIPTION]  " +

    "FROM FCH.LEAK_TEST T INNER JOIN UNITS U ON T.ID_UNIT = U.ID_UNIT LEFT JOIN FCH.LEAKS L ON T.ID_TEST = L.ID_TEST " +

    "LEFT JOIN FCH.CONNECTORS C ON L.ID_CONNECTOR = C.ID_CONNECTOR LEFT JOIN FCH.HOSES H ON C.ID_HOSE = H.ID_HOSE " +

    "WHERE T.SHIFT = '" + turno + "' and T.DATE >= '" + fecha1 + "' and T.DATE <= '" + fecha2 + "'  and T.AREA = '" + lblArea.Text + "'", con);

    adapter.SelectCommand = selSerie;

    adapter.Fill(dt);

    con.Close();

    }

    catch

    {

    con.Close();

    }

    gbDatos.DataSource = dt;

    gbDatos.DataBind();

    el gridview lo lleno de la siguiente manera:

    <Columns>

    <asp:BoundField DataField="fila"HeaderText="#" />

    <asp:BoundField DataField="Fecha"HeaderText="Hora"/>

    <asp:BoundField DataField="SHIFT"HeaderText="Turno"/>

    <asp:BoundField DataField="NO_SERIE"HeaderText="Unidad"/>

    <asp:BoundField DataField="PERFORMED"HeaderText="¿Realizada?"/>

    <asp:BoundField DataField="REASON"HeaderText="Motivo"/>

    <asp:BoundField DataField="COMMENT"HeaderText="Otra Causa" />

    <asp:BoundField DataField="LEAKS"HeaderText="¿Fugó?"/>

           <asp:BoundFieldDataField="Fugas"HeaderText="#Fuga"/>

    <asp:BoundField DataField="DESCRIPTION"HeaderText="Manguera" />

    </Columns>

    Mi problema es que la aplicación funciona bien, y de pronto en algún momento arroja el error y después vuelve a funcionar sin ningún problema.

    Error:

    System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.Web.HttpException: A field or property with the name 'fila' was not found on the selected data source. at System.Web.UI.WebControls.BoundField.GetValue(Control controlContainer) at System.Web.UI.WebControls.BoundField.OnDataBindField(Object sender, EventArgs e) at System.Web.UI.Control.OnDataBinding(EventArgs e) at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.Control.DataBind() at System.Web.UI.Control.DataBindChildren() at System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) at System.Web.UI.Control.DataBind() at System.Web.UI.WebControls.GridView.CreateRow(Int32 rowIndex, Int32 dataSourceIndex, DataControlRowType rowType, DataControlRowState rowState, Boolean dataBind, Object dataItem, DataControlField[] fields, TableRowCollection rows, PagedDataSource pagedDataSource) at System.Web.UI.WebControls.GridView.CreateChildControls(IEnumerable dataSource, Boolean dataBinding) at System.Web.UI.WebControls.CompositeDataBoundControl.PerformDataBinding(IEnumerable data) at System.Web.UI.WebControls.GridView.PerformDataBinding(IEnumerable data) at System.Web.UI.WebControls.DataBoundControl.OnDataSourceViewSelectCallback(IEnumerable data) at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback) at System.Web.UI.WebControls.DataBoundControl.PerformSelect() at System.Web.UI.WebControls.BaseDataBoundControl.DataBind() at System.Web.UI.WebControls.GridView.DataBind() at Default.mostrarPruebas() at Default.Page_Load(Object sender, EventArgs e) at System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) at System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) at System.Web.UI.Control.OnLoad(EventArgs e) at System.Web.UI.Control.LoadRecursive() at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) --- End of inner exception stack trace --- at System.Web.UI.Page.HandleError(Exception e) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) at System.Web.UI.Page.ProcessRequest() at System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) at System.Web.UI.Page.ProcessRequest(HttpContext context) at ASP.member_default_aspx.ProcessRequest(HttpContext context) in c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\assy_leaks_fch\9ebfb06e\3b761a1e\App_Web_jlkbn42c.0.cs:line 0 at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)


    • Editado Hekate91 miércoles, 10 de septiembre de 2014 14:44
    miércoles, 10 de septiembre de 2014 14:40

Respuestas

  • hola

    la verdad esta bastante raro

    lo que aconsejaria es que veas de poner algun trace a un archivo dentro del metodo mostrarPruebas() para que loguee a un archivo cual es la query que esta ejecutando cuando falla

    digo en el catch del error logueas en un archivo de texto el error y el sql que ejecuto cuando fallo, asi podrias ver cuando falla que esta sucediendo y si la query no cambio

    porque la verdad salvo por los parametros no veo algo incorrecto

    ---

    ademas una recomendacion porque no instancia el SqlAdapter dentro del la funcion, porque alli veo que usas "adapter" pero no se ve de donde sale

    usa

    SqlDataAdapter adapter = new SqlDataAdpater(selSerie);

    instancias los objetos de conexion local en la funciona

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 10 de septiembre de 2014 16:56

Todas las respuestas

  • hola

    lo primero que puedo comentar es porque no usas parametros, concatener en un string los valores no es aconsejable

    los filtros en la query deberias asignarlos por medio de la coleccion Parameters del command

    ----

    mas alla de los parametro veo que el select devuelve un campo ce nombre "fila", pero inspeccionaste el datatable?

    si pones un breakpoint en el codigo y pasas el mouse por sobre dt (por supuesto despues de realizar el Fill()) puede ver que este ese campo definido

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 10 de septiembre de 2014 15:02
  • Gracias, hare lo de los parametros.

    En cuanto a lo otro, aun siendo ese el problema es posible que este funcionando y en algún momento me mande el error? porque es lo que está pasando, la aplicación estuvo funcionando bien una semana y de repente ayer me reportaron que mandaba un error, pero enseguida a los 10 min (aprox) funciono de nuevo sin problemas, y está corriendo bien el programa desde ayer (sin errores).

    miércoles, 10 de septiembre de 2014 15:34
  • hola

    la verdad es bastante raro

    validaste si ese grid no se este asignando un datasource diferente, quizas en algun accion se asigne la respuesta de otra query por eso falle

    quizas ante cierta condicion cambie el sql que ejecutas

    cuando falla el StackTrace del exception que dice ? alli te informaria el camino de los metodos que generaron el problema

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 10 de septiembre de 2014 15:41
  • Muchas gracias por tus comentarios Leandro

    Efectivamente tambien me parece bastante raro.

    Ya revise lo que comentas de que el sql ejecutado pudiera cambiar en algun momento, pero no manipulo ese grid desde ningun otro metodo, el "camino" de metodos que me genera ese error es al momento que el load manda llamar por primera vez ese metodo el cual hago asi:

    //Solo la primera vez cargo el grid, después el método se llama según la acción realizada\\

    if (!IsPostBack)

    {

    mostrarPruebas();

    }

    La solución que eh implementado de momento ha sido colocar un try catch al momento de llenar la grid y en caso de que genere error que intente hacer de nuevo el método.

    try

    {

    gbDatos.DataSource = dt;

    gbDatos.DataBind();

    }

    catch

    {

    mostrarPruebas();

    }

    miércoles, 10 de septiembre de 2014 16:20
  • hola

    la verdad esta bastante raro

    lo que aconsejaria es que veas de poner algun trace a un archivo dentro del metodo mostrarPruebas() para que loguee a un archivo cual es la query que esta ejecutando cuando falla

    digo en el catch del error logueas en un archivo de texto el error y el sql que ejecuto cuando fallo, asi podrias ver cuando falla que esta sucediendo y si la query no cambio

    porque la verdad salvo por los parametros no veo algo incorrecto

    ---

    ademas una recomendacion porque no instancia el SqlAdapter dentro del la funcion, porque alli veo que usas "adapter" pero no se ve de donde sale

    usa

    SqlDataAdapter adapter = new SqlDataAdpater(selSerie);

    instancias los objetos de conexion local en la funciona

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 10 de septiembre de 2014 16:56