Jan 22, 2012

How to create dynamic column in a report



    container                                    projectId , projectIdLabel , projCon;
    MyTable                                    externalTable ;
    ProjTable                                   ProjTable ;
    ReportTextControl                      reportText , custName ;
    ReportPromptControl                 headerPrompt1 , headerPrompt2 , headerPrompt3 ;
    ReportSection                            bodySection , bodyHeaderSec ;
    int                                               i;
   CustTable                                   custTable ;


public void executeSection()
{

    int    i;
    ;
    super();

    bodyHeaderSec = element.report().design().addProgrammableSection(2);
    bodyHeaderSec.leftMargin(2,Units::char);
    bodyHeaderSec.bottomMargin(1.5,units::char);



    bodySection = element.report().design().addProgrammableSection(1);
    bodySection.leftMargin(2,Units::char);
    custName = bodySection.addControl(tableNum(CustTable),fieldNum(CustTable,AccountNum));
    custName.name('CustNameLabel');

    headerPrompt1 = bodyHeaderSec.addPromptControl(tablenum(CustTable));
    headerPrompt1.label('Customer name');
    headerPrompt1.modelFieldName(custName.name());

    i = 0;

    while select count(ProjId) from externalTable group by  externalTable.CategoryId
                                              join ProjTable
                                              where  externalTable. ProjId == ProjTable.ProjId
                                              &&  ProjTable.CustAccount == custTable.AccountNum

        {
            if( externalTable .CategoryId)
            {
            i++;
            projectId  =  conins(projectId,i, externalTable . ProjId) ;
            reportText =  bodySection.addTextControl(conpeek(projectId,i));
            reportText.width(6,units::char);
            projCon = conins(projCon, i ,'ProjIdCountLabel' + int2str(i));
            reportText.name('ProjIdCountLabel'+int2str(i));

            projectIdLabel = conins(projectIdLabel,i,'FAM'+ int2str(i));
            headerPrompt2 = bodyHeaderSec.addPromptControl(tablenum( externalTable ));

            headerPrompt2.label(conpeek(projectIdLabel,i));
            headerPrompt2.modelFieldName('ProjIdCountLabel'+int2str(i));

            }

        }

    bodyHeaderSec.executeSection();
    bodySection.executeSection();

}

No comments: