Fórum O que esta errado nesta rotina Delphi #585347

28/08/2017

0

frmmodulo.boleto.Imprimir;

// inicio problema
frmmodulo.qrconfig.Open;
if frmmodulo.qrconfig.FieldByName('CONTROLA_ENTREGA').AsInteger = 1 then
begin
FRMVENDA_ENTREGA := TFRMVENDA_ENTREGA.create(self);
FRMVENDA_ENTREGA.qrEntrega.Open;
while FRMVENDA_ENTREGA.qrEntrega.RecordCount > 0 do
FRMVENDA_ENTREGA.qrEntrega.delete;

frmvenda.qrvenda_produto.First;
while not frmvenda.qrvenda_produto.eof do
begin
if frmvenda.qrvenda_produto.FieldByName('qtde').AsFloat > 0 then
begin
FRMVENDA_ENTREGA.qrEntrega.Insert;
FRMVENDA_ENTREGA.qrEntrega.FieldByName('codigo').asstring :=
frmvenda.qrvenda_produto.FieldByName('codproduto').asstring;
FRMVENDA_ENTREGA.qrEntrega.FieldByName('produto').asstring :=
frmvenda.qrvenda_produto.FieldByName('produto').asstring;
FRMVENDA_ENTREGA.qrEntrega.FieldByName('unidade').asstring :=
frmvenda.qrvenda_produto.FieldByName('numeracao').asstring;
FRMVENDA_ENTREGA.qrEntrega.FieldByName('qtde_vendida').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('qtde').AsFloat;
FRMVENDA_ENTREGA.qrEntrega.FieldByName('qtde_entregue').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('qtde').AsFloat;
FRMVENDA_ENTREGA.qrEntrega.FieldByName('qtde_saldo').AsFloat := 0;
FRMVENDA_ENTREGA.qrEntrega.FieldByName('item').asstring :=
frmvenda.qrvenda_produto.FieldByName('item').asstring;
FRMVENDA_ENTREGA.qrEntrega.post;
end;
frmvenda.qrvenda_produto.next;
end;
FRMVENDA_ENTREGA.qrEntrega.IndexFieldNames := 'ITEM';
FRMVENDA_ENTREGA.showmodal;
end;


// movimento de produto verificar se esta correto o estoque

frmmodulo.qrproduto_mov.Open;
frmvenda.qrvenda_produto.First;
while not frmvenda.qrvenda_produto.eof do
begin

IBQuery1.close;
IBQuery1.sql.clear;
IBQuery1.sql.add('insert into c000032');
IBQuery1.sql.add('(codigo,codnota,numeronota,');
IBQuery1.sql.add('codproduto,qtde,unitario,');
IBQuery1.sql.add('total,desconto,acrescimo,unidade,aliquota,cst,');
IBQuery1.sql.add('cupom_item,cupom_numero,cupom_modelo,');
IBQuery1.sql.add
('ecf_serie,ecf_caixa,codcliente,codvendedor,movimento,data,');
IBQuery1.sql.add
('serial,codgrade,movimento_estoque,pis,cofins,credito_icms,codsubgrupo,codbarra,cfop)');
IBQuery1.sql.add('values');
IBQuery1.sql.add('(:xcodigo,:xcodnota,:xnumeronota,');
IBQuery1.sql.add(':xcodproduto,:xqtde,:xunitario,');
IBQuery1.sql.add
(':xtotal,:xdesconto,:xacrescimo,:xunidade,:xaliquota,:xcst,');
IBQuery1.sql.add(':xcupom_item,:xcupom_numero,:xcupom_modelo,');
IBQuery1.sql.add
(':xecf_serie,:xecf_caixa,:xcodcliente,:xcodvendedor,:xmovimento,:xdata,');
IBQuery1.sql.add
(':xserial,:xcodgrade,:xmovimento_estoque,:xpis,:xcofins,:xcredito_icms,:xsubgrupo,:xcodbarra,:xcfop)');

IBQuery1.params.parambyname('xcodigo').asstring :=
frmprincipal.codifica('000032');
IBQuery1.params.parambyname('xcodnota').asstring :=
copy(frmvenda.lvenda_codigo.caption, 1, 6);
IBQuery1.params.parambyname('xnumeronota').asstring :=
frmvenda.lvenda_codigo.caption;
IBQuery1.params.parambyname('xcodproduto').asstring :=
frmvenda.qrvenda_produto.FieldByName('codproduto').asstring;
IBQuery1.params.parambyname('xqtde').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('qtde').AsFloat;
IBQuery1.params.parambyname('xunitario').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('unitario').AsFloat;
IBQuery1.params.parambyname('xtotal').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('total').AsFloat;
IBQuery1.params.parambyname('xdesconto').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('desconto').AsFloat;
IBQuery1.params.parambyname('xacrescimo').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('acrescimo').AsFloat;
IBQuery1.params.parambyname('xunidade').asstring :=
frmvenda.qrvenda_produto.FieldByName('numeracao').asstring;
IBQuery1.params.parambyname('xALIQUOTA').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('aliquota').AsFloat;
IBQuery1.params.parambyname('xCST').asstring :=
frmvenda.qrvenda_produto.FieldByName('CST').asstring;
IBQuery1.params.parambyname('xcupom_item').asstring :=
frmprincipal.zerarcodigo(frmvenda.qrvenda_produto.FieldByName('item')
.asstring, 3);
IBQuery1.params.parambyname('xcfop').asstring := '5102';
IBQuery1.params.parambyname('xcupom_numero').asstring := numero_cupomx;
IBQuery1.params.parambyname('xcupom_modelo').asstring := '2D';
IBQuery1.params.parambyname('xSERIAL').asstring := '';
IBQuery1.params.parambyname('xcodgrade').asstring := '';
IBQuery1.params.parambyname('xmovimento_estoque').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('qtde').AsFloat * (-1);
if frmvenda.qrvenda_produtoNUMERACAO.asstring = 'OS' then
IBQuery1.params.parambyname('xmovimento_estoque').AsFloat := 0;
IBQuery1.params.parambyname('xcredito_icms').AsFloat := 0;
IBQuery1.params.parambyname('xsubgrupo').asstring :=
frmvenda.qrvenda_produto.FieldByName('codsubgrupo').asstring;
IBQuery1.params.parambyname('xcodbarra').asstring :=
frmvenda.qrvenda_produto.FieldByName('codbarras').asstring;

if frmvenda.qrvenda_produtopiscofins.asstring = 'S' then
begin
IBQuery1.params.parambyname('xpis').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('total').AsFloat * vpis / 100;
IBQuery1.params.parambyname('xcofins').AsFloat :=
frmvenda.qrvenda_produto.FieldByName('total').AsFloat * vcofins / 100;
end
else
begin
IBQuery1.params.parambyname('xpis').AsFloat := 0;
IBQuery1.params.parambyname('xcofins').AsFloat := 0;
end;

if ecf_modelo <> '' then
begin
// ibquery1.params.parambyname('xecf_serie').asstring := frmprincipal.pstatus.Panels[11].Text;
// ibquery1.params.parambyname('xecf_caixa').asstring := frmprincipal.pstatus.Panels[9].Text;
end;
IBQuery1.params.parambyname('xcodcliente').asstring :=
frmvenda.lcliente_codigo.caption;
IBQuery1.params.parambyname('xcodvendedor').asstring :=
frmvenda.lvendedor_codigo.caption;

case frmvenda.qrvenda_produto.FieldByName('tipo').AsInteger of
0:
IBQuery1.params.parambyname('xMOVIMENTO').AsInteger := 2; // VENDA
1:
begin
IBQuery1.params.parambyname('xMOVIMENTO').AsInteger := 2;
// VENDA SERIAL
IBQuery1.params.parambyname('xSERIAL').asstring :=
frmvenda.qrvenda_produto.FieldByName('serial').asstring;
end;
2:
begin
IBQuery1.params.parambyname('xMOVIMENTO').AsInteger := 2;
// VENDA grade
IBQuery1.params.parambyname('xcodgrade').asstring :=
frmvenda.qrvenda_produto.FieldByName('codgrade').asstring;
end;

4:
IBQuery1.params.parambyname('xMOVIMENTO').AsInteger := 4;
// devolucao de VENDA

7:
IBQuery1.params.parambyname('xMOVIMENTO').AsInteger := 7;
// devolucao de VENDA

10:
IBQuery1.params.parambyname('xMOVIMENTO').AsInteger := 7; // VENDA
11:
begin
IBQuery1.params.parambyname('xMOVIMENTO').AsInteger := 7;
// VENDA SERIAL
IBQuery1.params.parambyname('xSERIAL').asstring :=
frmvenda.qrvenda_produto.FieldByName('serial').asstring;
end;
12:
begin
IBQuery1.params.parambyname('xMOVIMENTO').AsInteger := 7;
// VENDA grade
IBQuery1.params.parambyname('xcodgrad
Claudemir Laureano

Claudemir Laureano

Responder

Post mais votado

28/08/2017

Claudemir, vamos por partes.... quando colar código utilize as tag clicando no '</>'!

Agora quanto ao seu código, comece colocando try/exception end e verifique executando no passo a passo.
E reporte se em que local especificamente o erro ocorre.
segue um exemplo....

// inicio problema
frmmodulo.qrconfig.Open;
if frmmodulo.qrconfig.FieldByName('CONTROLA_ENTREGA').AsInteger = 1 then
begin
	FRMVENDA_ENTREGA := TFRMVENDA_ENTREGA.create(self);
	FRMVENDA_ENTREGA.qrEntrega.Open;
	while FRMVENDA_ENTREGA.qrEntrega.RecordCount > 0 do
		FRMVENDA_ENTREGA.qrEntrega.delete;
	frmvenda.qrvenda_produto.First;
	while not frmvenda.qrvenda_produto.eof do
	begin
		if frmvenda.qrvenda_produto.FieldByName('qtde').AsFloat > 0 then
		begin
			try
				FRMVENDA_ENTREGA.qrEntrega.Insert;
				FRMVENDA_ENTREGA.qrEntrega.FieldByName('codigo').asstring := frmvenda.qrvenda_produto.FieldByName('codproduto').asstring;
				FRMVENDA_ENTREGA.qrEntrega.FieldByName('produto').asstring := frmvenda.qrvenda_produto.FieldByName('produto').asstring;
				FRMVENDA_ENTREGA.qrEntrega.FieldByName('unidade').asstring := frmvenda.qrvenda_produto.FieldByName('numeracao').asstring;
				FRMVENDA_ENTREGA.qrEntrega.FieldByName('qtde_vendida').AsFloat := frmvenda.qrvenda_produto.FieldByName('qtde').AsFloat;
				FRMVENDA_ENTREGA.qrEntrega.FieldByName('qtde_entregue').AsFloat := frmvenda.qrvenda_produto.FieldByName('qtde').AsFloat;
				FRMVENDA_ENTREGA.qrEntrega.FieldByName('qtde_saldo').AsFloat := 0;
				FRMVENDA_ENTREGA.qrEntrega.FieldByName('item').asstring := frmvenda.qrvenda_produto.FieldByName('item').asstring;
				FRMVENDA_ENTREGA.qrEntrega.post;
			exception
				//show...;
			end;
		end;
		frmvenda.qrvenda_produto.next;
	end;
	FRMVENDA_ENTREGA.qrEntrega.IndexFieldNames := 'ITEM';
	FRMVENDA_ENTREGA.showmodal;
end;

Luiz Vichiatto

Luiz Vichiatto
Responder

Gostei + 2

Mais Posts

30/08/2017

Claudemir Laureano

Olá eu uso o try/exception end, no arquivo de log gerado me apresenta
</></+--Erro5--+
Cannot retrieve Resultset data
insert into c000048
(codigo,data,codcliente,codvendedor,codcaixa,
total,subtotal,meio_dinheiro,meio_chequeav,meio_chequeap,
meio_cartaocred,meio_cartaodeb,meio_crediario,meio_convenio,meio_financeira,
desconto,acrescimo,obs,NUMERO_CUPOM_FISCAL,cupom_fiscal,retirado,cod_financeira,cod_financeira_lancto,nrvenda, observacao)
values
(:codigo,:data,:codcliente,:codvendedor,:codcaixa,
:total,:subtotal,:meio_dinheiro,:meio_chequeav,:meio_chequeap,
:meio_cartaocred,:meio_cartaodeb,:meio_crediario,:meio_convenio,:meio_financeira,
:desconto,:acrescimo,:obs,:NUMERO_CUPOM_FISCAL,:cupom_fiscal,:retirado,:cod_financeira,:cod_financeira_lancto,:nrvenda, :observacao)>
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar