Puede que pienses que esto no tiene nada que ver con ADO, y en efecto directamente no tiene nada que ver con ADO. En una entrada anterior comentamos que para trabajar con ADO, era necesario conocer algo de SQL, lo que no compentamos es que tambien es necesario manejarse bien con la programación orientada a objetos (POO).
En FiveWin está incluida un clase que nos permite manjear las tablas DBF como objetos, eso nos permitiira por una parte probar y tomar soltura en el manejo de propiedades, metodos y ademas es una forma muy eficaz de trabajar.
Esta clase nos controla los bloqueos de registro, incorpora un buffer para no modificar directamente sobre el registro, controla si hay cambios en los datos editados, y muchas mas cosas, que nos llevaria bastante trabajo programar a mano.
Su uso es muy sencillo, y ahora veremos un pequeño ejemplo.
El primer paso, es crear el objeto (instanciar de la clase), abriremos una tabla, por ejemplo de proveedores
DBUseArea(.T.,'DBFCDX','PROVEEDOR','PROVEEDOR,.T.,.F.)
oDbf := TDataBase():New()
ya tenemos creado y funcional nuestro objeto oDbf, disponemos de todos los metodos necesarios para trabajar con una tabla (oDbf:Skip(), oDbf:GoTop(), oDbf:Save(), oDbf:Used(), ...), en la ayuda de fivewin encontrareis todos los metodos disponibles, y en la carpeta Source\clases, podeis consultar el código fuente y ver como funcina internamente.
Siguiendo con un proceso normal de altas y modificaciones de ficheros, el siguiente paso seria determinar si queremos añadir un registro, o editar el registro actual.
Si quermos hacer una alta, invocaremos el metodo Blank, que nos dejara el buffer de edición vacio y listo para ñadir un nuevo registro.
Por el contrario si queremos editar el registro actual, invocaremos el metodo Load, que cargara el contenido de los campos de la tabla, en el buffer de edición.
Acto seguido ya podemos visualizar, editar y modificar el contenido de los campos de nuestro objeto, y la forma de referirnos a los campos es nombre de nuestro objeto : nombre del campo.
@ 10,10 GET oDbf:Codigo
@ 12,10 GET oDbf:Nombre ....
cuando hayamos introducido todos nuestros datos, si queremos guardarlos actuaremos de la siguiente manera.
Comprobaremos si realmente se han modificado los datos, y para ello consultamos el valor de oDbf:Modified(), si nos devuelve verdadero, es que hay cambios.
Si el registro es una alta, en este momento crearemos el registro (hasta ahora hemos estado trabajando sobre un buffer temporal en memoria).
oDbf:Append()
y tanto si es una alta como una edición de un registro existente, grabaremos el contenido del buffer temporal a los campos de la tabla.
oDbf:Save()
Sencillo y potente, verdad?. Bueno pues ADO, funciona de una manera muy parecida, cambian los nombres de algunos metodos, pero en el fondo la filosofia de funcionamiento es la misma.
Aqui teneis algunos metodos con la misma funcionalidad tanto en tDatabase como en ADO

|
3 comentarios:
Hola Biel,
El planteo de TDatabase es interesante porque es un punto de patida para manejarse con objetos que te permiten abstraer el origen de los datos, añadiendo portabilidad al código.
Digo punto de partida porque Tdatabase es incompleto, solo resuelve un modelo, el de las DBFs, pero se podria pensar (Rafa está en eso) en un modelo genérico, y que sea capaz de entenderse con el GUI de manera transparente como lo hacen los datacontrols.
Te sigue gustando la idea de la reunion de FiveWinners?
Hola Carlos,
efectivamente solo resuelve el modelo de acceso a DBF, pero es un buen punto de partida.
En su dia estuve desarrollando una clase (clon) con los mismos metodos que tDatabase, pero usando ADO para acceder a los datos.
De momento es un proyecto inacabado(la uso, pero no esta 100% acabada).
No sabia que Rafa estuviese trabajando en un modelo genérico.
La idea de la reunion me encanta, si es que al final parece que hay muchas buenas ideas, y estamos haciendo cosas, pero cada cual por su camino, estaria bien exponerlas en una reunion, unir esfuerzos en proyectos comunes, etc .
Ojala que la reunion de FiveWinners se consiga realizar.
Hola Biel, antes que nada quiero decirte que admiro tus comentarios,
yo siempre he usado tdatabase y la verdad es muy facil te ahorras varias lineas de codigo,,
sin lugar a dudas co ADO seria la puntilla final para tener el acceso a otros modelos de bases de datos,
podrias compartir lo que has hecho para ADO ? mi correo es ccc_3_ccc@hotmail.com
saludos...
Publicar un comentario