lunes, 18 de febrero de 2008

Usando origenes de datos ADO 1

En esta entrada, voy a incluir un ejemplo autocontenido en el que vamos a abrir un origen de datos via ADO, y visualizaremos su contenido en una rejilla (xBrowse).
Para tal efecto, y para que no sea requerimiento tener algun servidor instalado, utilizaremos un fichero MDB (Microsoft Access), dicha base de datos la crearemos dinamicamente desde nuestro código, haciendo uso de los componentes ADOX (Active Data Objects Extension).
Para que fucnione, debemos tener instalado en nuestro ordenador el proveedor de datos Microsoft.Jet.OLEDB.4
Descargar ejecutable
Descargar código fuente

Este programa consta de dos partes, la primera parte donde creamos la base de datos, la tabla, y rellenamos con datos de prueba, que corresponde la siguiente porción de código, la cual no creo que haga falta comentar, puesto que con la lectura y los comentario en el propio código fuente, es autoexplicativo.

Creando la base de datos Demo.mdb
Como podeis ver creamos un catalogo, despues una tabla, añadimos campos a la tabla, definimos la clave primaria, y finalmente añadimos la tabla al catálogo.

Rellenando con datos de prueba
En esta segunda funcion, definimos un objeto connection, creamos un recordset, definimos CursorLocation del lado del cliente (salvo contadas excepciones, siempre los definiremos del lado del cliente), tipo de cursor Dinamico (aqui si que tendremos más juego dependiendo de las operaciones que queramos realizar con los datos), tipo de bloqueo (en este caso optimista), le indicamos cual es el objeto connection que debe usar, y la sentencia SQL a ejecutar.
Una vez abierto, mediante un bucle FOR ... NEXT vamos creando registros de prueba.

Cuando ya tenemos creado nuestra base de datos access, lo único que nos resta es visualizar los registros que le hemos incorporado.
Con muy pocas instrucciones podemos ver en pantalla todos los registros, en esta primera entrega, solo visualizaremos los registros no haremos ninguna funcion de mantenimiento, si bien en la fucnion CrtTstDat, ya podeis ver como funciona la mecánica para añadir registros.

En la función VerMdb, recuperamos todos los datos contenidos en la tabla Cliente, y los visualizamos en un Browse. Con solo diez lineas es suficiente, y eso en parte es gracias al uso del metodo SetAdo(aportación personal donada a FiveTech) de la clase xBrowse que nos crea las columnas y nos configura los codeblock de movimiento (bGoTop, bGoBottom, bSkip, ... )

Visualizar Tabla en rejilla
Espero que os sea de utilidad, espero vuestros comentarios.
Saludos.

(ADOX:Catalog ADOX:Table ADOX:Key ADODDB:Connection ADODB:RecordSet tXBrowse SetAdo )

9 comentarios:

Anónimo dijo...

Gabriel:

Gracias, me has ayudado bastante.

Y estoy seguro que muchos te leen pero no se atreven a escribir.

Animo

Saludos,

Mauricio Arevalo

Anónimo dijo...

Hola Biel como estas?

De verdad que primero que todo te quiero agradecer por toda la ayuda que me prestaste la semana pasada. Ya tengo andando el desarrollo de mi aplcación con ado puro. De nuevo muchas gracias.

Pero te tengo una preguntica. ¿Como se hace para (si se puede) para trabajar archivos dbf con ADO?, disculpa mi ignorancia.

Saludos

Biel Maimó dijo...

Gracias por los comentarios, con referencia al uso de DBF via ADO, no veo ningún impedimento para hacerlo.
Yo nunca lo he probado, pero debe de funcionar, lo único que necesitas es un proveedor OLEDB que soporte DBF o un ODBC, que estoy seguro que haberlos haylos.

Anónimo dijo...

Gracias Biel.....
Voy a buscar en san google a ver que me encuentro por ahi...

Amigo te puedo molestar con otra cosilla...

De casualidad sabes como hago para hacer una especie de seek o locate o algo asi. Sobre un recorset?

Gracias

LEANDRO AREVALO
Bogotá (Colombia)

Biel Maimó dijo...

Lenadro, para eso tienes el metodo Find. oRs:Find("Codigo='01")

Busca en google documentacion sobre el metodo Find del objeto RecordSet,

Armando dijo...

Biel:

Muchas gracias por las enseñanzas.

Donde encontrar más DOC sobre ADO ?, he buscado en Google pero lo que hay es muy escueto o con ejemplos pero para VBasic.

Saludos y no dejes de escribir.

Biel Maimó dijo...

Armando, la verdad es que la mayoria de información que circula por la red es para VB, y tendras que ser capaz de estrapolar los ejemplos de VB a Harbour. Te pongo unos cuantos links sobre ADO.
http://www.netzone.ch/caspdoc/Ch11_ADO.html
http://ns7.webmasters.com/caspdoc/html/ado_component_reference.htm
http://www.w3schools.com/ado/default.asp
Y en general en MSDN
Un salduo

Anónimo dijo...

hola amigo, tus ejemplos me han ayudado a pasarme de vb4.0 a fivewin pero no puedo filtrar una tabla el resto funciona bien
cuando uso "SELECT * FROM CLIENTES"
funciona bien pero
"SELECT * FROM CLIENTES WHERE CODIGO = 1625" me dice da un error

Biel Maimó dijo...

Supongo que ya habras resuelto tu problema, en cualquier caso, si estas usando la base de datos del ejemplo, fijate eque el campo no es CODIGO sino CLICOD.
Saludos