Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Componente ClientDataSet / Master-Detail ADO (https://www.clubdelphi.com/foros/showthread.php?t=60362)

rmendoza83 29-09-2008 22:20:55

Componente ClientDataSet / Master-Detail ADO
 
Hola Amigos, un saludo para todos.

Quisiera escuchar su opinion sobre este componente, es decir, cuando utilizarlo, exactamente cual es su ventaja sobre otros componentes (ADO, Zeos), me servira para usarlos en un esquema master / detail.

Adicionalmente tengo un problema con una union master/detail utilizando Componentes ADOQuery, hago el enlace utilizando los parametros en el query (Ej: "... WHERE O.ID = :ID") y el datasource (recuerden que hay varias formas, por ejemplo el uso de masterfields y mastersource), hice pruebas con este metodo con componentes zeos y todo bien, pero con ado no he tenido buenos resultados; me hace el link bien, pero cuando voy a agregar un registro en el master e intenta hacer el link en el detalle me tira un error tal como este "ADODetail: Record not Found" donde ADODetail es el componente ADOQuery.

Ademas pues saber cual seria la mejor manera de hacer un master/detail, dado que no he probado cual es el mejor metodo. Pero si me fije que utilizando masterfields y mastersource es ideal cuando no tenemos una detalle con muchos registros. Trabajo con Delphi 7, algunos componentes de terceros, ADO y ZEOS, buenos ahi se los dejo, espero que puedan ayudarme...

Saludos.

Neftali [Germán.Estévez] 30-09-2008 09:02:13

Preguntas demasiadas cosas y lias muchos conceptos en una sóla pregunta, y al final queda todo bastante liado.:(:(

En cuanto al ClientDataset, decirte que es un componentes independiente de ADO, Zeos,... (componentes de conexión). Es decir, a cualquiera de estos componentes de conexión le puedes añadir la funcionalidad de TClientDataset; No es un sustituto de estos.

TClientDataset lo que te ofrece es la posibilidad de tener en local los datos que te ofrece una consulta o tabla (independientemente de si está con ADO, Zeos, ODBC,...); Trabajar con ellos en local haciendo modificaciones, inserciones y borrados de registros (que no se reflejan en la Base de Datos) y cuando tú lo decides "volcar" todos esos cambios de golpe a tu Base de Datos.

rmendoza83 01-10-2008 20:49:57

Hola Neftali, sabia que tu me responderias de primero. je je...

Admiro mucho tu estilo de programacion, pues tu sistema de plugins funciona excelente. Oye te comento un poco sobre lo que estoy haciendo, basicamente es un sistema administrativo contable a la medida, y quiero que este sea capaz de funcionar bajo cualquier manejador de base de datos y que pueda ser escogido por el personal de sistemas de mis clientes. Basicamente con Zeos puedo conectarme con exito a base de datos como Mysql, Postgresql, Firebird/Interbase y con ADO para base de datos comerciales y de microsoft, Access, Sql Server, Informix, Oracle, etc.

En resumen segun entiendo que el ClientDataSet deberia ser usado para trabajar con transacciones? pues mantiene los datos localmente y al decirle apply me hace el commit en el servidor real? creo que es algo asi lo que entendi. En realidad no es lo que quiero, quisiera que los datos se trabajen directamente en el servidor de produccion y no manejar data local. Hasta ahora pues con Zeos he logrado hacer todo pero con ADO tengo el problema que te mencione antes, pues cuando los utilizo en modulos como facturacion de clientes, ND, NC o compras que manejan maestro detalle me arroja el error justamente al insertar un nuevo registro, pero el link cuando se esta navegando se muestra bien. Bueno aun no logro detectarlo.

Por cierto, utilizo como generador de reportes el Nevrona Rave Reports 7 BEX, que es excelente, hasta logre hacer un datalink basado en Zeos para conectarme a Postgres y funciona excelente. Pero tengo una duda, tu no sabes si en la red estara el editor de reportes sin la limitante de usarlo solo desde el ide de delphi? me interesaria mucho poder usarlo sin esta limitante.

Bueno espero tus comentarios

Bye.

Neftali [Germán.Estévez] 02-10-2008 09:40:36

Cita:

Empezado por rmendoza83 (Mensaje 317528)
...segun entiendo que el ClientDataSet deberia ser usado para trabajar con transacciones? pues mantiene los datos localmente y al decirle apply me hace el commit en el servidor real?

Yo tiene porqué ir ligado lo uno con lo otro.

TClientDataSet te permite trabajar con datos en local y luego "volcar" todos los cambios de golpe al servidor.

Imagina el siguiente ejemplo; Estás introduciendo una factura y sus líneas de factura; El usuario debe ir añadiendo todas las líneas de la factura (productos) desde un formulario. No puedes mantener todo ese tiempo una transacción abierta y a medida que vas añadiendo líneas estan deben ir almacenandose. Puedes usar un TClientDataset, para ir almacenando las líneas; cambiar, borrar, añadir; Una vez finalizado aplicas todos los cambios en un sólo paso y grabas la factura en Disco. En este caso un TClientDataset puede ser una buena opción.

En cuanto a Rave, no estoy muy "puesto" en el tema.


La franja horaria es GMT +2. Ahora son las 23:55:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi