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 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 '+ | |
| − | + | '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 | + | 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.