Apertura de Tablas DBF

yassy
09 de Enero del 2004
Hola...

Mi problema es el siguiente... cuando quiero abrir una base mdb... realizo el siguiente codigo

Dim sdat As Database
Dim rs As Recordset

Set sdat = OpenDatabase("C:Productos.dbf")

Set rs = sdat.OpenRecordset("Categorias")

rs.MoveFirst

Text1.Text = rs("dg")


Mi problema radica cuando lo que quiero abrir es una tabla DBF.. y recorrerla para mediante una consulta de seleccion estraer los registros que deseo..

gracias

Juan Carlos M. M.
09 de Enero del 2004
Hola
Para poder leer un DBF necesitas solo el siguiente codigo, utilizando ADO...........

Primero agrega la referencia Microsoft ActiveX Data Objects X a tu proyecto (x es cualquier versión....)

Despues declara las siguientes variables (Ojo, estas estan declaradas a nivel proyecto, según x necesidades)

' Esta es para el uso de las tablas..........
Global Tabla As New ADODB.Recordset
' Esta es la conexion con el origen de datos........
Global Conexion As New ADODB.Connection

Despues viene la conexión, yo la tengo en un modulo.bas y en un procedimiento global, para no repetirla seguido....., la mando llamar al load de X formulario.........ConectarOrigenDatos

Sub ConectarOrigenDatos()
With Conexion
.Open "Driver={Microsoft Visual FoxPro Driver};" & "SourceType=DBF;" & "SourceDB=" & "C:" & ";" & ";"
End With
End Sub

Y por último la consulta............

Set Tabla = Nothing
Tabla.Open "SELECT (Campo) FROM (NombreTabla)", Conexion, adOpenKeyset, adLockReadOnly
If Tabla.Recordcount > 0 then
'Encontro Registros
Else
'No Encontro Registros
EndIf

Bueno esto, si tienes alguna duda escribeme un MAIL........
Good Luck............................

Esteban G
09 de Enero del 2004
Hola,

Tal como Juan Carlos en el mensaje anterior te dijo, es así como debes hacerlo para utilizar la aplicación a través de ADO, pero lo que él no te aclaro es que estas utilizando los controladores de datos de Visual Fox Pro, lo que no siempre es válido.
Una forma más fácil de hacerlo es a través del viejo y conocido DAO, ojo que no es ADO al revés, sino que es Data Access Object, y no esta orientado a Activex, pero ese es otro tema.

1.- Lo primero que debes hacer es agregar en tus referencias el DAO, desde la versión 3.51 hacia arriba.

2.- Debes declarar las variables necesarias que son 4, la variable del objeto, del espacio de trabajo, de la base de datos y del recordset.

Public variableobjeto As DAO.DBEngine
Public variableespacio As Workspace
Public variablebd As DAO.Database
Public variablers As DAO.Recordset

3.- Luego debes definir el objeto que vas a utilizar y el espacio de trabajo en el.

Set variableobjeto = New DAO.DBEngine
Set variableespacio = vObjetoDBF.CreateWorkspace("", "admin", "")

4.- Luego definir la base de datos de acuerdo al espacio de trabajo que creaste anteriormente.

Set variablebd = variableespacio.OpenDatabase "C:Ubicaciónbd.dbf", False, False, "DBASE III")

5.- Por último debes definir la consulta SQL que haras sobre tus tablas .dbf las cuales se almacenaran en la variable recordset que definiste y luego esta variable la trabajas como un recordset normal.

Set variablers = variablebd.OpenRecordset("Sentencia SQL como por ejemplo, SELECT * FROM TABLA", 2)


Eso es todo, si tienes muchas dudas o hay algo que te complica me envias un mail y te explico.

Saludos y felices fiestas.

Esteban.

luifer
09 de Enero del 2004
una pregunsta se puede utisar esa coenccion en ado con tablas libre de fox?? como podria trabajarlas ???