PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Campos Calculados IBO - Dúvida 2 #278564

22/04/2005

0

Pessoal, vou postar aki um exemplo que fiz no meu sistema com campos calculados, um funcionando e o outro nao, pra ver aonde podemos chegar com o intuito de tirar dúvidas que persistem em mertelar a minha cabeça e quem sabe de um montão de gente de nossa comunidade.

a bronca é com os campos calculados do IBO, o primeiro exemplo está funcionando numa boa, mas gostaria de informações se a minha linha de penssamento está correta.

// cálculo do total das horas normais previsto
if AField.FieldName = ´TOTALHORASPREVISTO´ then
begin
index := 1;
for index := 1 to 2 do
begin
if index = 1 then
begin
turno1 := (arow.byname(´PREVISTO_HORA_FINAL´).AsDateTime -
arow.byname(´PREVISTO_HORA_INICIAL´).AsDateTime) ;
AField.AsDateTime := (turno1+turno2);
end;
if index = 2 then
begin
turno2 := (arow.byname(´PREVISTO_HORA_FINAL´).AsDateTime -
arow.byname(´PREVISTO_HORA_INICIAL´).AsDateTime) ;
end;
end;
end;

esse exemplo acima, criei uma variavel index pra saber em que turno (na minha grid), está posicionada o ponteiro de dados, tanto, que apos a criação dessa variavel, verifico em qual turno está o ponteiro e alimento uma variavel turno1, faço o mesmo pro outro turno e na verificação do turno1, retorno ao grid um somatório dos valores das 2 variáveis que são alimentadas com os dados dos 2 turnos.

funciona numa boa, mas se por exemplo, eu pegar a linha de código que fica situada na primeira condição e a colocar na segunda condição, fica tudo doido na grid.

Acima já tem uma dúvida em questão.

agora vamos a um problema mais chatinho:

essa rotina abaixo verifica a quantidade de horas extras:

if AField.FieldName = ´HORASEXTRASTRABALHADO´ then
begin
afield.AsDateTime :=(arow.byname(´TOTALHORASTRABALHADO´).AsDateTime) -
(arow.byname(´LIMITE_HORA_NORMAL_DIA´).AsDateTime);
end;

o que ela me retorna um valor correto, agora só se que ele apresenta o valor na grid abaixo da grid corrente, onde o ponteiro de dados está situado.

isso é errado e vai dar um problemão mais a frente.

Vale ressaltar que esses erros que coloquei acima, estão descritos de uma maneira bem mastigada, que na realidade estão me dando a maior dor de cabeça, e atrasando o projeto, que é de uma folha de apuração de ponto.

Se tiverem exemplos, aplicações ou mesmo units onde puder de ajudar com uma maior gama de informações. fico agradecido.

Technos


Technos

Technos

Responder

Posts

22/04/2005

Technos

Só lembrando:

Pelo o que andei percebendo com essa rotina oncalculateFields do IBO query, é que a mesma trabalha linha por linha da tabela, ou seja, se voce faz um calculo, ele replica o mesmo calculo pra todos os registros.

De imediato, notei isso, estou certo ou errado ?


Responder

Gostei + 0

25/04/2005

Technos

observando a questão, estou notando um comportamento do IBO em relação a campos calculados:

Ele nao usa como parametro de cálculo de um outro campo calculado, o valor de um campo calculado...

Ainda mais na minha questão, pois estou exibindo os valores desses calculos diretamente numa grid.

Vajamos por que:

Tentei realizar uma soma por exemplo... ele fez e eu exibi na grid. Até aí tudo bem. Mas, quando eu pego o valor dessa soma, e na mesma grid, na mesma ´TUPLA´ de registro, tento realizar alguma operação com esse valor para alimentar outro campo calculado, ele faz o cálculo, mas só exibe na ´TUPLA´ abaixo da corrente.

Penssei numa questão de sincronismo... mas nao deu certo.

o que esto uachando é isso, o valor de um campo calculado nao pode ser usado como parametro de um outro campo calculado, na mesma linha de registro.

Sabem algo sobre isso ?
A linha de penssamento que estou seguindo está correta ?

Desde já agradeço.

Technos


Responder

Gostei + 0

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

Aceitar