ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Com resolver essa lógica?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Sex Out 04, 2019 9:18 am    Assunto: Com resolver essa lógica? Responder com Citação

Amigos não consigo resolver essa lógica já tentei de várias formas e nada, alguém pode mim ajudar?

Código:

procedure TFrmCadTurDisc.FichaIndividualEJA12ou4ETAPAFASEdoEnsinoFundamental1Click(
  Sender: TObject);

  if (DmDados.IBQryTurmaTURNO.AsString <> ('Matutino')) or
     (DmDados.IBQryTurmaTURNO.AsString <> ('Vespertino')) or
     (DmDados.IBQryTurmaGRAU.AsString  <> ('EJA - 1ª FASE - Ensino Fundamental')) then
    begin
       Application.MessageBox('Ficha Individual inválida para a Turma selecionada, verifique e tente novamente!','Atenção',mb_ok + MB_ICONWARNING);
       abort;
    end
  else
    if(DmDados.IBQryTurmaGRAU.AsString  <> ('EJA - 3ª FASE - Ensino Fundamental')) or
      (DmDados.IBQryTurmaTURNO.AsString <> ('Noturno')) then
    begin
       Application.MessageBox('Ficha Individual inválida para a Turma selecionada, verifique e tente novamente!','Atenção',mb_ok + MB_ICONWARNING);
       abort;
    end
  else
  if (DmDados.IBQryTurmaGRAU.AsString  <> ('EJA - 2ª ETAPA - Ensino Fundamental')) or
     (DmDados.IBQryTurmaGRAU.AsString  <> ('EJA - 2ª FASE - Ensino Fundamental'))  or
     (DmDados.IBQryTurmaGRAU.AsString  <> ('EJA - 3ª ETAPA - Ensino Fundamental')) then
    begin
       Application.MessageBox('Ficha Individual inválida para a Turma selecionada, verifique e tente novamente!','Atenção',mb_ok + MB_ICONWARNING);
       abort;
    end;

  Dmdados.chamaForm(TFrmRelFichaIndiv_2e3_ETAPAChamar,TCustomForm(FrmRelFichaIndiv_2e3_ETAPAChamar));
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
joemil
Moderador
Moderador


Registrado: Quinta-Feira, 25 de Março de 2004
Mensagens: 9098
Localização: Sinop-MT

MensagemEnviada: Sex Out 04, 2019 10:06 am    Assunto: Responder com Citação

e qual a logica?
_________________
<b>SEMPRE COLOQUE [RESOLVIDO] NO SEU POST</b>
Enviar imagens: http://tinypic.com/
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Out 04, 2019 11:04 am    Assunto: Responder com Citação

Você reparou que a sua lógica do operador OR não está correta, visto que, se for Matutino ou vespertino ou EJA, será sempre verdadeiro.

Observe que o turno será um ou outro, só aí já dá verdadeiro, lembrando que se você montar a tabela verdade, dará sempre verdadeiro, pois F ou V = V, somente sendo falso quando os dois forem falsos.

Tabela do operador OR
Citação:
F OR F = F
F OR V = V
V OR F = V
V OR V = V



Tabela do operador AND
Citação:
F OR F = F
F OR V = F
V OR F = F
V OR V = V


Veja a tabela
https://pt.wikipedia.org/wiki/Operador_l%C3%B3gico


Repense sua lógica.



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Sex Out 04, 2019 1:04 pm    Assunto: Responder com Citação

Amigo obrigado pela dica, tentei fazer de outra forma, mas ainda não está passando, veja só:

a turma que está focada no grid é: EJA - 1ª FASE - Ensino Fundamental - Turno: Vespertino.

Ao debugar quando passa pelo primeiro bloco, já chama a mensagem, não deveria chamar o Form?

Código:

procedure TFrmCadTurDisc.FichaIndividualEJA12ou4ETAPAFASEdoEnsinoFundamental1Click(
  Sender: TObject);
begin
  if (((DmDados.IBQryTurmaTURNO.AsString <> ('Matutino')) and
      (DmDados.IBQryTurmaTURNO.AsString  <> ('Vespertino')) and
      (DmDados.IBQryTurmaGRAU.AsString   <> ('EJA - 1ª FASE - Ensino Fundamental')))) or

     ((DmDados.IBQryTurmaGRAU.AsString  <> ('EJA - 3ª FASE - Ensino Fundamental')) and
     (DmDados.IBQryTurmaTURNO.AsString <> ('Noturno'))) or

     ((DmDados.IBQryTurmaGRAU.AsString  <> ('EJA - 2ª ETAPA - Ensino Fundamental')) and
     (DmDados.IBQryTurmaGRAU.AsString  <> ('EJA - 2ª FASE - Ensino Fundamental'))  and
     (DmDados.IBQryTurmaGRAU.AsString  <> ('EJA - 3ª ETAPA - Ensino Fundamental'))) then
    begin
       Application.MessageBox('Ficha Individual inválida para a Turma selecionada, verifique e tente novamente!','Atenção',mb_ok + MB_ICONWARNING);
       abort;
    end;

  Dmdados.chamaForm(TFrmRelFichaIndiv_2e3_ETAPAChamar,TCustomForm(FrmRelFichaIndiv_2e3_ETAPAChamar));
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Sex Out 04, 2019 4:44 pm    Assunto: Responder com Citação

Boa tarde,

Com esses valores nos campos e esse código que você postou a mensagem deve ser exibida mesmo, tanto pelas condições da "parte 2" já que o grau e a turma são diferentes, como da "parte 3" já que o grau é diferente de todos.

obs: não tem relação com o problema mas esses parênteses em torno das strings ( ex: ('Matutino') ) não são necessários e acho que prejudicam a visualização do código

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Sex Out 04, 2019 7:06 pm    Assunto: Responder com Citação

Boa noite Imex, agradeço a dica e percebi que retirando o excesso de parênteses não muda muita coisa em relação ao problema. Por favor você poderia mim ajudar?, não estou conseguindo resolver.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Out 07, 2019 9:21 am    Assunto: Responder com Citação

Bom dia,

Acho que para podermos sugerir algum código você teria que postar quais são as regras, quais combinações de grau e turno são permitidas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mazo1
Aprendiz
Aprendiz


Registrado: Domingo, 3 de Janeiro de 2010
Mensagens: 256
Localização: Alagoas

MensagemEnviada: Seg Out 07, 2019 7:55 pm    Assunto: Responder com Citação

Boa noite,

Amigos quero agradecer a todos pelas dicas, mas consegui resolver o problema, vejam como ficou:

Código:
  if (DmDados.IBQryTurmaTURNO.AsString <> 'Noturno') and
     (DmDados.IBQryTurmaGRAU.AsString  = 'EJA - 1ª FASE - Ensino Fundamental') or

     (DmDados.IBQryTurmaGRAU.AsString  = 'EJA - 2ª ETAPA - Ensino Fundamental') or
     (DmDados.IBQryTurmaGRAU.AsString  = 'EJA - 2ª FASE - Ensino Fundamental')  or
     (DmDados.IBQryTurmaGRAU.AsString  = 'EJA - 3ª ETAPA - Ensino Fundamental') or

     (DmDados.IBQryTurmaGRAU.AsString  = 'EJA - 3ª FASE - Ensino Fundamental') and
     (DmDados.IBQryTurmaTURNO.AsString = 'Noturno') then

     Dmdados.chamaForm(TFrmRelFichaIndiv_2e3_ETAPAChamar,TCustomForm(FrmRelFichaIndiv_2e3_ETAPAChamar))
   else
    begin
       Application.MessageBox('Ficha Individual inválida para a Turma selecionada, verifique e tente novamente!','Atenção',mb_ok + MB_ICONWARNING);
       abort;
    end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB