26 de octubre de 2002

Ejemplo basico de ADO

Ante algunas consultas sobre la forma de conectarse y acceder a SQL Server utilizando ADO, acá va un ejemplo básico de su uso...
* EjemploADO.prg
* Algunos ejemplos de uso de ADO desde VFP
* Jose M. Marcenaro - 2001/11/12
* -------------------------------------------
* Para tener intellisense de estos objetos (VFP 7)
* agregué previamente la Type Library de ActiveX Data Objects
* al Intellisense Manager (Solapa Types / Type Libraries)
LOCAL loConn AS ADODB.CONNECTION
LOCAL loCmd AS ADODB.COMMAND
LOCAL loRs AS ADODB.Recordset
LOCAL lcConnString AS STRING

* conexion por seguridad integrada de Windows
lcConnString = "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=Northwind;Integrated Security=SSPI"

* conexion por usuario / password de SQL Server
* lcConnString = "Provider=SQLOLEDB;Data Source=MSSQL;Initial Catalog=Northwind;User Id=sa;Password=pass;"

* abro la conexion
loConn = CREATEOBJECT("ADODB.Connection")
loConn.CursorLocation= 3 && adUseClient
loConn.OPEN(lcConnString)

* realizo un select simple
loRs = loConn.Execute("SELECT * From Products")
MostrarRecordset( loRs)
loRs.CLOSE

* creo un stored procedure para poder invocarlo despues
ON ERROR xx=0  && ignorar si ya existe el SP
loConn.Execute( "";
  +"create procedure Probar (@Inicial varchar(10)) as ";
  +"    select * from Products where ProductName like @Inicial+'%'")
ON ERROR

* invoco al SP recien creado
loRs = loConn.Execute("exec Probar 'M'")
MostrarRecordset( loRs)
loRs.CLOSE

* lo invoco mediante un objeto Command (acceso a coleccion parámetros)
loCmd = CREATEOBJECT("ADODB.Command")
loCmd.ActiveConnection = loConn
loCmd.CommandText = "Probar"
loCmd.CommandType = 4 && adCmdStoredProc
loCmd.PARAMETERS.REFRESH && obtiene parametros del SP
loCmd.PARAMETERS.ITEM(";@Inicial") = 'L'
loRs = loCmd.Execute()
MostrarRecordset( loRs)
loRs.CLOSE

RETURN

********************************************************
PROCEDURE MostrarRecordset( loRs AS ADODB.Recordset)

  LOCAL ln, li, lcStr
  lcStr = ""

  FOR ln = 1 TO 10  && primeros 10 registros como máximo
    IF loRs.EOF then
      EXIT FOR
    ENDIF
    FOR li=1 TO MIN(loRs.FIELDS.COUNT, 3) && primeros 3 campos como máximo
      lcStr = lcStr+TRANSFORM(loRs.FIELDS.ITEM(li).VALUE)+","
    NEXT
    lcStr = lcStr+CHR(13)
    loRs.MoveNext
  NEXT
  MESSAGEBOX(lcStr)

ENDPROC
Jose Marcenaro
Microsoft MVP
da Vinci - Argentina

No hay comentarios. :

Publicar un comentario