none
Como subir tiempo de ejecucion de un tableAdapter RRS feed

  • Pregunta

  • Buenas a todos, les explico mi pequeño gran problema.

    Lo que pasa es que tengo un procedimiento almacenado en SQL Server 2008 R2 que tarda en ejecutarse mas o menos 2 minutos por la cantidad de registros, mediante el Server Explorer de Visual Studio cree un dataTable y un tableAdapter uso estos para generar un reporte  .rdlc que lo muestro en un report viewer, pero al querer mostrar el reporte me lanza el siguiente error :

    • An error occurred during local report processing.
      • An error has occurred during report processing.
        • Exception has been thrown by the target of an invocation.
          • Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

     He buscado por internet y he averiguado que el tiempo maximo de ejecucion de un dataTable es de 30 segundos, he encontrado varios foros que dicen como se puede subir el tiempo de ejecucion, el que me parece mas interesante es este http://icodesnip.com/snippet/vbnet/set-timeout-to-a-reportviewer que esta en VB yo lo pase a C# y me quedo asi :

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Diagnostics;
    using System.Data.Odbc;

    namespace nombreDataSetTableAdapters
    {
        public class nombretableadapterTableAdapter
        {
            public string ConnectionString
            {
                get { return this.Connection.ConnectionString; }
                set { this.Connection.ConnectionString = value; }
            }

            public void SetCommandTimeout(int timeout)
            {
                if (this.Adapter.InsertCommand != null)
                {
                    this.Adapter.InsertCommand.CommandTimeout = timeout;
                }
                if (this.Adapter.DeleteCommand != null)
                {
                    this.Adapter.DeleteCommand.CommandTimeout = timeout;
                }
                if (this.Adapter.UpdateCommand != null)
                {
                    this.Adapter.UpdateCommand.CommandTimeout = timeout;
                }
                for (int i = 0; i <= this.CommandCollection.Length - 1; i++)
                {
                    if (this.CommandCollection(i) != null)
                    {
                        this.CommandCollection(i).CommandTimeout = timeout;
                    }
                }
            }
        }
    }

    Me marca errores donde puse negritas y subrayado, no se que pueda ser ya que no dice nada al respecto el el foro de donde saque el codigo.

    Si ustedes tienen una solucion para este problema o saben cual es el error en el codigo les agradeceria su ayuda. 


    Diego Calderon
    lunes, 26 de septiembre de 2011 15:17