Foros del Web » Programando para Internet » ASPX (.net) »

[SOLUCIONADO] Problema leyendo DBF con dBase

Estas en el tema de Problema leyendo DBF con dBase en el foro de ASPX (.net) en Foros del Web. He intentado varias formas para leer mi archivo dbf, lo último que he hecho es fijar una parpeta de trabajo temporal para ver si era ...
  #1 (permalink)  
Antiguo 04/12/2013, 11:09
Usuario no validado
 
Fecha de Ingreso: abril-2010
Ubicación: La habana
Mensajes: 229
Antigüedad: 14 años, 1 mes
Puntos: 4
Problema leyendo DBF con dBase

He intentado varias formas para leer mi archivo dbf, lo último que he hecho es fijar una parpeta de trabajo temporal para ver si era que estaba basando el From para una ruta comleta y así tampoco funciona. Aquí les va el ejemplo por si pueden ver que está mal. Lo que me dice es que no se puede encontrar el objeto fulano.dbf o sea mi archivo.

Aquí les paso el método que me falla, importante señalar que los parámetros que le paso al contructor de la clase son correctos.

Código:
   private DataTable leyendoDBF()
        {
           

            OdbcConnection obdcconn = new System.Data.Odbc.OdbcConnection();
            obdcconn.ConnectionString = "Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=" + rutadbf + ";Exclusive=No; NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;"; //{Microsoft dBase Driver (*.dbf)}
            obdcconn.Open();

            string currentDir = System.IO.Directory.GetCurrentDirectory();// 
            System.IO.Directory.SetCurrentDirectory(rutadbf);//

            OdbcCommand oCmd = obdcconn.CreateCommand();
            oCmd.CommandText = @"SELECT * FROM " + archivodbf;  //"SELECT * FROM "+rutadbf + archivodbf "SELECT * FROM [" + rutadbf + archivodbf + "]"

            

            DataTable dt1 = new DataTable();
            dt1.Load(oCmd.ExecuteReader());

            System.IO.Directory.SetCurrentDirectory(currentDir);//

            obdcconn.Close();
            return dt1;
        }
Aquí la parte del constructor

Código:
  public class LeeDBF
    {
        private string archivodbf;
        private string rutadbf;

        public LeeDBF(string rutadbf, string archivodbf)
        {
            this.archivodbf = archivodbf;
            this.rutadbf = rutadbf;
        }

....
Gracias
  #2 (permalink)  
Antiguo 05/12/2013, 22:12
 
Fecha de Ingreso: noviembre-2002
Ubicación: DF
Mensajes: 1.056
Antigüedad: 21 años, 5 meses
Puntos: 37
Respuesta: Problema leyendo DBF con dBase

Ve cual es la ruta absoluta o relativa de tu dbf y es a la que debes apuntar, en modo debug revisa tambien cual es la ruta de ejecucion de la aplicacion, lo mejor quiza sea que publiques el dbf en la misma carpeta de la app o bien apuntes a la ruta directa. Otro metod quiza seria con ODBC.
  #3 (permalink)  
Antiguo 06/12/2013, 14:29
Usuario no validado
 
Fecha de Ingreso: abril-2010
Ubicación: La habana
Mensajes: 229
Antigüedad: 14 años, 1 mes
Puntos: 4
Respuesta: Problema leyendo DBF con dBase

Cita:
Iniciado por wwwmaster Ver Mensaje
Ve cual es la ruta absoluta o relativa de tu dbf y es a la que debes apuntar, en modo debug revisa tambien cual es la ruta de ejecucion de la aplicacion, lo mejor quiza sea que publiques el dbf en la misma carpeta de la app o bien apuntes a la ruta directa. Otro metod quiza seria con ODBC.
Gracias ya lo solucioné o mejor dicho busqué otra solución porque no había modo de que me viera el archivo.

Lo hice por OleDb: así quedó.

Código:
private DataTable leyendoDBF()
        {

            OleDbConnection oledbconn = new System.Data.OleDb.OleDbConnection("Provider=VFPOLEDB;Data Source=" + rutadbf + "");
                      oledbconn.Open();

            string currentDir = System.IO.Directory.GetCurrentDirectory();
            System.IO.Directory.SetCurrentDirectory(rutadbf);

            OleDbCommand oCmd = oledbconn.CreateCommand();
            oCmd.CommandText = "SELECT * FROM [" + rutadbf + archivodbf + "]"; 

            

            DataTable dt1 = new DataTable();
            dt1.Load(oCmd.ExecuteReader());

            System.IO.Directory.SetCurrentDirectory(currentDir);

            oledbconn.Close();
            return dt1;
        }

public string pSucursal
        {
            get
            {
                DataTable sucursal = new DataTable();
                sucursal = leyendoDBF();
                return sucursal.Rows[0][0].ToString();
            }
        }

        public string pSilver
        {
            get
            {
                DataTable silver = new DataTable();
                silver = leyendoDBF();
                return silver.Rows[0][3].ToString();
            }
        }

Última edición por eljuank1982; 06/12/2013 a las 14:41

Etiquetas: c#
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 16:50.