DELPHI OUT OF MEMORY
Tenho tido problemas com Delphi quando preciso popular tabelas. Por exemplo update da tabela A na tabela B quando o volume de registros é grande.
Já fiz a troca da RLINK32.DLL por uma mais nova e o erro permanece.
Uso Firebird na versão 2.5 e ClientDataSet chamado de uma Query
Ao acionar o While not TabelaTal.Eof Do
O sistema roda cerca de 1500 a 2000 e já carrega um Out of Memory.
O que me aconselham?
Onde estou errando?
Já fiz a troca da RLINK32.DLL por uma mais nova e o erro permanece.
Uso Firebird na versão 2.5 e ClientDataSet chamado de uma Query
Ao acionar o While not TabelaTal.Eof Do
O sistema roda cerca de 1500 a 2000 e já carrega um Out of Memory.
O que me aconselham?
Onde estou errando?
Israel Lopes
Curtidas 0
Respostas
Douglas Souza
07/07/2017
Fala Israel, tudo bem?
Poste o bloco de código que realiza o processo de update para que eu ter uma ideia do que realmente está acontecendo.
Att, Douglas Claudio.
Poste o bloco de código que realiza o processo de update para que eu ter uma ideia do que realmente está acontecendo.
Att, Douglas Claudio.
GOSTEI 0
Israel Lopes
07/07/2017
Situação 1
Situação 2
var
componto:string;
tamanho: integer;
begin
while not DM_DADOS.cds_lfncm.eof do
begin
componto:=dm_dados.cds_LFNCMCODNCM.Asstring;
edt_ncm.Text:=tirapontos(componto);
tamanho:=Length(edt_ncm.Text);
if tamanho=8 then
begin
DM_DADOS.cds_lfclfiscal.Close;
dm_Dados.cds_lfclfiscal.FetchParams;
DM_dADOS.cds_lfclfiscal.CommandText:=''select * from lfclfiscal where codfisc=:fisc'';
dm_dados.cds_lfclfiscal.Params.ParamByName(''fisc'').AsString:=edt_ncm.text;
dm_dados.cds_lfclfiscal.Open;
if dm_dados.cds_LISTAPRODUTOS.IsEmpty then
begin
dm_dados.cds_lfclfiscal.Append;
dm_dados.cds_LFCLFISCALCODEMP.Value:=99;
dm_dados.cds_LFCLFISCALCODFILIAL.Value:=1;
dm_Dados.cds_LFCLFISCALCODFISC.asstring:=edt_ncm.Text;
dm_Dados.cds_LFCLFISCALDESCFISC.Value:=copy(dm_dados.cds_LFNCMDESCNCM.Value,1,50);
dm_dados.cds_LFCLFISCALTPREDICMSFISC.AsString:=''B'';
dm_dados.cds_LFCLFISCALSITPISFISC.Value:=''T'';
dm_dados.cds_LFCLFISCALSITCOFINSFISC.Value:=''T'';
dm_dados.cds_LFCLFISCALTIPOST.Value:=''SI'';
dm_Dados.cds_LFCLFISCAL.ApplyUpdates(0);
dm_dados.dts_lfclfiscal:=nil;
dm_dados.cds_LFNCM.Next;
end;
endSituação 2
while not cds_eqproduto.eof do
begin
DM_DADOS.cds_listaprodutos.Close;
dm_Dados.cds_listaprodutos.FetchParams;
DM_dADOS.cds_listaprodutos.CommandText:=''select * from listaprodutos where produto like :prod'';
dm_dados.cds_LISTAPRODUTOS.Params.ParamByName(''prod'').AsString:=''%''+trim(cds_EQPRODUTODESCPROD.AsString)+''%'';
dm_dados.cds_listaprodutos.Open;
if dm_dados.cds_LISTAPRODUTOS.IsEmpty then
begin
showmessage(''Produto não localizado'');
end
else
begin
if dm_dados.cds_LISTAPRODUTOSCODNCM.AsString<>''0'' then
begin
cds_eqproduto.Edit;
cds_EQPRODUTOCODFISC.AsString:=dm_dados.cds_LISTAPRODUTOSCODNCM.AsString;
cds_EQPRODUTO.applyupdates(0);
dm_Dados.Transacao.CommitRetaining;
end
else
begin
showmessage(''Não é permitido a inserção de produtos com NCM igual a 0'');
end;
end;
cds_EQPRODUTO.Next;
end;
GOSTEI 0
Douglas Souza
07/07/2017
Fala Israel, tudo bem?
Perdoe-me a falta de resposta, mas acredito que você já tenha resolvido o problema.
Se sim, compartilhe a solução ;)
Um forte abraço.
Perdoe-me a falta de resposta, mas acredito que você já tenha resolvido o problema.
Se sim, compartilhe a solução ;)
Um forte abraço.
GOSTEI 0