Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

wilsoncrescencio

Como selecionar dados gravados usando if no before post

Recommended Posts

Eu tenho uma tabela onde estão sendo gravadas as matérias e notas dos alunos.

TAB_ BIMESTRECOD_BIMESTREMATERIAPETCTTMB

Pois bem... eu gravo os dados através deste código

 

procedure TBIMESTRE1.FormKeyPress(Sender: TObject; var Key: Char);beginif Key = #13 thenBEGIN	if (DBLookupComboBox1.Text = '') then //Verifica se o campo "matéria" foi preenchido	begin	Messagedlg('O campo "Matéria" deve ser preenchido!', mtInformation, [mbOk], 0);	if DBLookupComboBox1.CanFocus then	   DBLookupComboBox1.SetFocus;	  EXIT;	  END;TAB1.Edit;TAB1MAT.Text := DBLOOKUPCOMBOBOX1.Text;TAB1.Post;master.Next;
utilizando-me do FormKeyPress

 

A média bimestral e o arredondamento eu faço através de código no BeforePos da tabela.

 

Acontece que quando a matéria for Educação Fícia (EF) as notas de TC, TT, MB devem ser iguais à nota de PE. Quando não devem estar dentro da operação normal como toda matéria.

Não está dando certo...

 

Dêm uma olhada no script... onde estou errando?

TAB1.Edit;   TAB1MB.AsFloat:= ((TAB1PE.AsFloat*0.9)+(TAB1TC.AsFloat*0.1)+(TAB1TT.AsFloat*1.2))/2;		   if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) >= 0.75 then			 TAB1MB.asfloat :=	  TAB1MB.asfloat + (1 - (TAB1MB.asfloat - int(TAB1MB.asfloat)));		   if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) < 0.75 then		   if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) >= 0.5 then			  TAB1MB.asfloat :=	 TAB1MB.asfloat - ((TAB1MB.asfloat-int(TAB1MB.asfloat))-0.5);		   if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) < 0.5 then		   if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) >= 0.25 then			  TAB1MB.asfloat :=	 TAB1MB.asfloat + (0.5 - (TAB1MB.asfloat-int(TAB1MB.asfloat)));		   if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) < 0.25 then			 TAB1MB.asfloat :=	  TAB1MB.asfloat - (TAB1MB.asfloat - int(TAB1MB.asfloat));		   if TAB1MB.asfloat > 10.00 then			begin			 TAB1MB.asfloat:= 10.00;			 TAB1MB.asfloat:= TAB1MB.asfloat;IFTAB1MAT.Text = 'EF' THENTAB1TT.AsFloat := TAB1PE.AsFloat;TAB1TC.AsFloat := TAB1PE.AsFloat;TAB1MB.AsFloat := TAB1PE.AsFloat;END;END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que somente o seu bloco de comandos esta com problemas, tente assim:

 

TAB1.Edit;TAB1MB.AsFloat:= ((TAB1PE.AsFloat*0.9)+(TAB1TC.AsFloat*0.1)+(TAB1TT.AsFloat*1.2))/2;if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) >= 0.75 then	TAB1MB.asfloat :=	  TAB1MB.asfloat + (1 - (TAB1MB.asfloat - int(TAB1MB.asfloat)));if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) < 0.75 then	if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) >= 0.5 then		TAB1MB.asfloat :=	 TAB1MB.asfloat - ((TAB1MB.asfloat-int(TAB1MB.asfloat))-0.5);if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) < 0.5 then	if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) >= 0.25 then		TAB1MB.asfloat :=	 TAB1MB.asfloat + (0.5 - (TAB1MB.asfloat-int(TAB1MB.asfloat)));if (TAB1MB.asfloat - Int(TAB1MB.asfloat)) < 0.25 then	TAB1MB.asfloat :=	  TAB1MB.asfloat - (TAB1MB.asfloat - int(TAB1MB.asfloat));if TAB1MB.asfloat > 10.00 then	begin	TAB1MB.asfloat:= 10.00;	TAB1MB.asfloat:= TAB1MB.asfloat;	IF TAB1MAT.Text = 'EF' THEN		BEGIN		TAB1TT.AsFloat := TAB1PE.AsFloat;		TAB1TC.AsFloat := TAB1PE.AsFloat;		TAB1MB.AsFloat := TAB1PE.AsFloat;		END;	END;END;

Compartilhar este post


Link para o post
Compartilhar em outros sites

com esse código só precisei colocar mais um end; e um begin e funcionou...

if TAB1MB.asfloat > 10.00 then	begin	TAB1MB.asfloat:= 10.00;	TAB1MB.asfloat:= TAB1MB.asfloat;end;Begin	IF TAB1MAT.Text = 'EF' THEN		BEGIN		TAB1TT.AsFloat := TAB1PE.AsFloat;		TAB1TC.AsFloat := TAB1PE.AsFloat;		TAB1MB.AsFloat := TAB1PE.AsFloat;		END;	END;END;

Brigadão de novo Marcio... um grande abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.