Hi,
Yes I've noticed those codes in the _dcxbrow.prg, that is why I see no reason for the dcbrowse to behave 'differently'. Maybe I'm doing this wrong and I would be very grateful if anyone can take a look at my code. I'm nearing my wits end here
The program comprises of a dcbrowse with 3 buttons on top. one for filtering the dataset using (:browsefilter) and two buttons for navigation, just Next and Previous record.
The Main procedure
Code: Select all
Procedure Main()
cConnectString := 'SERVER=xxx;DATABASE=xxx;Driver=SQL SERVER;UID=xxx;PWD=xxx;MultipleActiveResultSets=true;Pooling=true'
oConnAC := SQLConnection():new()
oConnAC:driverConnect(Nil, cConnectString)
query_str = "SELECT * FROM AC ORDER BY ACNO"
oDataSetAC := SQLDataSet():new(query_str, oConnAC )
number = oDataSetAC:FCount()
DCSTATUSBAR oSTATTOP SPACING 3 ALIGN 1 HEIGHT 42
@0,0 DCTOOLBAR oToolBar HORIZONTAL parent oSTATTOP SIZE 800,42 PIXEL;
TYPE XBPSTATIC_TYPE_TEXT COLOR nil, GRA_CLR_WHITE
DCADDBUTTON PARENT oToolBar ;
BITMAP 'Post.GIF';
COLOR GRA_CLR_BLACK, XBPSYSCLR_TRANSPARENT;
STATIC FOCUSCOLOR NIL,GRA_CLR_RED;
ACTION {|| VIEW_AC('Y', oDataSetAC), DC_GetRefresh(Getlist), oBrowse:goTop(), DC_GetRefresh(Getlist)}
DCADDBUTTON PARENT oToolBar ;
BITMAP 'NEXT.GIF';
ACTION {|| DC_ReadGuiEvent(DCGUI_EXIT_OK),;
oDataSetAC:SKIP(1), IIF(oDataSetAC:EOF(),;
oDataSetAC:SKIP(-1),NIL),DC_GetRefresh(Getlist) };
WHEN {|| !(oDataSetAC:EOF()) } TABSTOP
DCADDBUTTON PARENT oToolBar ;
BITMAP 'PREVIOUS.GIF';
ACTION {|| DC_ReadGuiEvent(DCGUI_EXIT_OK),;
oDataSetAC:SKIP(-1), IIF(oDataSetAC:BOF(),;
oDataSetAC:SKIP(1),NIL),;
DC_GETREFRESH(GETLIST) };
WHEN {|| !(oDataSetAC:BOF()) } TABSTOP
@ 1,84 DCBROWSE oBrowse DATA oDataSetAC SIZE 70,20 ;
PRESENTATION DC_BrowPres()
FOR i := 1 TO number
DCBROWSECOL DATA SQLFieldBlock( oDataSetAC, i ) ;
HEADER oDataSetAC:fieldName(i) ;
SORT SQLSortBlock( oDataSetAC, i ) ;
_DEFAULT oDataSetAC:fieldName(i) == 'AGENTID' ;
PARENT oBrowse
NEXT
DCGETOPTIONS ;
AUTORESIZE ;
BUTTONALIGN DCGUI_BUTTONALIGN_CENTER
DCREAD GUI ;
FIT ;
OPTIONS GetOptions ;
BUTTONS DCGUI_BUTTON_EXIT ;
TITLE 'Browsing with SQLexpress'
Return
The View_AC Function:
Code: Select all
FUNCTION VIEW_AC(xTYPE, oDataSetGENERIC) && 20050809
IF xTYPE='Y'
oDataSetGENERIC:BrowseFilter := {|aRow,nRow,oData| oData:FieldGet('LVL')='Y' }
ELSE
oDataSetGENERIC:BrowseFilter := NIL
ENDIF
RETURN NIL
Also Is this the right way to navigate the dcbrowse object with a filtered dataset as its data source?
Code: Select all
DCADDBUTTON PARENT oToolBar ;
BITMAP 'NEXT.GIF';
ACTION {|| DC_ReadGuiEvent(DCGUI_EXIT_OK),;
oDataSetAC:SKIP(1), IIF(oDataSetAC:EOF(),;
oDataSetAC:SKIP(-1),NIL),DC_GetRefresh(Getlist) };
WHEN {|| !(oDataSetAC:EOF()) } TABSTOP
DCADDBUTTON PARENT oToolBar ;
BITMAP 'PREVIOUS.GIF';
ACTION {|| DC_ReadGuiEvent(DCGUI_EXIT_OK),;
oDataSetAC:SKIP(-1), IIF(oDataSetAC:BOF(),;
oDataSetAC:SKIP(1),NIL),;
DC_GETREFRESH(GETLIST) };
WHEN {|| !(oDataSetAC:BOF()) } TABSTOP
Thank you in advance.