Ir para conteúdo
Fórum Script Brasil
  • 0

Somar resultado de validação dentro de um Loop


moisesf

Pergunta

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 para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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 para o comentário
Compartilhar em outros 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 para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...