RE:Conexion de visual fox a sql via Ado
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.
Proba y me comentas