DELPHI OUT OF MEMORY
07/07/2017
0
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
Posts
07/07/2017
Douglas Souza
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.
07/07/2017
Israel Lopes
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; end
Situaçã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;
15/08/2017
Douglas Souza
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.
Clique aqui para fazer login e interagir na Comunidade :)