GARANTIR DESCONTO

Fórum Erro em variável Boolean #268113

11/02/2005

0

Bom dia Pessoal,

Por favor me ajudem na logica abaixo. Quando tento executar o programa
o trecho ´DataMod.ADOTable_Taloes_ChequesChq_Liberado = True´ acusa o erro: ´Operator not aplicable to this operand type´.

O campo CHQ_Liberado é de uma tabela ACCESS Tipo SIM/NÃO (Será que é Booleano no Delphi?). Acho que sim. Também gostaria de saber como implementar DUAS EXPRESSÕES BOOLEANAS DENTRO DE UM IF conforme abaixo: SE (campo1 é verdadeiro) e (campo2 é falso) então...


Segue meu código:

if DataMod.ADOTable_Taloes_ChequesChq_Liberado = True then
begin
{ not DataMod.ADOTable_Taloes_ChequesChq_Encerrado then}
SeqIni := DataMod.ADOTable_Taloes_ChequesChq_Seq_Ini.Asinteger;
SeqIni := DataMod.ADOTable_Taloes_ChequesChq_Seq_Fin.Asinteger;
while SeqIni <= SeqFin do
Begin
NumChq := formatcurr(´0000000000´,SeqIni);
Lista.Add(NumChq);
Inc(SeqIni);
end;
next;
end;

Muito Obrigado,

Alex


Alexsandro

Alexsandro

Responder

Posts

11/02/2005

Massuda

Apenas um palpite, mas ao invés de...
  if DataMod.ADOTable_Taloes_ChequesChq_Liberado = True then
você pode escrever...
  if DataMod.ADOTable_Taloes_ChequesChq_Liberado.AsBoolean then


gostaria de saber como implementar DUAS EXPRESSÕES BOOLEANAS DENTRO DE UM IF conforme abaixo: SE (campo1 é verdadeiro) e (campo2 é falso) então...
Sim, você pode escrever
if (condição1) and not (condição2) then...
Apenas tome cuidado de usar parenteses para agrupar os testes/condições de acordo com o que você quer.


Responder

Gostei + 0

11/02/2005

Aroldo Zanela

Bom dia Pessoal, Por favor me ajudem na logica abaixo. Quando tento executar o programa o trecho ´DataMod.ADOTable_Taloes_ChequesChq_Liberado = True´ acusa o erro: ´Operator not aplicable to this operand type´. O campo CHQ_Liberado é de uma tabela ACCESS Tipo SIM/NÃO (Será que é Booleano no Delphi?). Acho que sim. Também gostaria de saber como implementar DUAS EXPRESSÕES BOOLEANAS DENTRO DE UM IF conforme abaixo: SE (campo1 é verdadeiro) e (campo2 é falso) então... Segue meu código:

  if DataMod.ADOTable_Taloes_ChequesChq_Liberado = True then
        begin
{           not DataMod.ADOTable_Taloes_ChequesChq_Encerrado then}
           SeqIni :=  DataMod.ADOTable_Taloes_ChequesChq_Seq_Ini.Asinteger;
           SeqIni := DataMod.ADOTable_Taloes_ChequesChq_Seq_Fin.Asinteger;
            while SeqIni <= SeqFin do
            Begin
             NumChq := formatcurr(´0000000000´,SeqIni);
             Lista.Add(NumChq);
             Inc(SeqIni);
            end;
           next;
        end;
Alex

Colega,

O Massuda já explicou como utilizar corretamente mais de um teste booleano numa estrutura de desvio condicional IF. Entretanto no código acima, há dois erros que impedem o funcionamento de sua rotina, a saber:

           SeqIni :=  DataMod.ADOTable_Taloes_ChequesChq_Seq_Ini.Asinteger;
           SeqIni := DataMod.ADOTable_Taloes_ChequesChq_Seq_Fin.Asinteger;


SeqIni recebe a sequência inicial e final, ficando então apenas com o valor final.

            while SeqIni <= SeqFin do
            Begin
             NumChq := formatcurr(´0000000000´,SeqIni);
             Lista.Add(NumChq);
             Inc(SeqIni);
            end;
           next;


O next está fora da estrutura de repetição While.

Portanto, acredito que o código abaixo poderá ser otimizado para:

if (DataMod.ADOTable_Taloes_ChequesChq_Liberado.Value) and 
    not (DataMod.ADOTable_Taloes_ChequesChq_Encerrado.Value) then 
var I: Integer;    
begin 

  SeqINI := DataMod.ADOTable_Taloes_ChequesChq_Seq_Ini.Asinteger; 
  SeqFIN := DataMod.ADOTable_Taloes_ChequesChq_Seq_Fin.Asinteger; 
  
  For I := SeqINI to SeqFIN do
    Lista.Add(FormatFloat(´0000000000´, I);
end; 



Responder

Gostei + 0

11/02/2005

Alexsandro

pessoal,

Muito Obrigado,

A Ajuda de vocês foi crucial, resolvido...

Alex


Responder

Gostei + 0

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

Aceitar