Report Drill Down

Re: Report Drill Down

Postby reinaldocrespo » Fri Jan 29, 2016 7:13 pm

Hey James;

And these licenses are very expensive running from US$4000 to US$9000.


I thought it was odd those prices you quoted. Here is link to prices from the webpage https://www.fast-report.com/en/buy/#!/VCL%20(Embarcadero%20RAD%20Studio|Delphi|C++%20Builder)/FastReport%205%20VCL/

Its $199. But, again, don't bother buying from them directly unless you are using Delphi or some .net.


Reinaldo.
User avatar
reinaldocrespo
 
Posts: 979
Joined: Thu Nov 17, 2005 5:49 pm
Location: Fort Lauderdale, FL

Re: Report Drill Down

Postby Marcelo Via Giglio » Fri Jan 29, 2016 7:38 pm

Hola,


you can see some samples in this link http://www.fast-report.com:8097/ fastreport is able to export the report to many formats, one of them is html, then can be easy to use FR for web systems.

regards

Marcelo Vía
Marcelo Via Giglio
 
Posts: 1071
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Report Drill Down

Postby James Bott » Sat Jan 30, 2016 4:47 am

Reinaldo,

Thanks for the clarification.

James
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA

Re: Report Drill Down

Postby James Bott » Sat Jan 30, 2016 4:48 am

I remember seeing something about a drill-down some time ago, so I searched the forum and found this thread:

viewtopic.php?f=3&t=29853&p=169687&hilit=tree+browse&sid=3087ff7956eeff8bfcbab81e27c81485#p169687

It contains a discussion of using a tree and browse to create a drill-down report.

James
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA

Re: Report Drill Down

Postby James Bott » Sat Jan 30, 2016 7:03 am

Rienaldo,

The prices I was looking at were site licenses. I assume you need one for each client.

James
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA

Re: Report Drill Down

Postby Silvio.Falconi » Sat Jan 30, 2016 9:50 am

antonio,
I not understood why it cannot make with Treport

I found
http://www.infosol.com/crystal-reports- ... rill-down/

http://www.sdn.sap.com/irj/scn/index?ri ... ayout=true


We can add at
METHOD SayData(nRow, nCol, nLine) CLASS TRColumn

If ::lDrill

baction to a user function where the user can show what he want show ...

Endif
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7090
Joined: Thu Oct 18, 2012 7:17 pm

Re: Report Drill Down

Postby Antonio Linares » Sat Jan 30, 2016 10:02 am

Silvio,

You mean from the preview, right ?

We have a metafile there, we should detect where the user double clicks and then create a new metafile at runtime and open it, I guess
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42203
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Report Drill Down

Postby Silvio.Falconi » Sat Jan 30, 2016 10:56 am

yes,
I think can be supported only for numbers fields but i not understood good if it can be extended also to all format fields

I remember on Metafile if the user make double click he call the zoom !!!
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7090
Joined: Thu Oct 18, 2012 7:17 pm

Re: Report Drill Down

Postby Silvio.Falconi » Sat Jan 30, 2016 10:59 am

the field drill must have a box arround ( see the film I send you on post forum)
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7090
Joined: Thu Oct 18, 2012 7:17 pm

Re: Report Drill Down

Postby Silvio.Falconi » Sat Jan 30, 2016 12:48 pm

Antonio,
use this this small test to make the drill
Code: Select all  Expand view  RUN

#include "fivewin.ch"
#include "Splitter.ch"
#include "ord.ch"
#include "xbrowse.ch"

Static oWnd
static cFwhPath   := "c:\work\fwh\"

REQUEST DBFCDX

Function Main()
DEFINE WINDOW oWnd MDI

    DEFINE BUTTONBAR oBar OF oWnd SIZE 60, 60 2007

    DEFINE STATUSBAR oStatusBar PROMPT "
Some tests" OF oWnd

ACTIVATE WINDOW oWnd ;
           ON INIT customer()

//-------------------------------------------------------------------------------------------------------------------//

   init procedure PrgInit
   SET DATE ITALIAN
   SET CENTURY ON
   SET TIME FORMAT TO "
HH:MM:SS"
   SET EPOCH TO YEAR(DATE())-50

   SET DELETED ON
   SET EXCLUSIVE OFF

   RDDSETDEFAULT( "
DBFCDX" )

   XbrNumFormat( 'E', .t. )
   SetKinetic( .f. )
   SetGetColorFocus()
   SetBalloon( .t. )
return

//-----------------------------------------------------------------------------------------//

    Function Customer()

       LOCAL oWnd, oDlg, oExpBar, aPanel[3], oBrw, oCol, oSplitV, aCampos ,;
          cQry, oQry, oError,oWndCli
      local oFont,oTree

   local nGrpClr     := RGB(255,250,220)
   local nTotClr     := RGB(200,255,200)

   DEFINE FONT oFont NAME "
TAHOMA" SIZE 0,-14


      IF oWndCli == NIL

            *  DbUseArea( .T., "
DBFCDX", "CUSTOMER.DBF", "CUSTOMER", .T., .F.)

            *   dbselectarea( "
CUSTOMER" )

           oTree:=MakeTree()

          DEFINE WINDOW oWndCli ;
             TITLE  "
Test Drill" ;
             BORDER SINGLE MDICHILD OF oWnd



          oExpBar = TExplorerBar():New( 00, 00, 200, oWndCli:nHeight, oWndCli )

          aPanel[1] = oExpBar:AddPanel( "
CLIENTES", "Clientes32" )
          aPanel[1]:lSpecial = .t.
          aPanel[1]:AddLink( "
Nuevo    ", , "nuevo16" )
          aPanel[1]:AddLink( "
Modificar", , "modifi16" )
          aPanel[1]:AddLink( "
Eliminar ", , , "elimi16" )


          aPanel[2] = oExpBar:AddPanel( "
REPORTES", "print32" )
          aPanel[2]:AddLink( "
Report Drill", {|| oBrw:report() }, "repo1" )

          aPanel[3] = oExpBar:AddPanel( "
SALIDA", "salir32" )
          aPanel[3]:AddLink( "
Salir", {|| oWndCli:End() }, "salir16" )





          oBrw := TXBrowse():New( oWndCli )



                aBrowse   := { { { || "
" }, i18n("HireDate"), 50, }  ,;
                                { { || AGE }, i18n("
Age"), 120, } ,;
                               { { || SALARY }, i18n("
Salary"), 80,NumPict ( 12, 2 ) } }


         FOR i := 1 TO Len(aBrowse)
                   oCol := oBrw:AddCol()
                   oCol:bEditValue := aBrowse[ i, 1 ]
               *   oCol:bStrData := aBrowse[ i, 1 ]
                   oCol:cHeader  := aBrowse[ i, 2 ]
                   oCol:nWidth   := aBrowse[ i, 3 ]
                        if !Empty(aBrowse[ i, 4 ])
                            oCol:cEditPicture:=aBrowse[ i, 4 ]
                           Endif
          NEXT




    WITH OBJECT oBrw
       :nDataType:= 1
       :SetTree( oTree)
      :nStretchCol         := 1
      :lDisplayZeros       := .f.
      :bChange             := { || CUST->( DBGOTO( oBrw:oTreeItem:Cargo[ 4 ] ) ) }
      :bLock               := { || CUST->( RLOCK() ) }
      :bUnLock             := { || CUST->( DBUNLOCK() ) }
      :bClrStd             := { || { CLR_BLACK, If( oBrw:oTreeItem:nLevel == 1, nGrpClr, ;
                                                If( oBrw:oTreeItem:cPrompt == "
Sub-Total", nTotClr, ;
                                                CLR_WHITE ) ) } }

             :nMarqueeStyle    := MARQSTYLE_HIGHLROW
             :nColDividerStyle := LINESTYLE_BLACK
             :nStretchCol      := STRETCHCOL_LAST
             :lColDividerComplete := .t.
             :nHeaderHeight := 30
             :nLeft := 203
             :l2007 := .t.
             :lFooter := .f.
             :lRecordSelector := .t.
             :bClrStd := {|| IF( RecNo() % 2 == 0, {CLR_BLACK, CLR_WHITE}, {0, RGB(203,226,254)} ) }

      // Bitmaps
             WITH OBJECT :aCols[ 1 ]
             :cHeader  := "
State/City"
             :AddBitmap( {  FWRArrow(), FWDArrow(), cFwhPath + "
bitmaps\16x16\reset.bmp" } )
            :cFooter          := "
GRAND TOTAL"
      END

      // When Group is closed show totals. When open show totals at bottom
      // Allow edit of columns and save data to DBF, update group and grand totals
      WITH OBJECT :aCols[ 3 ]
         :bEditValue       := { |x| If( oBrw:oTreeItem:lOpened, 0, ;
                                    If( x == nil, oBrw:oTreeItem:Cargo[ 2 ], ;
                                    CUST->AGE := oBrw:oTreeItem:Cargo[ 2 ] := x ) ) }
         :nTotal           := oTree:Cargo[ 2 ]
         //
         :nEditType        := EDIT_GET
         :bEditWhen        := { || oBrw:oTreeItem:nLevel > 1 .and. oBrw:oTreeItem:cPrompt != "
Sub-Total" }
         :bOnChange        := { |o,nOld| oBrw:oTreeItem:Parent():Cargo[ 2 ] += ( o:Value - nOld ), oBrw:Refresh() }
      END




      WITH OBJECT :aCols[ 4 ]
         :bEditValue       := { |x| If( oBrw:oTreeItem:lOpened, 0, ;
                                    If( x == nil, oBrw:oTreeItem:Cargo[ 3 ], ;
                                    CUST->SALARY := oBrw:oTreeItem:Cargo[ 3 ] := x ) ) }
         :nTotal           := oTree:Cargo[ 3 ]
         //
         :nEditType        := EDIT_GET
         :bEditWhen        := { || oBrw:oTreeItem:nLevel > 1 .and. oBrw:oTreeItem:cPrompt != "
Sub-Total" }
         :bOnChange        := { |o,nOld| oBrw:oTreeItem:Parent():Cargo[ 3 ] += ( o:Value - nOld ), oBrw:Refresh() }
      END

      //
      :CreateFromCode()
   END



          oBrw:CreateFromCode()

          @ 00,201 SPLITTER oSplitV VERTICAL ;
             PREVIOUS CONTROLS oExpBar ;
             HINDS CONTROLS oBrw ;
             SIZE 1, oWndCli:nHeight PIXEL ;
             OF oWndCli ;
             3DLOOK UPDATE

         * oSplitV:lStatic:=.t.

          SET MESSAGE OF oWndCli TO "
Customer "

          oBrw:SetFocus()

          ACTIVATE WINDOW oWndCli MAXIMIZED ;
             ON RESIZE( oExpBar:AdjLeft(), oSplitV:AdjClient(), oSplitV:AdjRight() ) ;
             VALID( oWndCli := NIL, .t. )
       ELSE
          oWndCli:Restore()
          oWndCli:SetFocus()
       ENDIF

       RETURN



//-----------------------------------------------------------------------------------//


static function MakeTree()

   field STATE,CODE,CITY

   local cPath    := cFwhPath + "
samples\"
   local oTree, oState, oCity

   USE ( cPath + "
STATES" ) NEW SHARED
   INDEX ON CODE TAG CODE TO STMP MEMORY
   USE ( cPath + "
CUSTOMER" ) NEW ALIAS CUST SHARED
   INDEX ON STATE+CITY TAG STATE TO CTMP MEMORY
   SET RELATION TO STATE INTO STATES
   GO TOP

   TREE oTree
   oTree:Cargo    := { "
", 0, 0.00, 0 }
   do while ! CUST->( eof() )
      TREEITEM oState PROMPT STATES->NAME CARGO { CTOD( "
" ), 0, 0.00, 0 }
      TREE
         do while STATES->NAME == oState:cPrompt .and. ! CUST->( eof() )
            TREEITEM oCity PROMPT CUST->CITY ;
               CARGO { CUST->HIREDATE, CUST->AGE, CUST->SALARY, CUST->( RECNO() ) }
            oState:Cargo[ 2 ]    += oCity:Cargo[ 2 ]
            oState:Cargo[ 3 ]    += oCity:Cargo[ 3 ]
            CUST->( DbSkip( 1 ) )
         enddo
         TREEITEM "
Sub-Total" CARGO oState:Cargo
         oTree:Cargo[ 2 ]  += oState:Cargo[ 2 ]
         oTree:Cargo[ 3 ]  += oState:Cargo[ 3 ]
      ENDTREE

   enddo
   ENDTREE

return oTree

//-----------------------------------------------------------------------------------//


1. how create a link on metafile ? perhaps we must modify the metafile class ?
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Silvio.Falconi
 
Posts: 7090
Joined: Thu Oct 18, 2012 7:17 pm

Re: Report Drill Down

Postby cnavarro » Sat Jan 30, 2016 1:35 pm

Yes, this example is good

Image
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Report Drill Down

Postby James Bott » Sat Jan 30, 2016 6:18 pm

Issues about reports:

The real challenge is to get the customer to think about what information they really need.

In the early days, I had customers telling me they wanted a printout of all their sales. This was often over a hundred pages.

Then I asked them, what are you going to do with that? They thought about it for a few days, and then came up with something like, "Find the 10 best selling items, and the 10 worst." I told them I could do that on a one page report! And better still they didn't need to print it, but they could view it on their computer screen whenever they wanted and have up to the minute information. This made them happy.

So, while a drill-down report is useful, it probably isn't as useful as a more concise report that gives them just the information they need.

The next step is to figure out what the information means, and what should be done with that information. If possible, the software should handle it.

For instance, were the worst selling items, worse just because they ran out of stock? If so, the software could flag this and recommend reordering immediately. The software could watch the rate of sales and predict when an item is going to run out of stock and when that time period gets close to the expected delivery time for reorder, then the software should notify that it is time for reorder.

Reports are only a tool for users to help them make decisions. When we figure out what they are trying to accomplish we can attempt to move that decision making process into the software.
User avatar
James Bott
 
Posts: 4840
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA

Re: Report Drill Down

Postby nageswaragunupudi » Sat Jan 30, 2016 7:08 pm

Mr James

I fully agree.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10690
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Report Drill Down

Postby dutch » Sun Jan 31, 2016 2:38 am

I agree with James. The result means conclude Details and Summary to one and they will look when they have problem and need to see in deep. But it will take more time for produce every time you do. I think 2 reports are enough, Summary for normal and Details when you need more in deep details (sometime).
Regards,
Dutch

FWH 19.01 / xHarbour Simplex 1.2.3 / BCC73 / Pelles C / UEStudio
FWPPC 10.02 / Harbour for PPC (FTDN)
ADS V.9 / MySql / MariaDB
R&R 12 Infinity / Crystal Report XI R2
(Thailand)
User avatar
dutch
 
Posts: 1554
Joined: Fri Oct 07, 2005 5:56 pm
Location: Thailand

Re: Report Drill Down

Postby Massimo Linossi » Sun Jan 31, 2016 8:10 am

James, you're completely right.
It's better to ask in a selection dialog before the printing if you need a detailed or synthetic report.
User avatar
Massimo Linossi
 
Posts: 505
Joined: Mon Oct 17, 2005 10:38 am
Location: Italy

PreviousNext

Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 36 guests