2008-09-16 90 views

Respuesta

2

Los archivos de FoxPro 2.0 eran exactamente los mismos que los archivos de dBase III con un bit adicional para cualquier campo que fuera de tipo "memo" (no estoy seguro del nombre exacto, ha pasado un tiempo). Eso significa que si solo usa FoxPro 2.x method para acceder a los archivos, debería funcionar.

8

Algo como ...?

ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ 
"Data Source=e:\My Documents\dBase;Extended Properties=dBase III" 
Dim dBaseConnection As New System.Data.OleDb.OleDbConnection(ConnectionString) 
dBaseConnection.Open() 

Desde: http://bytes.com/forum/thread112085.html

+0

También puede crear un DSN ODBC para la conexión en el Panel de control y luego conectarse a ese en su código. – runako

6

Soy consciente de que es un hilo de edad, pero en caso de que alguien llegue aquí por google (como hace unos días) ... Como escribí here, la solución más elegante es usar LINQ to VFP para leer y escribir en archivos DBF. Lo probé con algunos archivos dBase III. Dice así:

definiría su mesa para que coincida con la definición DBF así:

public partial class MyTable 
{ 
    public System.Int32 ID { get; set; } 
    public System.Decimal Field1 { get; set; } 
    public System.String Field2 { get; set; } 
    public System.String Field3 { get; set; } 
} 

Se define el contexto de esta manera:

public partial class Context : DbEntityContextBase 
{ 
    public Context(string connectionString) 
     : this(connectionString, typeof(ContextAttributes).FullName) 
    { 
    } 

    public Context(string connectionString, string mappingId) 
     : this(VfpQueryProvider.Create(connectionString, mappingId)) 
    { 
    } 

    public Context(VfpQueryProvider provider) 
     : base(provider) 
    { 
    } 

    public virtual IEntityTable<MyTable> MyTables 
    { 
     get { return this.GetTable<MyTable>(); } 
    } 
} 

Se definen los atributos de contexto de esta manera:

public partial class ContextAttributes : Context 
{ 
    public ContextAttributes(string connectionString) 
     : base(connectionString) { 
    } 

    [Table(Name="mytable")] 
    [Column(Member="ID", IsPrimaryKey=true)] 
    [Column(Member="Field1")] 
    [Column(Member="Field2")] 
    [Column(Member="Field3")] 
    public override IEntityTable<MyTable> MyTables 
    { 
     get { return base.MyTables; } 
    } 
} 

También necesita una cadena de conexión, puede definirla en app.config así (Data\ ruta relativa se utiliza como la fuente de los archivos de DBF en este caso):

<connectionStrings> 
    <add name="VfpData" providerName="System.Data.OleDb" 
    connectionString="Provider=VFPOLEDB.1;Data Source=Data\;"/> 
</connectionStrings> 

Y, por último, puede realizar la lectura y la escritura y de la DBF archivos tan simple como:

// Construct a new context 
var context = new Context(ConfigurationManager.ConnectionStrings["VfpData"].ConnectionString); 

// Write to MyTable.dbf 
var my = new MyTable 
{ 
    ID = 1, 
    Field1 = 10, 
    Field2 = "foo", 
    Field3 = "bar" 
} 
context.MyTables.Insert(my); 

// Read from MyTable.dbf 
Console.WriteLine("Count: " + context.MyTables.Count()); 
foreach (var o in context.MyTables) 
{ 
    Console.WriteLine(o.Field2 + " " + o.Field3); 
} 
+1

intenté ejecutar su código pero da 'No se pudo cargar el tipo' LinqToVfp.VfpQueryProvider 'desde el ensamblado' LinqToVFP, Versión = 1.0.0.0, Cultura = neutro, PublicKeyToken = null'. Este error. ¿Alguna idea de como resolver esto? – th1rdey3

0

tengo ofreció muchas respuestas sobre cómo trabajar con archivos de base de datos (más específicamente VFP, pero el proveedor de Microsoft VFP OleDb reconocerá archivos dbase más antiguos). Usted puede hacer una búsqueda para encontrar más de estos vínculos a través de:

de usuario: 74195 [VFP] [oledb]

En primer lugar, me gustaría empezar con la obtención del Microsoft VFP OleDb Provider descarga.

A continuación, si ya tiene algunos archivos dbf a los que intenta conectarse para realizar pruebas, debe establecer una conexión. La conexión debe apuntar a la RUTA donde se encuentran los archivos, no al archivo específico .dbf. Entonces, si tiene una carpeta con 20 tablas, una vez que se conecta a la RUTA, puede consultar desde cualquiera/todas las tablas a través de la sintaxis estándar de VFP-SQL (común con muchos SQL la estructura general, pero diferente según algunas funciones como manipulaciones de cadena, fecha y número).

Obtenga más información acerca de PARAMETERIZAR sus consultas.Con VFP OleDb, los parámetros se realizan con el "?" carácter como marcador de posición, por lo que los parámetros deben agregarse en la misma secuencia exacta en que aparecen en la consulta. Los "?" puede aparecer como valores de campo, condiciones de unión, donde criterios, etc.

Los siguientes son algunos para comenzar a HOPEAMENTE comenzar con una conexión válida, consultar, luego insertar/actualizar/eliminar con los parámetros.

  1. Sample showing a connection string and simple query from a table

  2. Shows a parameterized sql-insert pero en este caso obtiene los datos de otra fuente de datos, como SQL-servidor y la creación de una tabla de estilos de VFP/DBF de ella. Pasa cíclicamente por registros y tirando valores para cada parámetro e insertando.

  3. and another showing parameterized SQL-update

Buena suerte, y hay un montón de otras personas que contestan en VFP y OleDb acceso, estos son sólo algunos que he participado específicamente en y mostrar implementaciones funcionales que pueden tener algo que puede de lo contrario, puede haber pasado por alto.

Cuestiones relacionadas