Files
vfp_roaauto/COMUN/programe/gencursor.prg

132 lines
3.6 KiB
Plaintext

PROCEDURE gencursor
PARAMETERS tcnume, tcalias, tcselect, tcfiltru, tcschema, tcorder, tlAfisare, tcgroup, tlModParam, tcFiltruOriginal
&& lcSelect, lcFiltru, lcSchema, lcOrder, llAfisare, lcGroup, llModParam, lcFiltruOriginal
&& MODIFICAT 28.02.2005
&& tlModParam = .T. daca gencursor functioneaza fara WHERE inclus in tcSelect original
&& tcFiltruOriginal : .T. daca conditia care urmeaza dupa where este salvata si adaugata la query-urile ulterioare
LOCAL llModParam, lcFiltruOriginal
IF EMPTY(tlModParam) OR TYPE('tlModParam') # 'L'
llModParam = .F.
ELSE
llModParam = tlModParam
ENDIF
IF EMPTY(tcFiltruOriginal) OR TYPE('tcFiltruOriginal') # 'C'
lcFiltruOriginal = ''
ELSE
lcFiltruOriginal = ALLTRIM(tcFiltruOriginal)
ENDIF
&tcnume=NEWOBJECT('deca_baza')
&tcnume..ADDOBJECT('ca_baza1','ca_baza')
IF TYPE('goConn') = 'O'
&tcNume..datasource = goConn.nHandle
ELSE
IF TYPE('gnHandle') = 'N'
&tcNume..datasource = gnHandle
ENDIF
ENDIF
*lcSelect = TRANSFORM(UPPER(ALLTRIM(tcSelect)),[']
LOCAL laEroare
DECLARE laEroare[1]
lnpCount = PCOUNT()
llAfisare = tlAfisare
WITH &tcnume..ca_baza1
IF lnpCount > 6
.lAfisare = llAfisare
ENDIF
.ALIAS=ALLTRIM(UPPER(tcalias))
IF !EMPTY(tcschema)
IF INLIST(LEFT(tcschema,1),['],["],'[')
.CURSORSCHEMA=&tcschema
ELSE
IF LEN(tcschema) > 250
lngrupe = CEILING(LEN(tcschema)/250)
lcgrupa = tcschema
FOR i = 1 TO lngrupe
lcgrupat = LEFT(lcgrupa,250)
.CURSORSCHEMA = .CURSORSCHEMA + lcGrupat
lcgrupa = SUBSTR(lcgrupa,251)
ENDFOR
ELSE
.CURSORSCHEMA=tcschema
ENDIF
ENDIF
ENDIF
IF INLIST(LEFT(tcselect,1),['],["],'[')
.SELECTCMD = &tcselect
.cSelect = &tcselect
ELSE
IF LEN(tcselect) > 250
lngrupe = CEILING(LEN(tcSelect)/250)
lcgrupa = tcSelect
FOR i = 1 TO lngrupe
lcgrupat = LEFT(lcgrupa,250)
.SELECTCMD = .SELECTCMD + lcGrupat
.cSelect = .cSelect + lcGrupat
lcgrupa = SUBSTR(lcgrupa,251)
ENDFOR
ELSE
.SELECTCMD = tcselect
.cSelect = tcselect
ENDIF
ENDIF
*!* STRTOFILE(.selectcmd,[c:\selectcmd.txt])
.cfiltru=ALLTRIM(UPPER(tcfiltru))
IF !EMPTY(tcorder)
.cOrder=ALLTRIM(UPPER(tcorder))
ENDIF
IF !EMPTY(tcgroup)
.cGroup=ALLTRIM(UPPER(tcgroup))
ENDIF
.lModParam = llModParam
.cFiltruOriginal = lcFiltruOriginal
ENDWITH
*!* IF !USED(tcAlias)
*!* AERROR(laEroare)
*!* IF TYPE('LAEROARE')!= 'U'
*!* IF ALEN(laEroare) > 1
*!* IF TYPE('goLog')='O'
*!* lcLog = laEroare(3) + CHR(13) + 'SELECT: ' + tcSelect + CHR(13) + 'SCHEMA: ' + tcSchema + CHR(13) + 'FILTRU: ' + tcFiltru + CHR(13) + 'ORDINE: ' + tcOrder
*!* goLog.Log(lcLog,PROGRAM())
*!* ENDIF
*!* MESSAGEBOX(laEroare(3),0+16,"Eroare")
*!* ENDIF
*!* ENDIF
*!* ENDIF
*!* RELEASE laEroare
ENDPROC
PROCEDURE gencursor_hash
PARAMETERS toHash
LOCAL lcNume, lcAlias, lcSelect, lcFiltru, lcSchema, lcOrder, llAfisare, lcGroup, llModParam, lcFiltruOriginal
lcNume = toHash.GetValue('cNume')
lcAlias = toHash.GetValue('cAlias')
lcSelect = toHash.GetValue('cSelect')
lcFiltru = toHash.GetValue('cFiltru')
lcSchema = toHash.GetValue('cSchema')
lcOrder = toHash.GetValue('cOrder')
llAfisare = toHash.GetValue('lAfisare')
lcGroup = toHash.GetValue('cGroup')
llModParam = toHash.GetValue('lModParam')
lcFiltruOriginal = toHash.GetValue('cFiltruOriginal')
= gencursor(lcnume, lcalias, lcselect, lcfiltru, lcschema, lcorder, llAfisare, lcgroup, llModParam, lcFiltruOriginal)
ENDPROC && gencursor_hash