Trabalho

Disponível somente no TrabalhosFeitos
  • Páginas : 7 (1712 palavras )
  • Download(s) : 0
  • Publicado : 6 de novembro de 2011
Ler documento completo
Amostra do texto
suntos abordados nesse relatório:

Usando o evento OnCalc

Usando o evento OnChange

Duas maneiras de se fazer um calculo

Usando os eventos OnActivate e OnDeactivate

Usando o evento AfterDelete

Usando o evento AfterScroll

Usando o evento OnCloseUp

Duas novas tabelas em nosso projeto

Uma outra tabela também importante

Atenção:

Os assuntos tratados aqui, fazem parte deuma série de estudos feitos em classe, esses assuntos são continuação de assuntos tratados em relatórios passados.

Usando o evento OnCalc:

Para criar um campo para Total Parcial: (Add New Field > Calculed)

Nome: totalpartical
Type: Float
Component: tbl_itenstotalparcial

Para calcular vai no evento: ONCalcField

OnCalc, é um evento que calcula os campos de uma tabela, é usado paramuitas coisas além de apenas cálculos.

Tbl_Itens > Event > OnCalcField

Um exemplo utilizando o evento OnCalc:

tbl_itens.FieldByName('totalparcial').asfloat :=
tbl_itens.FieldByName('qtd_item').asfloat *
tbl_itens.FieldByName('valor_item').asfloat ;

Usando o evento OnChange

Esse evento faz com que ao alterar a tabela, algo aconteça.

Na tabela Itens, quandoescolher o produto, ao inserir um item a QTDE será 1, o valor será preenchido automaticamente, será necessário apenas escolher o produto.

Na tbl_Itens > duplo click, ir no cod_prod no evento OnChange(ao alterar)

Para saber qual programar, devemos olhar qual campo é modificado, então eu sei que vou programa isso na Tbl_Itens, no campo cod_prod

Algoritmo para preencher o valor do produto:

Paratal, vou na tabela de itens e indico o código do produto vou no evento OnChange e programo.
Depois de escolher o produto, vou na tabela de produtos, busco o valor e preencho na tabela de itens o valor do produto.

tbl_prod.Locate('cod_prod',
tbl_itens.FieldbyName('cod_prod').asInteger,[]);

Modo de inserção, se a tabela não estiver no modo de inserção, eu devo coloca-la

if not(tbl_itens.State in [dsedit, dsinsert]) then
tbl_itens.Edit;

tbl_itens.FieldByName('valor_item').asFloat:= tbl_prod.FieldByName('valor_prod').asFloat;

tbl_itens.FieldbyName('qtd_item').AsFloat:= 1;

1º Maneira de fazer um calculo total(rotina):

Criar um campo label com nome: Total Geral com um edit, criar uma rotina para calcular o total.

Criar um procedimento(rotina) chamadoCalcula_Total; use CTRL+SHIFT+C para criar um procedimento com begin e end;

procedure TFrm_vendas.Calcula_Total;
var
aux: real;
begin

Algoritmo para realizar o calculo do total

Calculo do total:

Tenho que somar todos os valores parciais(total), para tal, posiciono a tabela de itens no primeiro registro enquanto não for o final da tabela de itens eu faço: aux:= aux + totalparcial(itens), vai para o próximo registro no final deste procedimento, aux terá o valor total.

Obs: Lembrar que você somente pode ir para o primeiro registro {navegar na tabela} se a mesma estiver em modo de browse(não está inserindo nem editando.).

if not (tbl_itens.State in [dsedit, dsinsert]) then
begin

Só executa se a tabela não estiver inserindo ou editando:

aux:=0;
tbl_itens.First;
while not (tbl_itens.Eof) do
begin
aux:= aux + tbl_itens.FieldbyName('totalparcial').AsFloat;
tbl_itens.Next;
end;

Edt_Total.Text:= formatfloat('R$ #,##0.00',aux); FormatFloat permite fazer formatações
end;

end;

Após salvar o registro, eu calculo o total com a rotina criada.

procedure TFrm_vendas.tbl_itensAfterPost(DataSet:TDataSet);
begin
tbl_itens.ApplyUpdates(0);
Calcula_Total;
end;

Antes de inserir algum item, chamar nossa rotina.

procedure TFrm_vendas.tbl_itensBeforeInsert(DataSet: TDataSet);
begin
tbl_itens.Last;
aux:= tbl_itens.fieldbyname('cod_item').asinteger;
Calcula_Total;
end;

Ou seja ele calcula o total antes e depois de inserir.

Mais para frente irei...
tracking img