Code: Select all | Expand
#include "fivewin.ch"
function Main()
local oQry, oCn, aArray := {}
* local cServer := 'localhost', cUser := 'root', cPassword := 'secret', cDBName := 'test', nPort := "3306"
local oDlg, oBrw
* FWCONNECT oCn HOST cServer USER cUser PASSWORD cPassword DATABASE cDBName PORT VAL(nPort)
* oQry := oCn:Query("SELECT * FROM silvio ORDER BY data ")
local cdbfPath :=".\data\"
local nyear:="2022"
local cfilter
oQry := TDatabase():Open( , cdbfPath+"LOTTO", "DBFCDX", .T. )
oQry:setorder(1) //data
cFilter:= "LTRIM(STR(YEAR(FIELD->DATA)))= '" + nyear + "'"
oQry:SetFilter(cFilter)
oQry:GoTop()
DEFINE DIALOG oDlg SIZE 980,400 PIXEL ;
TITLE "INFINITE XBROWSE"
aArray := Build_Array(oQry)
@ 30,10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg ;
ARRAY aArray AUTOCOLS ;
CELL LINES FOOTERS NOBORDER
WITH OBJECT oBrw
:nRowHeight := 30
:nClrBorder := CLR_GRAY
:nMarqueeStyle := MARQSTYLE_HIGHLROWMS
:lHscroll := .t.
:l2007 := .F.
:l2015 := .T.
// :nStretchCol := STRETCHCOL_WIDEST
:lAllowRowSizing := .F.
:lAllowColSwapping := .F.
:lAllowColHiding := .F.
:lRecordSelector := .F.
:nColDividerStyle := LINESTYLE_LIGHTGRAY
:nRowDividerStyle := LINESTYLE_LIGHTGRAY
FOR i := 2 TO LEN(:aCols)
oCol := :aCols[ i ]
oCol:nWidth := 17
NEXT
:CreateFromCode()
END
oBrw:aCols[1]:cHeader := "Ruote"
Build_Title(oQry,oBrw)
ACTIVATE DIALOG oDlg CENTERED
return NIL
static function Build_Array(oDbf)
local aTemp:= {}, i, nIni
local aRuote := {"Bari","Cagliari","Firenze","Genova",;
"Milano","Napoli","Palermo","Roma","Torino",;
"Venezia","Nazionale"}
local cTitle
FOR i:= 1 TO 11
AaDd(aTemp, {aRuote[i]})
NEXT i
oDbf:GoTop()
do while !oDbf:Eof
AaDd(aTemp[1],oDbf:ba1)
AaDd(aTemp[1],oDbf:ba2)
AaDd(aTemp[1],oDbf:ba3)
AaDd(aTemp[1],oDbf:ba4)
AaDd(aTemp[1],oDbf:ba5)
AaDd(aTemp[2],oDbf:ca1)
AaDd(aTemp[2],oDbf:ca2)
AaDd(aTemp[2],oDbf:ca3)
AaDd(aTemp[2],oDbf:ca4)
AaDd(aTemp[2],oDbf:ca5)
AaDd(aTemp[3],oDbf:fi1)
AaDd(aTemp[3],oDbf:fi2)
AaDd(aTemp[3],oDbf:fi3)
AaDd(aTemp[3],oDbf:fi4)
AaDd(aTemp[3],oDbf:fi5)
AaDd(aTemp[4],oDbf:ge1)
AaDd(aTemp[4],oDbf:ge2)
AaDd(aTemp[4],oDbf:ge3)
AaDd(aTemp[4],oDbf:ge4)
AaDd(aTemp[4],oDbf:ge5)
AaDd(aTemp[5],oDbf:mi1)
AaDd(aTemp[5],oDbf:mi2)
AaDd(aTemp[5],oDbf:mi3)
AaDd(aTemp[5],oDbf:mi4)
AaDd(aTemp[5],oDbf:mi5)
AaDd(aTemp[6],oDbf:na1)
AaDd(aTemp[6],oDbf:na2)
AaDd(aTemp[6],oDbf:na3)
AaDd(aTemp[6],oDbf:na4)
AaDd(aTemp[6],oDbf:na5)
AaDd(aTemp[7],oDbf:pa1)
AaDd(aTemp[7],oDbf:pa2)
AaDd(aTemp[7],oDbf:pa3)
AaDd(aTemp[7],oDbf:pa4)
AaDd(aTemp[7],oDbf:pa5)
AaDd(aTemp[8],oDbf:rm1)
AaDd(aTemp[8],oDbf:rm2)
AaDd(aTemp[8],oDbf:rm3)
AaDd(aTemp[8],oDbf:rm4)
AaDd(aTemp[8],oDbf:rm5)
AaDd(aTemp[9],oDbf:to1)
AaDd(aTemp[9],oDbf:to2)
AaDd(aTemp[9],oDbf:to3)
AaDd(aTemp[9],oDbf:to4)
AaDd(aTemp[9],oDbf:to5)
AaDd(aTemp[10],oDbf:ve1)
AaDd(aTemp[10],oDbf:ve2)
AaDd(aTemp[10],oDbf:ve3)
AaDd(aTemp[10],oDbf:ve4)
AaDd(aTemp[10],oDbf:ve5)
AaDd(aTemp[11],oDbf:nz1)
AaDd(aTemp[11],oDbf:nz2)
AaDd(aTemp[11],oDbf:nz3)
AaDd(aTemp[11],oDbf:nz4)
AaDd(aTemp[11],oDbf:nz5)
oDbf:Skip()
enddo
//oBrw:setarray(aTemp)
RETURN aTemp
//-----------------------------------------------------------//
static function Build_Title(oDbf,oBrw)
local nIni := 2
local cTitle
oDbf:GoTop()
do while !oDbf:Eof
oBrw:aCols[nIni]:cHeader := "1"
oBrw:aCols[nIni+1]:cHeader := "2"
oBrw:aCols[nIni+2]:cHeader := "3"
oBrw:aCols[nIni+3]:cHeader := "4"
oBrw:aCols[nIni+4]:cHeader := "5"
cTitle:= dtoc(oDbf:data)
oBrw:SetGroupHeader( cTitle, nIni, nIni+4 )
oDbf:Skip()
nIni := nIni +5
enddo
RETURN NIL