Jump to content
Fórum Script Brasil
  • 0

Somar resultado de validação dentro de um Loop


moisesf

Question

ESTOU USANDO O CÓDIGO ABAIXO PARA SABER SE EXISTE AO MENOS UM CAMPO PREENCHIDO.

O FORMULÁRIO DEVE HAVER AO MENOS UM CAMPO, PODE SER QUALQUER CAMPO PREENCHIDO.

var soma: integer; sm: integer;
      TOTAL,SM1,SM2,SM3,SM4: Integer;
begin

IF DBEdit1.text='' THEN BEGIN
SM1:= 0;
END;
if DBEdit2.text='' THEN BEGIN
SM2:= 0;
END;
IF DBEdit3.text='' THEN BEGIN
SM3:= 0;
END;
IF DBEdit4.text='' THEN BEGIN
SM4:= 0;
END;
TOTAL:= SM1+SM2+SM3+SM4;

  IF TOTAL <> 0 THEN BEGIN

if ADOQuery1.state in [dsedit, dsinsert]  then
ADOQuery1.Post;
ADOQuery1.Refresh
end
else begin
MessageBox (Application.Handle, 'Preencha ao menos um campo!', 'Ops...', MB_OK );
   END;
MAS ACHEI QUE ESTE CÓDIGO QUE ESCREVI DARIA PARA MELHORAR EM MUITO. EU HAVIA PENSADO EM CRIAR UM LOOP E A CADA CAMPO EM BRANCO, SOMARIA (1) NUMA VARIÁVEL. SE A VARIÁVEL FOR IGUAL A (4), POIS SÃO QUATRO CAMPOS, TODOS OS CAMPOS ESTARIAM EM BRANCO E RETORNARIA UMA MENSAGEM PARA PREENCHER AO MENOS UM CAMPO. MAS O CÓDIGO ABAIXO ESTÁ TOTALMENTE ERRADO, PODERIAM ME DAR UM DIREÇÃO? oBRIGADO
for I := 0 to ComponentCount -1 do
    begin
       if Components[I] is TDBEdit then
          if TDBEdit(Components[I]).Text = '' then
         
             SM1:= I;
             SM2:= (SM1 + I)

    end;
           TOTAL:=intTostr(SM2);
        showmessage(SM2);  

IF SM2 := '4' THEN BEGIN
SHOWMESAGE('PREENCHA AO MENOS UM CAMPO!');

END;

ELSE BEGIN

AQUI EU EXECUTARIA O CADASTRO, POI HÁ AO MENOS UM CAMPO PREENCHIDO

END;


END;

Link to comment
Share on other sites

2 answers to this question

Recommended Posts

  • 0

DA FORMA QUE FIZ AGORA, DEU CERTO, AGUÉM TEM ALGUMA IDÉIA MAIS LIMPA QUE ESTA?

var

SOMA0,SOMA1,SOMA2,i: Integer;


TOTAL: STRING;
begin
SOMA1:=0;
SOMA0:=0;

 for I := 0 to ComponentCount -1 do
    begin
if Components[I] is TDBEdit then
if TDBEdit(Components[I]).Text = '' then  BEGIN
 SOMA1:=SOMA1+1;
END;
SOMA0:=SOMA1;

end;
        TOTAL:= INTTOSTR(SOMA0);

  

IF TOTAL = '4' THEN  begin
 MessageBox (Application.Handle, 'Preencha ao menos um campo!', 'Ops...', MB_OK );
 end
 else begin

if ADOQuery1.state in [dsedit, dsinsert]  then  begin
ADOQuery1.Post;
ADOQuery1.Refresh;
end;
end;

Link to comment
Share on other sites

  • 0

A idéia é essa mesmo:

procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
   for i := 0 to ComponentCount -1 do
    begin
       if Components[i] is TEdit then
          if TEdit(Components[i]).Text = '' then
             showmessage('Existem Campos Não Preenchidos');
    end;

end;

abraço

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...