none
Problemas al importar datos de excel a base de datos RRS feed

  • Pregunta

  • Buenas noches.

    Tengo una pequeña duda , tengo un pequeño problema al importar datos desde un archivo excel , el cual si lo importa a traves del programa en una columna me resta 0,01 como se ve en la imagen la columna señalada y posteriormente la imagen del excel


    Aqui adjunto la imagen del cuadro de excel con el valor que realmente deberia importarse

    Entonces viene la gran pregunta cual es el problema que causa este error, porque si copio los datos del excel directamente en la base de datos se copia tal cual sin problema alguno

    Adjunto el código con el cual realizo la importación de datos de excel a la bd.

      try
                    {
                        cmdselect = new OleDbCommand("SELECT numRuc,anio,tipIdRet,idRet,apellidoTrab,nombreTrab,estab,residenciaTrab,paisResidencia,aplicaConvenio" +
          ",tipoTrabajDiscap,porcentajeDiscap,tipIdDiscap,idDiscap,suelSal,sobSuelComRemu,partUtil,intGrabGen,impRentEmpl,decimTer,decimCuar,fondoReserva,salarioDigno,otrosIngRenGrav" +
          ",ingGravConEsteEmpl,sisSalNet,apoPerIess,aporPerIessConOtrosEmpls,deducVivienda,deducSalud,deducEduca,deducAliement,deducVestim,exoDiscap,exoTerEd,basImp,impRentCaus,valRetAsuOtrosEmpls" +
          ",valImpAsuEsteEmpl,valRet FROM [RDEP$]", conorigen);
                        OleDbDataAdapter adaptador = new OleDbDataAdapter();
                        adaptador.SelectCommand = cmdselect;
                        DataSet ds = new DataSet();
                        adaptador.Fill(ds, "TBL_RDEP");
                        string connstring = ConfigurationManager.ConnectionStrings["Conexion"].ToString();
                        using (SqlConnection conn = new SqlConnection(connstring))
                        {
                            conn.Open();
                            SqlBulkCopy importar = new SqlBulkCopy(conn);
                            importar.DestinationTableName = "TBL_RDEP";
                            importar.WriteToServer(ds.Tables[0]);
                            MessageBox.Show("Datos Importados Correctamente...!!!", "DIMM", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            btnimportar.Enabled = false;
                            Cargar();
                        }
                    }
                    catch (OleDbException ex)
                    {
                        MessageBox.Show("ERROR: " + ex.Message, "ERROR!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    catch (InvalidOperationException ex)
                    {
                        

    De antemano agradezco sus respuestas.

    Saludos Cordiales.

    • Cambiado Joyce_AC miércoles, 15 de febrero de 2017 17:55
    martes, 14 de febrero de 2017 3:47

Todas las respuestas

  • Hola, una consulta en el excel que formato tienen las celdas suelSal, y aplicas algún formato especial en la grilla, porque aparentemente en el excel la separación de decimales es una coma y en el datagridview es un punto,normalmente deberían ser iguales por la configuración regional.

    Si la respuesta te fue útil vótala como tal,y si fue respuesta márcala. Solo dejo en el foro mis post si fueron útiles , de lo contrario y por mantener el orden los borro. Saludos. Lima-Perú.


    • Editado Augusto1982 martes, 14 de febrero de 2017 5:47
    martes, 14 de febrero de 2017 5:45
  • hola

    Puede deberse a un tema con el redondeo del de la celda, puedes validar si esa tiene aplicado algun formato, quizas solo esta limitado a dos decimales por eso visualizas un 19,20

    pero al acceder desde codigo el redondeo es distinto

    valida que en el excel no tiene aplicado un formato que redondea el valor a dos decimales

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    martes, 14 de febrero de 2017 12:53
  • hola

    Puede deberse a un tema con el redondeo del de la celda, puedes validar si esa tiene aplicado algun formato, quizas solo esta limitado a dos decimales por eso visualizas un 19,20

    pero al acceder desde codigo el redondeo es distinto

    valida que en el excel no tiene aplicado un formato que redondea el valor a dos decimales

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina


    Buenos dias.

    Cuando coloco un punto de interrupción en el dataset y visualizo que carga me arroja que los datos estan correctos , el tipo de formato que tengo definido es de tipo numero en todas las columnas, lo que parece raro es porque en el dataset me visualiza el valor correcto y al verlo en la base el valor menos 0.01 :/

    martes, 14 de febrero de 2017 14:13