Mudanças entre as edições de "Scripts de Tela"

 
(2 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
===Exemplo 1===
 
 
Exemplo de script para o preenchimento do valor da última venda no cadastro do item junto ao orçamento de vendas.
 
Exemplo de script para o preenchimento do valor da última venda no cadastro do item junto ao orçamento de vendas.
  
Linha 11: Linha 10:
 
   try       
 
   try       
 
     Q.Add('SELECT ITE.VALORUNITARIO, '+         
 
     Q.Add('SELECT ITE.VALORUNITARIO, '+         
  '      PED.NUMERO '+         
+
          '      PED.NUMERO '+         
  'FROM PEDIDOITENS ITE '+         
+
          'FROM PEDIDOITENS ITE '+         
 
           'INNER JOIN PEDIDOS PED ON PED.ID = ITE.PEDIDO '+                                             
 
           'INNER JOIN PEDIDOS PED ON PED.ID = ITE.PEDIDO '+                                             
 
           'WHERE ITE.ITEM = :ITEM '+
 
           'WHERE ITE.ITEM = :ITEM '+
Linha 34: Linha 33:
 
  end;             
 
  end;             
  
No evento "OnEditChange" do campo item é realizada chamada da função quando o item estiver em modo de edição.
+
No evento "OnEditChange" do campo ITEM é realizada a chamada da função quando o item estiver em modo de edição.
 
  procedure CampoItemOnChange;
 
  procedure CampoItemOnChange;
 
  var
 
  var

Edição atual tal como às 19h10min de 20 de junho de 2021

Exemplo de script para o preenchimento do valor da última venda no cadastro do item junto ao orçamento de vendas.

Função para retornar o valor da ultima venda.

function RetornaValorUltimaVenda: Double;
var        
  Q: TPHQuery;                                               
begin
  Q := NewPHQuery;  
  try      
   Q.Add('SELECT ITE.VALORUNITARIO, '+        
         '       PED.NUMERO '+        
         'FROM PEDIDOITENS ITE '+        
         'INNER JOIN PEDIDOS PED ON PED.ID = ITE.PEDIDO '+                                             
         'WHERE ITE.ITEM = :ITEM '+
         'AND PED.PESSOA = :PESSOA '+
         'AND ITE.SITUACAO IN(5,6) '+
         'AND PED.NUMERO = (SELECT MAX(C.NUMERO) '+
         '                  FROM PEDIDOITENS B '+
         '                  INNER JOIN PEDIDOS C ON C.ID = B.PEDIDO '+
         '                  INNER JOIN PESSOAS D ON D.ID = C.PESSOA '+
         '                  WHERE B.ITEM = :ITEM '+
         '                  AND D.ID = :PESSOA '+
         '                  AND B.SITUACAO IN(5,6)) ');
    Q.ParamByName('ITEM').AsInteger   := ORCAMENTOITENS. FieldByName('ITEM').asInteger;
    Q.ParamByName('PESSOA').AsInteger := ORCAMENTOITENS.DataSetPai.FieldByName('PESSOA').asInteger;
    Q.Open;
 
    Result := Q.FieldByName('VALORUNITARIO').asFloat;                                      
  finally
    Q.Free;
  end;      
end;            

No evento "OnEditChange" do campo ITEM é realizada a chamada da função quando o item estiver em modo de edição.

procedure CampoItemOnChange;
var
  valor: double;                                        
begin
  if (ORCAMENTOITENS.State in [dsEdit, dsInsert])then
  begin
    valor := RetornaValorUltimaVenda;
    if valor > 0 then
      ORCAMENTOITENS.FieldByName('VALORUNITARIO').asFloat := valor;                                                        
  end;                                                          
end;            

Nos script de tela, ao final sempre teremos a atribuição dos eventos. É este ponto do script que é executado pelo sistema ao iniciar o engenho do script, os demais procedimento, só serão chamadas se atribuídos a algum outro objeto.

begin
  ORCAMENTOITENS.CampoDoNome('ITEM').OnEditChange := @CampoItemOnChange;                                          
end.