I tried Roger's new total, print and Excel options in SqlQuery today. All SqlQuery options are now embedded in my code. I have to say, this is an outstanding tool.
I am about to the point where I am going to display all data to users and let them "work it" to get the data they want using SqlQuery options. This will cut my work time creating custom/user defined reports.
Thanks Roger. Keep new features coming!
Richard
SqlQuery total, print and Excel options
Re: SqlQuery total, print and Excel options
Richard and I have worked together for months to improve the browsing capabilities of DCBROWSE and DCBROWSECOL.
These features have been added to SqlQuery to improve it as a SQL and ISAM database tool.
Today, we determined that the performance of the browser in SqlQuery is too slow if there are too many
browse columns being created. For example, a database with 100 fields will create 100 browse columns
if using SELECT * (SQL mode) or USE (ISAM mode). I determined that it would be best if only the first 20
columns are created and the remaining are "cached". The user can then choose a column to add to the
browse by selecting one from the cache. Here is how I implemented this feature. it works great!
I Added a new CACHECOLUMN clause to the DCBROWSECOL command. This will not add the column to the
browse until a new method of the DCBROWSE class is called - oBrowse:chooseCachedColumn(GetList)
I also added a new CACHECOLUMNS <nColumns> clause to the DCBROWSE command. This will insure that
columns which have a position greater than <nColumns> will be cached.
If you want to automatically add the next cached column to the browse when the user right-arrows past the
last visible column, simply add the following code to your custom handler. This will also automatically add
columns when the user right-scrolls with the scroll bar past the last column.
This feature can be used in all existing applications.
These features have been added to SqlQuery to improve it as a SQL and ISAM database tool.
Today, we determined that the performance of the browser in SqlQuery is too slow if there are too many
browse columns being created. For example, a database with 100 fields will create 100 browse columns
if using SELECT * (SQL mode) or USE (ISAM mode). I determined that it would be best if only the first 20
columns are created and the remaining are "cached". The user can then choose a column to add to the
browse by selecting one from the cache. Here is how I implemented this feature. it works great!
I Added a new CACHECOLUMN clause to the DCBROWSECOL command. This will not add the column to the
browse until a new method of the DCBROWSE class is called - oBrowse:chooseCachedColumn(GetList)
I also added a new CACHECOLUMNS <nColumns> clause to the DCBROWSE command. This will insure that
columns which have a position greater than <nColumns> will be cached.
If you want to automatically add the next cached column to the browse when the user right-arrows past the
last visible column, simply add the following code to your custom handler. This will also automatically add
columns when the user right-scrolls with the scroll bar past the last column.
Code: Select all
STATIC FUNCTION BrowseHandler( nEvent, mp1, mp2, oXbp, oDlg, GetList, oBrowse )
LOCAL lPan := .f.
IF (oXbp == oBrowse .AND. nEvent == xbeBRW_Pan .AND. ;
oBrowse:hScrollObject:getData() >= oBrowse:hScrollObject:setRange()[2])
lPan := .t.
ENDIF
IF lPan .OR. (oXbp == oBrowse .AND. nEvent == xbeP_Keyboard .AND. oBrowse:colPos = oBrowse:colCount)
oBrowse:nextCachedColumn(GetList)
IF lPan
oBrowse:panRight()
ELSE
oBrowse:right()
ENDIF
oBrowse:forceStable()
DC_CompleteEvents()
ENDIF
RETURN DCGUI_NONE
The eXpress train is coming - and it has more cars.