Erro em rotina de lançamento avulso
Enviado: Junho 30th, 2011, 11:59 am
Ola
Gustavo
Solicito sua ajuda.
Na rotina abaixo enumerei as linha para explicar.
Até a linha 27 ele executa bem, mas quando da movimentação para os campo da tabela da grade, linha 28, ele ocorre erro e exibe a mensagem da linha 39.
Preciso de uma orientação do que pode estar ocorrendo pois ja chequei todos os campos para ver se não era erro de digitação ou algo como um (;) sei que um erro de inconsistência, lembrado que a tabela GRADEPROD a chave é composta pelos campos ECF_NUMERO e PRO_CODIGGR.
visto que a sistematica do problema é, tenho uma venda e quando cadastro o item da venda ele executa essa rotina avulsa, filtrando os resgistros que compoem a produto e lançando os em uma tabela de grade com os campos ECF_NUMERO(numero da Venda), PRO_CODIGOGR(codigo da peça que compoem o produto que vem da Tabela ITECOMPPROD) e PRO_QUANTIDADE(quantidade de peças).
Se você puder ajudar-me agradeço.
1 // Variáveis Locais
2 CamposResultado: Variant;
3 Produto_fil: String; // Produto vendido
4 Quantid_Fil: Double Precision; // Quantidade Vendida
5 Venda_num: Double Precision; // Numero da venda
6 Wprodped: String; // Codigo do Produto (peças que Compoen o produto vendido)
7 Wquantped: Double Precision; // Qunatidade de peças
8 Wtotprodped: Double Precision; // Total de peças(Wquantped * Quantid_fil)
9
10 //A ROTINA
11
12 Begin
13 Produto_fil := TabGlobal.DITVENDA.PRO_CODIGO.Conteudo;
14 Quantid_fil := TabGlobal.DITVENDA.PRO_QUANTIDADE.Conteudo;
15 Venda_num := TabGlobal.DITVENDA.ECF_NUMERO.Conteudo;
16 end;
17 TabGlobal.DITECOMPPROD.filtro.Clear;
18 tabGlobal.DITECOMPPROD.filtro.Add('CPRO_CODIGO ='+ (Produto_fil));
19 TabGlobal.DITECOMPPROD.AtualizaSql;
20 tabglobal.DITECOMPPROD.First;
21 try
22 while tabglobal.DITECOMPPROD.Eof do
23 begin
24 if Ptabela(TabGlobal.DITECOMPPROD, ['CPRO_CODIGO'], [tabglobal.DITVENDA.PRO_CODIGO.Conteudo], ['CPPRO_CODIGO', 'CP_QUANT'],CamposResultado) then
25 begin
26 Wprodped:= CamposResultado[0];
27 Wquantped:= CamposResultado[1];
28 TabGlobal.DGRADPROD.ECF_NUMERO.Conteudo:= Venda_num ;
29 TabGlobal.DGRADPROD.PRO_CODIGOGR.Conteudo:= Wprodped;
30 Wtotprodped:= (Wquantped * Quantid_fil);
31 Showmessage('calc quantidade' + floattostr(Wtotprodped));
32 TabGlobal.DGRADPROD.PRO_QUANTIDADE.Conteudo:= TabGlobal.DGRADPROD.PRO_QUANTIDADE.Conteudo + Wtotprodped ;
33 TabGlobal.DGRADPROD.salva;
34 TabGlobal.DGRADPROD.Refresh;
35 end;
36 TabGlobal.DITECOMPPROD.next;
37 end;
38 except
39 showmessage('Erro de Leitura...');
40 end;
Gustavo
Solicito sua ajuda.
Na rotina abaixo enumerei as linha para explicar.
Até a linha 27 ele executa bem, mas quando da movimentação para os campo da tabela da grade, linha 28, ele ocorre erro e exibe a mensagem da linha 39.
Preciso de uma orientação do que pode estar ocorrendo pois ja chequei todos os campos para ver se não era erro de digitação ou algo como um (;) sei que um erro de inconsistência, lembrado que a tabela GRADEPROD a chave é composta pelos campos ECF_NUMERO e PRO_CODIGGR.
visto que a sistematica do problema é, tenho uma venda e quando cadastro o item da venda ele executa essa rotina avulsa, filtrando os resgistros que compoem a produto e lançando os em uma tabela de grade com os campos ECF_NUMERO(numero da Venda), PRO_CODIGOGR(codigo da peça que compoem o produto que vem da Tabela ITECOMPPROD) e PRO_QUANTIDADE(quantidade de peças).
Se você puder ajudar-me agradeço.
1 // Variáveis Locais
2 CamposResultado: Variant;
3 Produto_fil: String; // Produto vendido
4 Quantid_Fil: Double Precision; // Quantidade Vendida
5 Venda_num: Double Precision; // Numero da venda
6 Wprodped: String; // Codigo do Produto (peças que Compoen o produto vendido)
7 Wquantped: Double Precision; // Qunatidade de peças
8 Wtotprodped: Double Precision; // Total de peças(Wquantped * Quantid_fil)
9
10 //A ROTINA
11
12 Begin
13 Produto_fil := TabGlobal.DITVENDA.PRO_CODIGO.Conteudo;
14 Quantid_fil := TabGlobal.DITVENDA.PRO_QUANTIDADE.Conteudo;
15 Venda_num := TabGlobal.DITVENDA.ECF_NUMERO.Conteudo;
16 end;
17 TabGlobal.DITECOMPPROD.filtro.Clear;
18 tabGlobal.DITECOMPPROD.filtro.Add('CPRO_CODIGO ='+ (Produto_fil));
19 TabGlobal.DITECOMPPROD.AtualizaSql;
20 tabglobal.DITECOMPPROD.First;
21 try
22 while tabglobal.DITECOMPPROD.Eof do
23 begin
24 if Ptabela(TabGlobal.DITECOMPPROD, ['CPRO_CODIGO'], [tabglobal.DITVENDA.PRO_CODIGO.Conteudo], ['CPPRO_CODIGO', 'CP_QUANT'],CamposResultado) then
25 begin
26 Wprodped:= CamposResultado[0];
27 Wquantped:= CamposResultado[1];
28 TabGlobal.DGRADPROD.ECF_NUMERO.Conteudo:= Venda_num ;
29 TabGlobal.DGRADPROD.PRO_CODIGOGR.Conteudo:= Wprodped;
30 Wtotprodped:= (Wquantped * Quantid_fil);
31 Showmessage('calc quantidade' + floattostr(Wtotprodped));
32 TabGlobal.DGRADPROD.PRO_QUANTIDADE.Conteudo:= TabGlobal.DGRADPROD.PRO_QUANTIDADE.Conteudo + Wtotprodped ;
33 TabGlobal.DGRADPROD.salva;
34 TabGlobal.DGRADPROD.Refresh;
35 end;
36 TabGlobal.DITECOMPPROD.next;
37 end;
38 except
39 showmessage('Erro de Leitura...');
40 end;