ADO y foxpro

Necesito abrir tablas de fox con ADO pero me dice
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Visual FoxPro Driver]El archivo 'tabla.dbf' no existe.
Esta tabla esta en un sitio web y tengo acceso y permisos suficientes.
Gracias por su ayuda.

1 respuesta

Respuesta
Trabajando VFP con SQL Server vía ADO
Muchas veces hemos deseado trabajar con vía ADO desde VFP. He realizado este pequeño tema esperando sea del agrado de todos ustedes. Objetos Utilizados: Recordset, Connection, vfpcom.comutil.
Clear
&& lcServidor = Servidor SQL Server
&& lcUsuario = Usuario
&& lcClave = Clave del Usuario
&& lcDb = Base de Datos a Conectar Ejemplo "Northwind"
PUBLIC rs,Conn,oCom as Object
LOCAL lcServidor,lcUsuario,lcClave
lcServidor = "desarrollo10"
lcUsuario = "sa"
lcClave = "123456"
lcDb = "Northwind"
&& Creando los Objetos
Conn = CREATEOBJECT("ADODB.Connection") && Objeto Contenedor de la Conexión
oCom = CREATEOBJECT("vfpcom.comutil") && Objeto COM para Trabajar con ADO Recordset desde VFP
rs = CREATEOBJECT("ADODB.Recordset") && Objeto Recordset
&& Creamos el Strings de Conexión
strconn = "Provider=sqloledb;Data Source=&lcServidor ;Initial Catalog=&lcDb;User Id=&lcUsuario;Password=&lcClave;"
&& Abriendo la Conexión pasandole el String al Objeto "ADODB.Connection"
Conn.Open (strconn)
&& Conn.Execute ("use com;") && Si deseamos cambiar de base de datos
&& Abriendo el "ADODB.Recordset". Pasamos la Sentencia SQL a Ejecutar,
&& El objeto contenedor de la Conexión y el modo de apertura.
rs.Open ("select * from Orders", Conn, 3)
LOCAL lnReg
&& Contamos los campos que nos devuelve el Recordset y a su vez
&& imprimimos todo el registro donde estamos parados
lnReg = rs.Fields.Count
FOR i = 1 TO lnReg
? "CAMPO: " + RS.FIELDS(I - 1).Name + " VALOR: " + TRANSFORM(RS.FIELDS(I - 1).VALUE)
ENDFOR
&& Creamos un Cursor nativo de VFP y vamos a volcar todos los registros
&& que contiene el Recordset en el Campo shipcountry a el campo del cursor temporal
&& Podemos llamar a los campos en el Recordset asi rs.Fields('shipcountry').Value 0 RS.FIELDS(3).VALUE
CREATE CURSOR foxjose(shipcountry C(50))
&& Nos paramos en el Primer Registro del Recordset
rs.MoveFirst
DO WHILE NOT rs.EOF && Evaluamos si no es un Fin del Archivo
SELECT foxjose
APPEND BLANK
REPLACE shipcountry WITH rs.Fields('shipcountry').Value
rs.MoveNext && Nos movemos al Siguiente Registro
ENDDO
&& Presentamos Resultados
SELECT foxjose
BROWSE
RS.CLOSE && Cerramos el Recordset
&& Conn.Execute ("use SICA;")
&& Abrimos el Recordset Con otra Sentencia, Otra Conexion y parametros de Actualizacion en el mismo
rs.Open ("select * from invoices", Conn, 1, 3)
&& Convertimos con el Objeto "vfpcom.comutil" De un Recordset a un Cursor nativo de VFP
oCom.RSToCursor(RS,"prueb")
&& Mostramos Resultados
SELECT prueb
BROWSE
&& Agregamos en la tabla de SQL Server llamada Region un nuevo Registro a traves de
&& el Objeto Conexión Directamente
Conn.Execute ("insert into Region(regionid,regiondescription) values ('5','Táchira')")
rs.close && Cerramos el Recordset
&& Abrimos para efectuar otra prueba
rs.Open ("select * from Region", Conn, 1, 3)
&& Agregamos un nuevo Registro a traves de el Recordset
rs.AddNew
rs.fields('regionid').value = '6'
rs.fields('regiondescription').value = 'Vargas'
Rs.update && Actualizamos el Recordset para que surta efecto el cambio
oCom. RSToCursor(RS,"Resultado") && Volvemos a Volcar el Recordset a un Cursor de VFP
&& Resultados
SELECT Resultado
BROWSE
rs.close
&& Destruimos los objeto que utilizamos
rs = .NULL.
Conn = .NULL.
oCom = .NULL.
Referencia:
Visual FoxPro VFPCOM Utility
This utility is a COM server that provides additional functionality when you use ADO and access COM events with your Visual FoxPro 9.0 applications.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas