Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error Out Of Memory en delphi (https://www.clubdelphi.com/foros/showthread.php?t=57164)

pmtzg 06-06-2008 17:23:22

Error Out Of Memory en delphi
 
uan pregunta compañeros haber si alguno de ustedes les ha pasado lo siguiente:

estoy haciendo un transpaso de bases de datos de :
Paradox a Delphi con el siguiente codigo :

Código Delphi [-]
Table1.First;
while not Table1.Eof dobegin  
// Agregas registro en blanco  
zt2.Append;  
// Copias valores de los campos  
for i := 0 to Table1.Fields.Count -1 do    
zt2.Fields[i].Value := Table1.Fields[i].Value;  
// Guardas el nuevo registro  
zt2.Post;  
// Avanzas al siguinete registro de la tabla origen  
Table1.Next;end;
tengo 1 tabla de paradox que cuenta con 604.330 registrosy cuando estoy corriendo la aplicación llega has el 44%
y me lanza el siguiente error:
miaplicacion.exe raised exeption class EoutOfMemory whith messageOut Of Memory
Process Stopped estoy usando delphi 7 , firebird 2.1
y el componente que uso es:MDOantes transporto 7 tablas y pasan correctamente y completas
pero esta tabla es la mas pesada y es ahi donde que queda
alguien me podria dar una orientada que hacer ... Gracias

BlueSteel 06-06-2008 18:12:04

Hola pmtzg...

estas seguro de esto

Cita:

Empezado por pmtzg (Mensaje 291823)
estoy haciendo un transpaso de bases de datos de :
Paradox a Delphi con el siguiente codigo :

por que creo que estas realizando un traspaso de tablas Paradox a Firebird por intermedio del delphi :p:D

Cita:

transporto 7 tablas y pasan correctamente y completas
pero esta tabla es la mas pesada y es ahi donde que queda
alguien me podria dar una orientada que hacer ... Gracias
y por que no lo haces a pulso.... bueno, solo para probar... y seria como traspasar campo por campo... por que puede que el problema sea el contenido de un campo específico

realiza algo así..

Código Delphi [-]
     With Tabla_Paradox Do
     Begin
         First; 
          While Not Eof Do 
          Begin

               Tabla_Firebird.SQL.Clear;
               Tabla_Firebird.SQL.Add('Insert Into "Tabla" ("Campo1", "Campo2", ...., "Campon")');
               Tabla_Firebird.SQL.Add('Values (:P1, :P2,...:Pn)');
               Tabla_Firebird.Params[0].AsString  := Tabla_Paradox ['campo1'];
               Tabla_Firebird.Params[1].AsInteger := Tabla_Paradox ['campo2'];
               Tabla_Firebird.Params[n].AsInteger := Tabla_Paradox ['campon'];               
               Tabla_Firebird.ExecSQL;
               Transactio_Firebird.Commit;
               Tabla_Paradox.Next;
          End;
     End;

Lo anterior esta realizado con tablas de DBase e Interbase,, y me funciona super... prueba este método... por que si el problema es el contenido de un campo, te puede saltar el error correspondiente

Salu2:p:D


La franja horaria es GMT +2. Ahora son las 15:02:19.

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