Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Error "Sin memoria" con Paradox y Delphi 2010 (https://www.clubdelphi.com/foros/showthread.php?t=74144)

agustibaldo 01-06-2011 13:57:19

Error "Sin memoria" con Paradox y Delphi 2010
 
Hola gente de ClubDelphi, les escribo porque tengo un problema cuando ejecuto un proceso de una aplicación hecha con D2010.

En la mitad del proceso, hace sucesivas veces un Query sobre Paradox, lo recorre y lo almacena en una tabla de Paradox.

Esto lo hace correctamente hasta la mitad del proceso. En cada ciclo, se cierran y limpian los query y las tablas de trabajo.

Esta aplicación corre contra un servidor. Estuve revisando los parámetros del BDE y sospecho que puede tener relación con el SHAREDMEMSIZE que esta seteado en 4096. En mi PC lo tengo seteado como 8192 y cuando ejecuto el proceso con datos locales no tengo inconvenientes.

A alguien se le ocurre que puede estar sucediendo?

Desde ya, muchas gracias.

Casimiro Notevi 01-06-2011 17:40:17

Hombre, así sin ver nada :confused:
¿Qué tal un poquito de código fuente? ;)

agustibaldo 01-06-2011 17:55:54

Tienes razón.. mis disculpas..

Código Delphi [-]
/* CONSULTA SOBRE PARADOX */
qeResultado2.Active := false;
qeResultado2.SQL.Clear;
qeResultado2.SQL.Add('SELECT D.Tipo, D.Talonario, D.Nro, D.Cuenta, D.FechaVto, D.FechaAcr, '+
                     '       D.CodBco, D.NroExt, D.Importe, D.Origen, D.Estado, D1.Nombre '+
                     'FROM Valores D, Bancos D1 '+
                     'WHERE (D1.Codigo = D.CodBco) '+
                     'AND (D.Estado IN (100, 101, 102, 103, 104)) ');
qeResultado2.SQL.Add('AND D.FechaAcr >= ''' + FormatDateTime('mm/dd/yyyy', Date) + '''');
qeResultado2.Active := true;

/* CONSULTA SOBRE SQL SERVER */
sqlQueryDefaultAux2.Active := false;
sqlQueryDefaultAux2.SQL.Clear;
sqlQueryDefaultAux2.SQL.Add('SELECT Cliente, Zona '+
                            'FROM Cuentas.Clientes '+
                            'WHERE Zona IN (' + Zonas + ') ');
sqlQueryDefaultAux2.Active := true;

if not tbResultado2.Active then
   tbResultado2.Open;
tbResultado2.EmptyTable;
qeResultado2.First;
while not qeResultado2.Eof do
begin
   if sqlQueryDefaultAux2.Locate('Cliente', qeResultado2.FieldByName('Cuenta').AsInteger, []) then
   begin
      tbResultado2.Insert;
      tbResultado2.FieldByName('Tipo').AsString := qeResultado2.FieldByName('Tipo').AsString;
      tbResultado2.FieldByName('Talonario').AsInteger := qeResultado2.FieldByName('Talonario').AsInteger;
      tbResultado2.FieldByName('Nro').AsInteger := qeResultado2.FieldByName('Nro').AsInteger;
      tbResultado2.FieldByName('Zona').AsInteger := sqlQueryDefaultAux2.FieldByName('Zona').AsInteger;
      tbResultado2.Post;
   end;
   qeResultado2.Next;
end;

donde tbResultado2 es una tabla en Paradox donde quiero guardar la información que recupero.
Esto surge a raíz de que tengo que unir tablas que se encuentran en Paradox y SQL Server.
Aproximadamente qeResultado2 recupera 1700 registros que recorre y compara con un Locate contra el query en SQL Server.

El error "salta" después de numerosos bucles del while en if sqlQueryDefaultAux2.Locate('Cliente', qeResultado2.FieldByName('Cuenta').AsInteger, []) then.

Cualquier detalle consultame y trato de explicarlo mejor.
De paso te consulto, existe alguna forma de linkear tablas en Paradox con SQL Server y ahorrarme esto?

Desde ya, muchas gracias.
Saludos.


La franja horaria es GMT +2. Ahora son las 16:43:25.

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