none
leer dbf que tiene campos numericos rellenos con asteriscos RRS feed

  • Pregunta

  • tengo unos dbf's de foxpro que tienen campos numericos y algunos estan rellenos con asteriscos

    esto se produce cuando se trata de rellenar con datos que superan el tamaño del campo receptor

    cuando trato de leer el dbf en un dataset me da error al tratar de leer el campo con asteriscos en el campo numerico del dataset

    como podria leer como texto todo el dbf y luego analizarlo para buscar corregirlo o eliminar los registros con errores

     using (OleDbDataAdapter adapter = new OleDbDataAdapter(awQuery.ToString(), conn))
                {
                    adapter.Fill(ds);
                }

    private static OleDbConnection ConnectToDBF(string origen)
            {
                try
                {
                    OleDbConnection conn = new OleDbConnection();
                    conn.ConnectionString = "Provider=vfpoledb;Data Source=" + origen + "; Collating Sequence=machine;";
                    //conn.ConnectionString = "Provider=vfpoledb;Data Source=" + origen + ".dbf; Collating Sequence=machine;";
                    //conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + origen + "\\; Extended Properties=dBASE IV;User ID=Admin;Password=;";
                    return conn;
                }
                catch (Exception ex)
                {
                    muestroError(ex);
                    return null;
                }
            }


    Hugo González (Macgyber)

    miércoles, 14 de noviembre de 2018 10:09

Respuestas

Todas las respuestas

  • intenta usando el

    Provider=Microsoft.ACE.OLEDB.12.0

    https://www.connectionstrings.com/dbf-foxpro/

    quizas con este no tengas ese problema

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 14 de noviembre de 2018 11:58
  • Hola, puedes indicarnos qué mensaje de error estás obteniendo? gracias

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    miércoles, 14 de noviembre de 2018 12:39
    Moderador
  • Este es el error que se produce: Se produjo una excepción de tipo 'System.InvalidOperationException' en System.Data.dll pero no se controló en el código del usuario Información adicional: The provider could not determine the Decimal value. For example, the row was just created, the default for the Decimal column was not available, and the consumer had not yet set a new Decimal value. Observando el archivo dbf con ztreewin y buscando "*****" encuentro que en muchos campos numericos 9 enteros y 2 decimales estan rellenos de asteriscos

    Hugo González (Macgyber)

    jueves, 15 de noviembre de 2018 6:53
  • Hola, prueba esta sentencia para recuperar los datos numericos

    SELECT VAL(STR(SaleAmt)) as SaleAmt FROM MyTable

    Convertir a String y luego a numerico


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    jueves, 15 de noviembre de 2018 7:26
    Moderador
  • También prueba a usar el proveedor Microsoft OLE DB Provider for Visual FoxPro 9.0 y en la acadena de conexión establecer Provider=VFPOLEDB.1


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    jueves, 15 de noviembre de 2018 7:30
    Moderador