Report expert needed

kljinnn
kljinnn Member Posts: 23
hi experts,

I have a little problem. A made a form to count the number of dossiers for each regios but for some records it works fine and for other it doesnt.

Here's my code:


aantal := 0;
aantalnt6minder := 0;
aantal6minder := 0;
aantalnt6meer := 0;
aantal6meer := 0;

recDossierPR.RESET;
recDossierPR.SETCURRENTKEY(RegioID);
recDossierPR.SETFILTER(RegioID,'=%1', recRegio.RegioID);
IF recDossierPR.FIND('-') THEN
REPEAT
aantal := aantal + 1;
UNTIL recDossierPR.NEXT = 0;

recDossier.RESET;
recDossier.SETCURRENTKEY(DossierID);
recDossier.SETFILTER(DossierID,'=%1', recDossierPR.DossierID);
IF recDossier.FIND('-') THEN REPEAT
IF DATE2DMY(recDossier.Opstartdatum,3) <= 2005 THEN BEGIN
CLEAR(recJongere);
recJongere.RESET;
recJongere.SETCURRENTKEY(JongereID);
recJongere.SETFILTER(JongereID, '=%1', recDossier.JongereID);
IF recJongere.FIND('-') THEN BEGIN
IF (DATE2DMY(WORKDATE,3) - DATE2DMY(recJongere.Geboortedatum,3)) <18 THEN BEGIN
aantalnt6minder := aantalnt6minder + 1;
END ELSE BEGIN
aantalnt6meer := aantalnt6meer + 1;
END
END
END ELSE BEGIN
CLEAR(recJongere);
recJongere.RESET;
recJongere.SETCURRENTKEY(JongereID);
recJongere.SETFILTER(JongereID, '=%1', recDossier.JongereID);
IF recJongere.FIND('-') THEN BEGIN
IF (DATE2DMY(WORKDATE,3) - DATE2DMY(recJongere.Geboortedatum,3)) <18 THEN BEGIN
aantal6minder := aantal6minder + 1;
END ELSE BEGIN
aantal6meer := aantal6meer + 1;
END
END
END
UNTIL recDossier.NEXT = 0;

can someone tell me whats wrong,

thanks in advance

Comments

  • Albertvh
    Albertvh Member Posts: 516
    Hi

    Try it with the following code
    recJongere.RESET;
    recJongere.SETCURRENTKEY(JongereID);
    recDossier.RESET; 
    recDossier.SETCURRENTKEY(DossierID); 
    recDossierPR.RESET; 
    recDossierPR.SETCURRENTKEY(RegioID); 
    recDossierPR.SETFILTER(RegioID,'=%1', recRegio.RegioID); 
    IF recDossierPR.FIND('-') THEN 
      REPEAT
        aantal := aantal + 1;
        recDossier.SETFILTER(DossierID,'=%1', recDossierPR.DossierID);
        IF recDossier.FIND('-') THEN
          REPEAT
            recJongere.SETFILTER(JongereID, '=%1', recDossier.JongereID);
            IF recJongere.FIND('-') THEN
              repeat
                IF DATE2DMY(recDossier.Opstartdatum,3) <= 2005 THEN BEGIN
                  IF (DATE2DMY(WORKDATE,3) - DATE2DMY(recJongere.Geboortedatum,3)) <18 THEN
                    aantalnt6minder := aantalnt6minder + 1
                  ELSE
                    aantalnt6meer := aantalnt6meer + 1;
                end else
                  IF (DATE2DMY(WORKDATE,3) - DATE2DMY(recJongere.Geboortedatum,3)) <18 THEN
                    aantal6minder := aantal6minder + 1
                  ELSE
                    aantal6meer := aantal6meer + 1;
              until recJongere.next = 0;
          UNTIL recDossier.NEXT = 0;
      UNTIL recDossierPR.NEXT = 0;
    

    Regards
    Albert
  • kljinnn
    kljinnn Member Posts: 23
    thanks albert, but I still have another problem.

    Each Regio has 2 Dossiers at the moment. So when I run the report he has to show:

    RegioID 1
    DossierID - JongereID
    1 - 1
    2 - 2
    RegioID 2
    DossierID - JongereID
    3 - 3
    4 - 4

    but he doesnt show that. the thing I get now is:

    DossierID - JongereID
    1 - 0
    2 - 2
    RegioID 2
    DossierID - JongereID
    3 - 2
    4 - 4

    I really dont know whats wrong. This is what i get atm:

    DataItem Name
    tblDossierPerRegio <tblDossierPerRegio>

    aftergetrecord is the place where I used your code

    and the fields are made in tblDossierPerRegio, Body(6)

    I really hope someone call help [-o< , especially you Albert 'cause you helped my teammate also =D>
  • Albertvh
    Albertvh Member Posts: 516
    Hi

    Just to check please confirm the following

    DataItem
    RecRegio
    ->ResDossier (Indent by 1) Linked by Regio ID to RecRegio
    -->RecJongere (Indent by 2) linked by Dossier ID to RecDossier

    RecRegio grouped by Regio ID
    RecDossier Groupe by Dossier ID

    Set Group header for RecRegio
    Set Group footer for RecDossier

    in OnPreDataItem section of RecDossier and RecJongere
    CURRREPORT.CREATETOTALS(aantalnt6minder,aantal6meer);

    Put this code in OnAfterGetRecord of RecJongere
               IF DATE2DMY(recDossier.Opstartdatum,3) <= 2005 THEN BEGIN 
                  IF (DATE2DMY(WORKDATE,3) - DATE2DMY(recJongere.Geboortedatum,3)) <18 THEN 
                    aantalnt6minder :=  1 
                  ELSE 
                    aantalnt6meer := 1; 
                end else 
                  IF (DATE2DMY(WORKDATE,3) - DATE2DMY(recJongere.Geboortedatum,3)) <18 THEN 
                    aantal6minder := 1 
                  ELSE 
                    aantal6meer := 1; 
    

    Put the variables aantalnt6minder and aantal6meeron the RecDossier Group footer


    Hope this helps

    Albert