7 jun
2017

El arreglo de entrada de tu tabla es demasiado largo, Datatable y C#

Mi problema es que tengo un datatable de 48 posiciones que seria el siguiente:

    #region tablaRectificacionesImportaciones


        dt_rectificacionesImportaciones.Columns.AddRange(new DataColumn[48] 
          { 
            new DataColumn("idPedimento", typeof(string)),
            new DataColumn("fecha", typeof(string)),
            new DataColumn("fechaVencimiento",typeof(string)),
            new DataColumn("idCveDocEntrada",typeof(string)),
            new DataColumn("idTipoCambio",typeof(string)),
            new DataColumn("seguros",typeof(string)),
            new DataColumn("fletes",typeof(string)),
            new DataColumn("embalajes",typeof(string)),
            new DataColumn("otros",typeof(string)),
            new DataColumn("valorComercial",typeof(string)),//10
            new DataColumn("valorAduana",typeof(string)),
            new DataColumn("observacion",typeof(string)),
            new DataColumn("dta",typeof(string)),
            new DataColumn("prevalidacion",typeof(string)),
            new DataColumn("factura",typeof(string)),
            new DataColumn("cove",typeof(string)),
            new DataColumn("fechaFactura",typeof(string)),
            new DataColumn("idProveedor",typeof(string)),
            new DataColumn("icoterm",typeof(string)),
            new DataColumn("idMoneda",typeof(string)),//10
            new DataColumn("factorMoneda",typeof(string)),
            new DataColumn("numParte",typeof(string)),
            new DataColumn("idTipoBien",typeof(string)),
            new DataColumn("secuencia",typeof(string)),
            new DataColumn("idFraccion",typeof(string)),
            new DataColumn("idPaisVendedor",typeof(string)),
            new DataColumn("idPaisOrigen",typeof(string)),
            new DataColumn("idUnidadComercial",typeof(string)),
            new DataColumn("cantidad",typeof(string)),
            new DataColumn("precioUnitario",typeof(string)),//10
            new DataColumn("valorAduanaPartida",typeof(string)),
            new DataColumn("idTasa",typeof(string)),
            new DataColumn("preferencia",typeof(string)),
            new DataColumn("idForPago",typeof(string)),
            new DataColumn("idForPagoIVA",typeof(string)),
            new DataColumn("IVA",typeof(string)),
            new DataColumn("pedimentoRectificado",typeof(string)),
            new DataColumn("descargado",typeof(string)),
            new DataColumn("fechaIngreso",typeof(string)),
            new DataColumn("fechaActualizacion",typeof(string)),//10
            new DataColumn("idUsuario",typeof(string)),
            new DataColumn("ipActualizacion",typeof(string)),
            new DataColumn("falta",typeof(string)),
            new DataColumn("cantidadUMT",typeof(string)),
            new DataColumn("iva_f",typeof(string)),
            new DataColumn("fechaRemesa",typeof(string)),//6
            new DataColumn("valorAduana_f",typeof(string)),
            new DataColumn("idEmpresa",typeof(string)) 

          });

        #endregion

Tambien en una parte de mi codigo relleno eso tabla de la siguiente forma:

            //Se recorre la lista lstTablaRectificadoImpo para llenar la tabla dt_rectificacionesImportaciones
            foreach (TablaRectificacion tblRetificaImpo in lstTablaRectificadoImpo)
            {
                dt_rectificacionesImportaciones.Rows.Add(tblRetificaImpo.IdPedimentoOriginal, tblRetificaImpo.Fecha, "", tblRetificaImpo.IdCveDoc, tblRetificaImpo.IdTipoCambio,
                            tblRetificaImpo.Seguros, tblRetificaImpo.Fletes, tblRetificaImpo.Embalajes, tblRetificaImpo.Otros, tblRetificaImpo.ValorComercialME,
                            tblRetificaImpo.ValorAduana, tblRetificaImpo.Observacion, tblRetificaImpo.Dta, tblRetificaImpo.Prevalidacion, tblRetificaImpo.Factura,
                            tblRetificaImpo.Cove, tblRetificaImpo.FechaFactura, tblRetificaImpo.IdProveedor, tblRetificaImpo.Icoterm, tblRetificaImpo.IdMoneda,
                            tblRetificaImpo.FactorMoneda, tblRetificaImpo.NumParte, tblRetificaImpo.IdTipoBien, tblRetificaImpo.Secuencia, tblRetificaImpo.IdFraccion,
                            tblRetificaImpo.IdPaisVendedor, tblRetificaImpo.IdPaisOrigen, tblRetificaImpo.IdUnidadComercial, tblRetificaImpo.Cantidad, tblRetificaImpo.PrecioUnitario,
                            "", tblRetificaImpo.IdTasa, tblRetificaImpo.Preferencia, tblRetificaImpo.IdForPago, tblRetificaImpo.IdForPagoIVA,
                            tblRetificaImpo.IvaFrac, originalRectificado, "", tblRetificaImpo.FechaIngreso, tblRetificaImpo.FechaActualizacion,
                            tblRetificaImpo.IdUsuario, tblRetificaImpo.IpActualizacion, "", "", tblRetificaImpo.IvaFrac,
                            "", tblRetificaImpo.ValorAduana_f,idEmp);
            }

Por lo que tengo entendido este error se debe a que estoy tratando de meter mas datos de los que inicialmente defini en mi tabla, pero creo que ese no es el problema real, ya que si define los espacios correctos, de hecho el problema surgio al agregar este valor a la tabla:

empresa

Si yo quito ese valor en mi for each sale lo siguiente al hacer un debug.

introducir la descripción de la imagen aquí

Si me crea la tabla con mi columna pero le pone por defecto un cero y si le agrego el valor que deberia ir en esa posicion me sale el siguiente error:

Input array is longer than the columns in this table

No se a que se deba si mi columna existe pero al agregar un valor a dicha columna ya no quiere funcionar.

COMENTARIOS

DEJA TU COMENTARIO

© 2017 website by Rubit Corporation