PDA

Ver la Versión Completa : Tablas temporales. La mejor manera


Wonni
17-05-2007, 14:44:01
Hola;

Estoy desarrollando una aplicación que trabaja con base de datos Access y ADO. Pensaba que me libraba de BDE, pero el caso es que necesito tablas temporales y veo que la mejor manera es seguir con Paradox para este tipo de tablas.

¿Como haceis vosotros para este tipo de tablas? ¿Me aconsejais que cree otro .mdb para estas tablas?

Por supuesto una cosa que interesa para estas tablas es la rapidez. Hombre, estas estan en cada pc cliente, pero aun asi me gustaria saber como haceis vosotros con este tema.

marcoszorrilla
17-05-2007, 15:53:07
Yo trabajaría todo en Acces o todo en Paradox. Hay que tener en cuenta que el BDE es un motor muy versátil que trabaja con muchas tablas, pero también consume muchos recursos.

En mi opinión si trabajas con Access, una Bd Access en cada equipo y así cada usuario creará las tablas temporales que necesite la aplicación y luego al finalizar las eliminas.

Un Saludo.

Wonni
17-05-2007, 16:16:28
... el BDE es un motor muy versátil que trabaja con muchas tablas, pero también consume muchos recursos.
Un Saludo.

Entonces, con Access ¿me resultará más rapido incluso?. Yo esto lo hacia porque pensaba que al tratar con tablas sueltas(Paradox) para las temporales, me seria mas rapido. El caso es que estoy haciendo varias preguntas en el club acerca de MDB´s y ADO. Y por supuesto investigando todo lo que puedo antes de preguntar ;) , y me he comprado un libro de Access. Me gustaria algun libro sobre ADO, pero no encuentro nada, lo más que tengo es lo poco que viene en el libro que tengo de Francisco Charte "Programación en Delphi5" ( tocho de libro :p )

Pues supone un alivio ( y una sensación extraña ) librarme de BDE y de ciertos archivos numerosos, jeje.

Gracias :)

mensana
17-05-2007, 16:22:44
... el caso es que necesito tablas temporales y veo que la mejor manera es seguir con Paradox para este tipo de tablas.
...
Por supuesto una cosa que interesa para estas tablas es la rapidez


Si por tablas temporales entienes, tablas en memoria, puedes utilizar el componente kbmMemTable, robusto, rápido y con fuentes. Incluso puedes grabar el contenido en fichero para cargar posteriormente.

Casimiro Notevi
17-05-2007, 16:34:27
Si por tablas temporales entienes, tablas en memoria, puedes utilizar el componente kbmMemTable, robusto, rápido y con fuentes. Incluso puedes grabar el contenido en fichero para cargar posteriormente.

Buenísimas, las uso desde hace años.

Neftali [Germán.Estévez]
17-05-2007, 16:45:34
Opino como Marcos. Para las tablas temporales, créate una MDB en local si la necesitas y el resto en el servidor, siempre que esa tabla temporal no tenga que interactuar con las que hay en el servidor.

Para trabajar en memoria, además e lo que te han comentado también tienes la opción de TClientDataSet. Que con respecto a las otras opciones (de tablas en memoria) te facilita el trabajo de volcar los datos de los cambios en local a la tabla en disco (si es que necesitas hacerlo).

Wonni
17-05-2007, 17:21:51
Gracias mensana, acabo de probar la kbmMemTable y me parece genial !

Yo hasta ahora tenia tablas temporales Paradox las cuales alojo en un directorio \Temp dentro del directorio de mi aplicacion. Pero veo que resulta mas rapido con tablas en memoria, cosa que no habia utilizado nunca.


Para trabajar en memoria, además e lo que te han comentado también tienes la opción de TClientDataSet. Que con respecto a las otras opciones (de tablas en memoria) te facilita el trabajo de volcar los datos de los cambios en local a la tabla en disco (si es que necesitas hacerlo).

Pero, para TClientDataSet necesito hacer uso del BDE, ¿no?

Otra cosa, lo de volcar los datos a la tabla en disco, ¿como lo haces?

Yo por ejemplo, tengo una tabla "TempTPV1" y cuando se quiere finalizar la venta, paso los registros uno por uno a la tabla "TPV".
¿Es que hay otra forma de volcar una tabla en memoria a disco? Tal vez mas elegante y mas eficiente.

Neftali [Germán.Estévez]
17-05-2007, 17:58:19
Pero, para TClientDataSet necesito hacer uso del BDE, ¿no?

No necesariamente; Puedes utilizarlo con ADO También.

Otra cosa, lo de volcar los datos a la tabla en disco, ¿como lo haces?

Me refería a que si trabajas co una tabla en memoria y haces cambios, luego para volcar esos cambios a la tabla de disco, debe hacerlo de forma manual. Si trabajas con TClientDataSet (que viene a ser como una tabla en memoria), el propio TClientDataset tiene un método que vuelca todos los cambios realizados en memoria (Insert, delete, Update) a la tabla original de la Base de Datos.

marcoszorrilla
17-05-2007, 19:44:28
El TclientDataset, sino recuerdo mal además requiere copiar la "Midas.Dll" en los equipos correspondientes.

Un Saludo.

courtois
19-05-2007, 10:34:14
El TclientDataset, sino recuerdo mal además requiere copiar la "Midas.Dll" en los equipos correspondientes.

Un Saludo.
O añades al uses midaslib, asi se compila con tu aplicación

Wonni
19-05-2007, 19:03:36
Gracias a todos;

Me quedo con los kbmMem, lo estoy probando y van muy bien ;)

mensana
21-05-2007, 08:59:54
... Si trabajas con TClientDataSet ...

A mí se me quedó corto TClientDataSet. Empieza a tener problemas de rendimiento y memoria cuando hay un gran volumen de datos, tiene errores documentados no resueltos, depende de midas.dll, etc...

blueicaro
10-07-2008, 17:39:59
Hola, ante todo lo primero perdón por reflotar este post antiguo. Lo encontré buscando información midas.dll
Lo segundo, es preguntar, en dónde me puede hacer con una copia de kbmMem, que se comenta en este hilo.
¿Es freeware,shareware ?, o es comercial ?

Gracias
/BlueIcaro

Wonni
10-07-2008, 19:00:25
Puedes descargarlas desde:

http://www.components4programmers.com/index.htm

Tienes que registrarte. En su dia yo me registré, aunque no he vuelto a utilizarlas, de hecho llevos meses sin programar. Aunque es casualidad, porque me ha salido un encargo y... he vuelto :D jeje

Wonni
10-07-2008, 19:06:48
Ah, se me olvidaba. Son freeware.


Saludos !