Logica errada ou erro de Código ?

Delphi

03/10/2013

Tenho esse código? e quando chega no "If" que não era para ele executar e ele executa
 
 if Copy(DataModuleGeral.tbProcessosConsulta.FieldByName('NUMERO_PROCESSO'+Copy(vCampoUltAlteracao,17,1)).AsString,1,8) = 'S/NUMERO' then
    begin
      n := StrToInt(Copy(vCampoUltAlteracao,17,1))-1;
      while n >= 1 do
      begin
==>    if (n = 1) and (DataModuleGeral.tbProcessosConsultaULTIMA_ALTERACAO.AsDateTime < DataModuleGeral.tbAndamentosProcessuaisDATA.AsDateTime) then;
          DataModuleGeral.tbProcessosConsultaULTIMA_ALTERACAO.AsDateTime := DataModuleGeral.tbAndamentosProcessuaisDATA.AsDateTime;

        if (n > 1) and (Copy(DataModuleGeral.tbProcessosConsulta.FieldByName('NUMERO_PROCESSO'+IntToStr(n)).AsString,1,8) <> 'S/NUMERO') then
        begin
          if DataModuleGeral.tbProcessosConsulta.FieldByName('ULTIMA_ALTERACAO'+IntToStr(n)).AsDateTime < DataModuleGeral.tbAndamentosProcessuaisDATA.AsDateTime then
            DataModuleGeral.tbProcessosConsulta.FieldByName('ULTIMA_ALTERACAO'+IntToStr(n)).AsDateTime := DataModuleGeral.tbAndamentosProcessuaisDATA.AsDateTime;
          Exit;
        end;
        n := n - 1;
      end;
    end;
  end;
  DataModuleGeral.tbProcessosConsulta.Post;


no If da Ceta se por exemplo eu o n for 4 ele passa e executa tudo que for ele executa. onde esta o erro que não vejo ?

Ajudem por favor :(
Eduardo Mendonça

Eduardo Mendonça

Curtidas 0

Respostas

Marcos Oliveira

Marcos Oliveira

03/10/2013

Olhando seu código, parece que está tudo correto. Você já depurou seu projeto e confirmou que o valor da variável "n" está vindo realmente 1?

Att,

Marcos
GOSTEI 0
Deivison Melo

Deivison Melo

03/10/2013

Conforme orientação, o código foi debbugado?

Caso ainda restarem dúvida, por favor, sinalizar para sanarmos todas!

Abração e bons códigos!
GOSTEI 0
Marcos Saffran

Marcos Saffran

03/10/2013

Olá Maginal,
uma dúvida:
if Copy(DataModuleGeral.tbProcessosConsulta.FieldByName('NUMERO_PROCESSO'+Copy(vCampoUltAlteracao,17,1)).AsString,1,8) = 'S/NUMERO' then


quantos campos 'NUMERO_PROCESSO' tem a sua tabela? São 10?

Eu pergunto pois o 'Copy(vCampoUltAlteracao,17,1)', se for numérico pode ser de 0 a 9, se for string, pode ser de 0 a 9, ou de a a z.

Só para entender melhor o código.
GOSTEI 0
Marcos Saffran

Marcos Saffran

03/10/2013

Outra coisa, em:

==>    if (n = 1) and (DataModuleGeral.tbProcessosConsultaULTIMA_ALTERACAO.AsDateTime < DataModuleGeral.tbAndamentosProcessuaisDATA.AsDateTime) then;


está assim mesmo no seu código? Com o ";" ponto-e-vírgula no final do comando?

se for, retire-o.
GOSTEI 0
Eduardo Mendonça

Eduardo Mendonça

03/10/2013

ok vou retirar
GOSTEI 0
POSTAR