none
Problema al crear un DBF RRS feed

  • Pregunta

  • Hola, tengo un problema al crear una tabla dentro de un contenedor DBC de foxpro desde una aplicación de Windows Forms en c#.
    Estoy usando el proveedor oledb y el problema que tengo es que creo la tabla correctamente dentro del DBC, pero el archivo DBF es creado en la carpeta raíz de la aplicación y no en la carpeta donde se encuentra el DBC.. porqué pasa esto? Necesito que el DBF esté en la carpeta del DBC.. espero me puedan ayudar.
    Gracias!
    lunes, 7 de diciembre de 2009 14:08

Respuestas

  • Hola, gracias por responder, al parecer encontré el problema, y es en el conector, en la versión 9.0.0.2412 la cual si no le especifico en el CREATE TABLE la ubicación del dbf, entonces me la crea en el directorio raíz de la aplicación.
    lunes, 14 de diciembre de 2009 11:12

Todas las respuestas

  • Hola. Si lo que quieres es mover el archivo a otro lugar puedes utiliar FileInfo.MoveTo. Ahora que también podrías pasarle el path entero al momento de crear tu tabla, por ejemplo, @"C:\Mis\Archivos\tabla.dbf". Otra opción, también, es que establezcas el valor del directorio actual al que deseas. Para hacer esto, establece el valor correspondiente en Environment.CurrentDirectory

    Espero te sirva, saludos. 


    Fernando Gómez
    www.fermasmas.com
    miércoles, 9 de diciembre de 2009 17:08
  • Hola, Gonzalo:

    No soy experto en bases de datos de FoxPro, pero por la prueba que acabo de realizar, la base de datos se ha creado en el directorio de la base de datos, es decir, en aquel directorio que se ha especificado en el parámetro Data Source de la cadena de conexión.

    Te dejo el ejemplo que acabo de ejecutar:

                using (OleDbConnection cnn = new OleDbConnection(
                   "Provider=vfpoledb;" +
                   "Collating Sequence=MACHINE;" +
                   "Data Source=C:\\Bases\\FoxPro\\prueba.dbc"))
                {
                    try
                    {
                        string sql =
                            "CREATE TABLE [Clientes.dbf](" +
                            "IdCliente INTEGER, " +
                            "Nombre CHARACTER (50)," +
                            "CIF CHARACTER (9)," +
                            "Domicilio CHARACTER (30)," +
                            "CPostal INTEGER," +
                            "Localidad CHARACTER (25)," +
                            "Telefono CHARACTER (10)," +
                            "Notas MEMO)";

                        OleDbCommand cmd = new OleDbCommand(sql, cnn);

                        cnn.Open();

                        cmd.ExecuteNonQuery();

                        cnn.Close();

                        sql = "select * from clientes";

                        OleDbDataAdapter da = new OleDbDataAdapter(sql, cnn);

                        DataTable dt = new DataTable("Clientes");

                        da.Fill(dt);

                        dataGridView1.DataSource = dt;

                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);

                    }
                }

    La tabla Clientes.dbf se ha creado en el directorio C:\Bases\FoxPro, que es el que contiene la base de datos Prueba.dbc.

    Un saludo


    Enrique Martínez [MS MVP - VB]
    sábado, 12 de diciembre de 2009 11:20
  • Hola, gracias por responder, al parecer encontré el problema, y es en el conector, en la versión 9.0.0.2412 la cual si no le especifico en el CREATE TABLE la ubicación del dbf, entonces me la crea en el directorio raíz de la aplicación.
    lunes, 14 de diciembre de 2009 11:12
  • Porque mejor no usas Access (mdb) o mejor un: SQL Server.?
    Edward Ocando
    Mi blog
    eocando@ingen.com.ve
    Desarrollador: VB .NET, C# Visual FoxPro, PHP, JavaScript, Ajax, MS SQL, mySQL.
    jueves, 17 de diciembre de 2009 19:54