Foros del Web » Programación para mayores de 30 ;) » .NET »

[SOLUCIONADO] Operación no válida dado el estado actual del objeto

Estas en el tema de Operación no válida dado el estado actual del objeto en el foro de .NET en Foros del Web. Hola gente del Foro, Tengo un inconveniente realizando al exportarla a un archivo plano. Ejecuto la consulta de acuerdo al valor que tomo de un ...
  #1 (permalink)  
Antiguo 02/03/2015, 11:48
 
Fecha de Ingreso: abril-2008
Mensajes: 112
Antigüedad: 16 años
Puntos: 0
Operación no válida dado el estado actual del objeto

Hola gente del Foro,

Tengo un inconveniente realizando al exportarla a un archivo plano.
Ejecuto la consulta de acuerdo al valor que tomo de un dropdownlist.
Como algunos resultados devuelven muchisimos archivos entonces solo escojo los primeros 1000 (de lo contrario el usuario se cansaria de paginar tanto)

Código:
private void ConsultaCajas()
    {
        using (OracleConnection oraCon = new OracleConnection(conn))
        {
            using (OracleCommand cmd = new OracleCommand())
            {
                cmd.CommandText = "SELECT * FROM V_DANEC_CAJAS " +
                    "WHERE CAJA_CODIGO = " + "'" + ddlCodCaj.Text + "' " +
                    "AND ROWNUM <= 1000";
                cmd.Connection = oraCon;
                oraCon.Open();

                OracleDataAdapter DACajas = new OracleDataAdapter(cmd);
                DACajas.Fill(dt);

                if (dt.Rows.Count != 0)
                {
                    gvwCajas.DataSource = dt;
                    gvwCajas.DataBind();

                    lblMensaje.Text = dt.Rows.Count.ToString() + " Encontrados";
                    contFilas = dt.Rows.Count;

                    if (contFilas > 1000)
                    {
                        lblMensaje2.Text = "(se muestran 1000 primeros)";
                    }

                    oraCon.Close();
                }

            }
        }
    }
El usuario debe poder exportar los archivos a un archivo plano, y es ahi cuando aprovecho para cargar ahi si los registros completos de la consulta:

Código:
//CONSULTAR TODO: A DIFERENCIA DE CONSULTAR TOP50 CONSULTAMOS TODO PARA EXPORTAR A EXCEL
    private void ArchivoPlanoCajas()
    {
        using (OracleConnection OraCon = new OracleConnection(conn))
        {
            using (OracleCommand cmd = new OracleCommand())
            {
                cmd.CommandText = "SELECT * FROM V_DANEC_CAJAS " +
                    "WHERE CAJA_CODIGO = " + "'" + ddlCodCaj.Text + "' ";
                
                //try
                //{
                    OraCon.Open();
                    OracleDataAdapter odap = new OracleDataAdapter(cmd);
                    odap.Fill(dtrpt);
                    lblMensaje.Text = "";
                    lblMensaje.Text = "Exportadas TODAS las cajas correspondientes al codigo";
                    OraCon.Close();

                //}
                //catch (Exception orex)
                //{
                    //lblMensaje.Text = "";
                    //lblMensaje.Text = orex.ToString();
                //}
            }
        }
    }


    protected void generadorExcel()
    {
        HttpContext context = HttpContext.Current;
        context.Response.Clear();
        foreach (DataColumn column in dtrpt.Columns)
        {
            context.Response.Write(column.ColumnName + ";");
        }
        context.Response.Write(Environment.NewLine);
        foreach (DataRow row in dtrpt.Rows)
        {
            for (int i = 0; i < dtrpt.Columns.Count; i++)
            {
                context.Response.Write(row[i].ToString().Replace(";", string.Empty) + ";");
            }
            context.Response.Write(Environment.NewLine);
        }
        context.Response.ContentType = "text/csv";
        context.Response.AppendHeader("Content-Disposition", "attachment; filename=" + dtrpt + ddlCodCaj.Text + ".csv");
        context.Response.End();
    }
utilizo otro Data TAble, para almacenar ahi la consulta, he hecho esto otras veces y no he tenido problema, pero es la 1ra vez que trabajo con oracle, no se si deba a eso, aunque no lo creo

En fin, cuando trato de exportar la consulta a un archivo plano obtengo el siguiente error:

"Operación no válida dado el estado actual del objeto."
Detalles de la excepción: System.InvalidOperationException: Operación no válida dado el estado actual del objeto.
Y el error se marca en el DataTable correspondiente:
Línea 153: odap.Fill(dtrpt);


Si alguien tiene una pista de lo que pasa, le quedaría muy agradecido.


Saludos Cordiales.

Etiquetas: actual, dado, estado, objeto
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:47.