Hernan Diego Ceccarelli wrote:Hola
Me interesaria ver un lindo ejemplo de un ABM con ADO, eso, basicamente una tabla inicial de presentacion, modificaciones alta y bajas, como ir refrescando el recordset o existe necesidad de crear otro ?
Y creo que se podria browsear DIRECTAMENTE el recordset de ADO sin necesidad de incorporar un array de por medio, mas aun si quiero browsear una base de datos de millones de registros, me quedaria sin memoria
Salu2
Hernan:
Una de las cosas que hay que quitarnos de la cabeza cuando trabajamos con SQL, es ell modelo de BROWSES de los lenguajes xBase, aqui no se trata de poner una tabla en un browse y darle doble click a un registro para luego traerte la informacion de dicho registro.
Ten en cuenta que el modelo SQL es un modelo que se invento a finales de los 60's y no ha cambiado mucho desde entonces.
La idea principal del SQL es realizar busquedas que reporten LA MENOR CANTIDAD DE DATOS POSIBLES, es decir, en un sistema por ejemplo de personal, no pones un browse con TODOS los nombres y claves de los trabajadores, le das doble click a un registro y te traes sus datos, mas bien, tienes un GET, le das la clave del trabajador o algun dato que te permita recuperar la informacion, y el programa te devolvera un grupo reducido de datos basados en tu criterio de busqueda, por eso se llama SQL = Structured Query Language o Lenguaje Estructurado de BUSQUEDAS.
Este modelo fue diseñado asi desde un princpio, y aunque es perfectamente posible traerte una base de datos de hasta 4 millones de registros (con (x)Harbour) y meterla en un array, pues en realidad es una tonteria hacerlo siendo que bajo el modelo SQL se busca tener la menor cantidad de datos posible.
Ahora bien, el volcado de datos a un array lo hice por una deformacion profesional de hace muuucho tiempo, te explico:
Antes de trabajar con ADO, era necesario el uso de ODBC, (ahora también pero ADO simplifica el modelo), cuando trabajas con ODBC, todos tus Queries quedan atrapados en un "CURSOR", este cursor es un area de memoria donde reside el resultado del query ejecutado, la unica forma de compatibilizar eso con FiveWin, era descargar el resultado de dicho Query a un DBF temporal o a un Array para poder visualizar los datos.
Actualmente, gracias al modelo ADO, tu puedes browsear directamente sobre el RecordSet, simplemente define las columnas de tu browse como datas oRecordSet:Fields(x):value, define un bloque de código :Bskip para moverte sobre los registros del RecordSet, y asigna la data :bLogicLen a RecordSee:RecordCount() y te ahorras la molestia de pasar por el array.
Para la actualizacion de datos tiene distintos metodos del record set que se encargan de ellos, eso si, dependen del tipo de cursor que estes utilizando, tambien es importante recordar que para este inviento de la actualizacion directa del RecordSet funcione, es necesario haber hecho un buen diseño de la base de datos, que incorpore el uso de llaves primarias, relaciones e integridad referencial.