Creacion de la funcion SqlExecAdapter

Denis Guido
20 de Noviembre del 2004
Esta funcion permite realizar Select,Insert, Update, Delete , igual como que si estubieramos utilizando la funcion SqlExec , nada mas que con la diferencia que se utiliza la clase CursorAdapters.Anexo un ejemplo con un formulario el cual utiliza la tabla Region de la BD NorthWind.

Esta es una funcion la cual pienso les va ha servir para mejorar sus aplicaciones utilizando el CursorAdapters.

--Pasos para Crear el Formulario FrmCA
1- Agregue un nuevo formulario
2- Cree una propiedad que se llame nuevo
2.1-Seleccionar el Menu formulario
2.2-Click en Nueva Propiedad
2.3-Escribir nuevo y luego Aceptar
3- Agregar 2 label, 2 textbox y 3 CommadButton
4- cambiar el nombre de textbox1 con el nombre txtID,
textbox2 con el nombre txtDesc
Cambiar el nombre de commandbutton1 con el nombre cmdaDD
commandbutton2 con el nombre cmddelete
commandbutton con el nombre cmdquit
5- Agregar el siguiente codigo al Valid del txtid
LOCAL lcSQL,lcID
lcID=LTRIM(This.Value)
lcSQL="Select Region.* From Region where LTRIM(STR(RegionID))='"+Lcid+"'"
IF SqlExecAdapter(lcSQL,"CRegion") >0
IF RECCOUNT("CRegion")>0
Thisform.TxtDesc.Value=CRegion.RegionDescription
Thisform.cmddElete.Enabled= .T.
Thisform.nuevo=.F.
ELSE
Thisform.TxtDesc.Value=SPACE(50)
Thisform.cmddElete.Enabled= .F.
Thisform.nuevo=.T.
ENDIF
ENDIF
LTRIM(STR(RegionID))-->Realizo esto en la consulta por que el campo
es del tipo numerico , si el campo fuera de tipo Caracter no realizaia
ningun tipo de conversion

6- Agregar el siguiente codigo al Click del cmdadd
LOCAL lcSQL,lcID,lcDescrip,lcInsert
lcID=LTRIM(Thisform.txtid.Value)
lcDescrip=Thisform.txtDesc.Value
IF Thisform.nuevo
WAIT WINDOWS "Add Region" NOWAIT
lcInsert="Insert into Region values('" + lcID + "','" + lcDescrip + "')"
=SqlExecAdapter(lcInsert)
ELSE
WAIT WINDOWS "Update Region" NOWAIT
lcInsert="Update Region Set RegionDescription='" +lcDescrip+ "'Where RegionID='" + lcID + "'"
=SqlExecAdapter(lcInsert)
ENDIF
Thisform.txtID.Value=SPACE(1)
Thisform.txtDesc.Value=SPACE(50)
Thisform.txtID.SetFocus
7- Agregar el siguiente codigo al Click del cmddelete
LOCAL lcDelete
IF !Thisform.nuevo
If messagebox("驴Esta seguro de Eliminar el registro?",32+4,Thisform.Caption)=6
WAIT WINDOW 'DElete Record...' NOWAIT
lcID=LTRIM(Thisform.txtid.Value)
lcDelete="DELETE FROM Region where LTRIM(STR(RegionID))='"+Lcid+"'"
=SqlExecAdapter(lcDelete)
ENDIF
ENDIF
Thisform.txtID.Value=SPACE(1)
Thisform.txtDesc.Value=SPACE(50)
Thisform.txtID.SetFocus
8- Agregar el siguiente codigo al Click del cmdquit
Thisform.Release()

9-Agregar el siguiente codigo al Init del formulario
SET PROCEDURE TO rutinas

9- Crear un procedimiento con el nombre de Rutinas
y agregar el siguiente codigo el cual contiene
la funcion SqlExecAdapter

**************************************************************
*!* Funci贸n Para Realizar Consultas Al Servidor Via OLEDB ADO,
*!* Esta Funcion Ha Sido Tomado De WWW.PortalFox.com Pero, He
*!* Realizado Algunos Cambios, Para Que Se Parezca ala
*!* Funci贸n SQLEXEC(Insertar,Actualizar,Eliminar),
*!* Es por eso le he puesto el nombre de SqlExecAdapter
*!* Elaborado Por Denis Guido
*!* Nicaragua
*!* 20/11/2004
*!* [email protected]
**************************************************************
FUNCTION SqlExecAdapter
PARAMETERS lcQuery,lcCursorDevuelto

LOCAL lcServer,; &&Nombre o Direccion IP del Servidor
lcCatalog,; &&Catalogo Inicial (Base de Datos)
loConnection,; &&Variable conteniendo la Conexion ADO
loRecordSet,; &&Variable que recibo el RecordSet resultando
loCursorAdapter,; &&Objeto CursorAdapter
lnRetornar

lcServer = "localhost"
lcCatalog = "Northwind"
lnRetornar = 1

TEXT TO lcConnString NOSHOW
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=NorthWind;Data Source=localhost;
ENDTEXT
TRY
loConnection = CREATEOBJECT("ADODB.Connection")
loConnection.Open(lcConnString)
loRecordSet = loConnection.Execute(lcQuery)
loCursorAdapter = CREATEOBJECT("CursorAdapter")
IF !EMPTY(lcCursorDevuelto)
loCursorAdapter.Alias=lcCursorDevuelto
loCursorAdapter.CursorAttach(loCursorAdapter.Alias)
ENDIF
loCursorAdapter.DataSourceType="ADO"
loCursorAdapter.CursorFill(,,,loRecordSet)
loCursorAdapter.CursorDetach()
loConnection.Close
CATCH TO loError
lnRetornar = 0
MessageBox(loError.Message,0+64+0,"Error en CONECTAR()")
ENDTRY
RETURN(lnRetornar)
10- Corra el formulario e Ingrese una region


**Si la patria es peque帽a
uno grande la sue帽a
Ruben Dario


Nota:Debe tener instalado la BD Nothwind...


para su mayor comodida ya puse el codigo en Codigo fuente... Espero sus comentario..

y muchas Gracias

denis guido
20 de Noviembre del 2004
El codigo de este ejemplo lo puse en este portal en el area de codigo fuente /base de datos vfp