Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda con un Algoritmo (https://www.clubdelphi.com/foros/showthread.php?t=49556)

gluglu 24-10-2007 16:53:28

Ayuda con un Algoritmo
 
Hola a tod@s !

Tengo la mente bloqueada y necesito vuestra ayuda para encontrar un método.

Después de hacer un Select, obtengo un set de datos con dos campos :
1. Tipo de Persona (puede ser 1, 2 o 3)
2. Tipo de Pensión Alimenticia (puede ser Null o cualquier Integer de 6 posiciones).

Necesito obtener sólo SI o NO a una pregunta con las siguientes condiciones:
A. No puede haber más de un mismo Tipo de Persona con Pensiones Alimenticias diferentes (ya sea Null u otro valor).
B. No puede haber más de un Tipo de Persona diferente con algún tipo de Pensión.
C. Si hay Adultos (Tipo de Persona = 1) no puede haber otro tipo de persona diferente con algún tipo de Pensión Alimenticia

Cual sería el mejor método (algoritmo) para sacar la respuesta ?? :o

Ejemplos :

Tipo Pers Tipo Pens VALIDO
========= ========= ======
.. 1 ........ 1
.. 1 ........ 2 ..... NO

.. 1 ........ 1
.. 1 ........ - ..... NO

.. 1 ........ 1
.. 2 ........ 1 ..... NO

.. 1 ........ 1
.. 2 ........ 2 ..... NO

.. 1 ........ 1
.. 2 ........ - ..... SI

.. 1 ........ -
.. 2 ........ 1 ..... NO

.. 1 ........ 1
.. 2 ........ -
.. 3 ........ - ..... SI

.. 1 ........ 1 ..... SI


Gracias por vuestra ayuda y consejos ;)

gluglu 24-10-2007 18:07:10

Después de seguir comiéndome el coco creo haber encontrado una solución satisfactoria :

Código Delphi [-]
Aux_Si_No := 0;
IBDataSet.First;
while not IBDataSet.Eof do begin

  if (not IBDataSet.FieldByName('BOARDTYPE').IsNull) or
     (IBDataSet.FieldByName('PAXTYPE').AsInteger = 1) then
    Inc(Aux_Si_No);

  if Aux_Si_No > 1 then begin
    // La respuesta es NO
    Exit;
  end;

  IBDataSet.Next;

end;
 
if Aux_Si_No <= 1 then ... // La respuesta es SI


La franja horaria es GMT +2. Ahora son las 06:24:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi