Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Insuffient memory for this operation (https://www.clubdelphi.com/foros/showthread.php?t=29960)

gorsan 06-02-2006 01:09:00

Insuffient memory for this operation
 
Muy buenas queridos foreros.

Uso Delphi 4 professional edition + BDE 5.0

Tengo cuatro modulos de datos. El primero contiene 192 objetos (96 tablas + 96 DataSources). El segundo contiene 24 objetos (12 tablas + 12 DataSource). El tercero 72 objetos (36 tablas y 36 DataSource) y el cuarto contiene 120 objetos (60 tablas + 60 DataSource).
El caso es que si los coloco en el auto-create forms del proyecto, el BDE se queja dándome el mensaje 'Insuffient memory for this operation' cuando intenta cargar las tablas de el ultimo datamodule, parace ser que tiene que reservar memoria para muchas tablas y no puede cosa que yo desconocía y hasta ahora nunca me habia pasado tal cosa. Entonces pienso en ubicarlas como 'Available forms' e ir creando los datamodule cuando sean requeridos y luego destruirlos antes de cargar el siguiente. Ya .... peros esa labor no soy capaz de hacerla y se me queda cara de j ...
La idea es ubicar cuatro botones en el formulario principal de la aplicacion y si pulso el primero cargar el datamodule1 y descargar los otros y asi sucesivamente con los otros tres botones pero no se como hacerlo, de verdad, no se como hacerlo. ¿Alguien me puede echar un cable y decirme exactamente como tengo que hacerlo? pero con pelos y señales porque soy muy torpe. He probado con ubicar en el evento oncreate de cada datamodule el codigo:
DataModule2.Free;
DataModule3.Free;
DataModule4.Free; (ejemplo para el datamodule1)
y en el onclick del primer boton: DataModule1:=TDataModule1.Create(Application);
pero me sale el mensaje 'raised exception class EAccessViolation with message access violation at address 00417681. Read of address 000001B4 cuando cliqueo entre los 4 botones. Una ayuda por caridad. Gracias.

marcoszorrilla 06-02-2006 07:11:02

Pues no lo veo buena idea, porque entonces el usuario tendría que estar pulsando botones para que al entrar en tal o cual módulo ya tuviera las tablas abiertas.

Yo lo que hago es crear varios datamódulos, solamente creo el principal, en donde están las tablas que se van a utilizar en todo momento, por ejemplo si es de facturación, Clientes, Albaranes, Facturas.

El módulo de estadísticas, queda disponible con todas sus tablas cerradas y solamente cuando es necesario se carga y se abren únicamente las tablas que van a utilizarse.......

Debe ser el programa quien decida cuando carga y libera los módulos dependiendo de las opciones que vaya eligiendo el usuario.

Un Saludo.


La franja horaria es GMT +2. Ahora son las 14:55:39.

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