FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Hola Muchachos gracias por su interes pra la colaboracion que pido...
Al mira que cuando ejecuto con depurador Delphi me envia a esa tlinea de codigo (la de color rojo). curiosamente este es otro procedimiento relacinado que no habia tenido en cuenta. Sobre lo que comenta [AgustinOrtu]; pues tambien me suena mucho. voy a ir estudiando esta solucion tambien. Mil gracias a ambos. Que se busca; Este codigo Filtra de una tabla llama procedimientos una serie de productos y servicios que vende un laboratorio de patologia; y nos muestra (Junto con el diseño) unas opciones entre otras cosas de repetir 2 o mas veces la misma venta del procedimiento. El codigo anterior graba esa venta que puede ser de un procedimiento unico o de uno repetido muchas veces. con el error de "out Of Memory" solo me grba 1 las repeticiones no las hace y salta el error. Gracias
|
#2
|
|||
|
|||
Si me permites quisiera hacer los siguientes comentarios
{1}: Estas liberando el objeto CDSProcedimientos, esto es eliminar todos los campos persistentes que podría tener definido. {2}: Estas creando un nuevo objeto CDSProcedimientos, sin ningún campo persistente {3}: Estas creando un nuevo dataset vacío, para agregar registros a el, pero no haz definido los campos que contiene. {4}: Debería ir el código que define los campos del dataset antes de llamar al Createdataset
Te adjunto un ejemplo de creación de un TClientDatset, obtenido desde TCustomClientDataSet.CreateDataSet
Saludos cordiales |
#3
|
|||
|
|||
Mil gracias cloayza por tu tiempo y colaboracion.
Ahora mismo hago esa revision y cambio las cosas. sinembargo me queda una inquietud. Esos comentarios acertados que me haces si tienen como consecuencia un "Out Of Memory"; por que antes de los 100 mil registros aun estando igual no daba ese error. Gracias Amigo cloayza |
#4
|
||||
|
||||
Ademas, este tipo de procesos es mas rapido si se ejecuta dentro del motor de SQL y usando SQL.
Que motor usas?
__________________
El malabarista. |
#5
|
|||
|
|||
Hola mi compatriota mil gracias por tu apoyo.
Resulta que esta base de datos era en Paradox Pero migre a Firebird y no he tenido el tiempo para cambiar todos los Componentes BDE y cambiar la programacion ajustado los procedimientos al Firebird. Entonces es un hibrido ahi raro de BD firebird con componentes BDE y algunas tablas y querys que he logrado modernizar con componentes IBX. Espero una manita en este asunto |
#6
|
||||
|
||||
El asunto es que el código es un spaguetti, y optimizarlos es... re escribirlo.
Por seguro, cuando un código es simple es generalmente eficiente, y es más fácil de optimizar. En terminos generales, deberias poder visualizar el codigo siguiendo esta idea: Cita:
Esto se llama un pipeline de datos o linea de datos.
__________________
El malabarista. |
#7
|
|||
|
|||
Gracias mamcx lo tendre en cuenta para cuando cambie toda la metodologia de ese programa. Gracias
|
#8
|
||||
|
||||
Yo creo que tu problema no es la base de datos si no que los arrays que tienes, están almacenando todos los registros en ellos y te quedaste sin memoria.
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#9
|
|||
|
|||
Hola Manuel mil gracias por tu aporte.
yo tambien me encamino por ahi, creo que el problema real esta en lo que planteas. desafortunadamente no se como particionarlo o segmentarlo. solo y es solo si tuvieras el tiempo de echarme una manito con una orientacion te prometo que estudio y lo saco adelante. gracias. |
#10
|
||||
|
||||
Cita:
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC. |
#11
|
|||
|
|||
Hola Manuel. Cuando quiero introducir un registro mas una vez (siendo identico) entonces lo cargo y con una funioncilla que hay por ahi inmersa en el codigo lo repito las veces que yo le indique. Por ejemplo: Ape1, ape2, Nom1, Nom2, Codigo, Procedimiento, valor..... esa informacion la cargo la repito 5 veces. Es por eso. Con el primero no da lio lo graba bien a partir del segundo es que ouchhhh.... el error.
Última edición por Camilo fecha: 26-01-2017 a las 13:44:59. |
#12
|
||||
|
||||
Cita:
Y el porque antes si y ahora no? Porque antes lo que hacias cabia en memoria, pero le subiste 1 y ya no. La memoria es finita.
__________________
El malabarista. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Me aparece el error "Insufficient memory for this operation." | ilichhernandez | Varios | 5 | 23-07-2010 18:48:16 |
¿como Puedo Cancelar La Inserción De Los Últimos Registros "insertados" | OscarBravo | Tablas planas | 1 | 23-07-2007 19:26:35 |
Necesito llamar a métodos de clases "hija" desde su clase "padre" | Flecha | OOP | 17 | 20-04-2007 00:03:53 |
Evitar el "Refresh" del ClientDataSet | leanfreue | SQL | 2 | 14-04-2007 23:41:38 |
"Insuficcient memory for this operation" | elcigarra | Varios | 1 | 08-12-2005 15:19:51 |
|