*-------------------------------------------------------------------------------------------------------------------------------------------------------- * (EN) AUTOGENERATED - ATTENTION!! - NOT INTENDED FOR EXECUTION!! USE ONLY FOR MERGING CHANGES AND STORING WITH SCM TOOLS!! *-------------------------------------------------------------------------------------------------------------------------------------------------------- *< FOXBIN2PRG: Version="1.21" SourceFile="orapoarte.vcx" CPID="1252" /> (Solo para binarios VFP 9 / Only for VFP 9 binaries) * * DEFINE CLASS ct_grup_camp AS _container OF "_baza.vcx" *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="ck_ordine" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lb_nume_camp" UniqueID="" Timestamp="" /> * *m: do_actualizeaza_ordine *p: ccamp *p: cnumecamp *p: ngrupat *p: nordine *p: _memberdata && XML Metadata for customizable properties * * BorderWidth = 0 ccamp = cnumecamp = Height = 17 Name = "ct_grup_camp" ngrupat = 0 nordine = 0 Width = 183 _memberdata = * ADD OBJECT 'ck_ordine' AS _checkbox WITH ; Alignment = 0, ; AutoSize = .F., ; Caption = "[Grup camp]", ; Height = 17, ; Left = 122, ; Name = "ck_ordine", ; Top = 1, ; Width = 43 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" /> ADD OBJECT 'lb_nume_camp' AS lb_simplu WITH ; AutoSize = .F., ; Caption = "[Explicatie camp]", ; Height = 17, ; Left = 2, ; Name = "lb_nume_camp", ; Top = 1, ; Width = 118 *< END OBJECT: ClassLib="lb.vcx" BaseClass="label" /> PROCEDURE do_actualizeaza_ordine Lparameters tnOrdine If !Empty(tnOrdine) This.lb_nume_camp.FontBold = .T. This.ck_ordine.Caption = Alltrim(Str(tnOrdine)) This.ngrupat = 1 Else This.lb_nume_camp.FontBold = .F. This.ck_ordine.Caption = [] This.ngrupat = 0 Endif This.nordine = tnOrdine ENDPROC PROCEDURE Init Lparameters toHash This.ccamp = toHash.getValue('cCamp') This.cnumeCamp = toHash.getValue('cNumeCamp') This.lb_nume_camp.Caption = This.cnumeCamp This.do_actualizeaza_ordine(0) ENDPROC PROCEDURE ck_ordine.Click This.ProgrammaticChange() ENDPROC PROCEDURE ck_ordine.ProgrammaticChange This.Parent.Parent.Parent.do_modifica_ordine(This.Parent.Name,This.Parent.nordine,This.Value) ENDPROC ENDDEFINE DEFINE CLASS ct_grupare AS _container OF "_baza.vcx" *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="lb_grupare" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_scrollcontainer1" UniqueID="" Timestamp="" /> * *m: do_adauga_ct *m: do_modifica_ordine *m: do_reset *m: do_sterge_ct *p: cclasa && Numele clasei ce va fi instantiata la adaugare. *p: nmax_ordine *p: _memberdata && XML Metadata for customizable properties * * cclasa = ct_grup_camp Height = 200 Name = "ct_grupare" nmax_ordine = 0 Width = 353 _memberdata = * ADD OBJECT '_scrollcontainer1' AS _scrollcontainer WITH ; BorderWidth = 0, ; Height = 181, ; Left = 0, ; Name = "_scrollcontainer1", ; Top = 23, ; Width = 360, ; But_sus1.Left = 328, ; But_sus1.Name = "But_sus1", ; But_sus1.Top = 0, ; But_jos1.Left = 328, ; But_jos1.Name = "But_jos1", ; But_jos1.Top = 29 *< END OBJECT: ClassLib="scrollcontainer.vcx" BaseClass="container" /> ADD OBJECT 'lb_grupare' AS lb_simplu WITH ; Caption = "Grupat dupa :", ; FontItalic = .T., ; Height = 17, ; Left = 12, ; Name = "lb_grupare", ; TabIndex = 8, ; Top = 6, ; Visible = .T., ; Width = 76 *< END OBJECT: ClassLib="lb.vcx" BaseClass="label" /> PROCEDURE do_adauga_ct Lparameters tcCamp,tcNumeCamp Local lcClasa,lcNumeObiect,loHash As MyHash If Empty(This.cclasa) lcClasa = [CT_GRUP_CAMP] Else lcClasa = Upper(Alltrim(This.cclasa)) Endif lcNumeObiect = Upper(Alltrim([ct_grup_] + Strtran(tcCamp,[.],[_]))) loHash = GetHash() loHash.SetValue("cCamp", tcCamp) loHash.SetValue("cNumeCamp", tcNumeCamp) This._scrollcontainer1.do_adaugaobiect(lcNumeObiect,lcClasa,loHash) With This._scrollcontainer1.&lcNumeObiect. .Visible = .T. EndWith Release loHash *!* This.AddObject(lcNumeObiect,lcClasa,tcCamp,tcNumeCamp) *!* With This.&lcNumeObiect. *!* .Left = This.nLeft *!* .Top = This.nMaxTop *!* This.nMaxTop = .Top + .Height - 2 *!* .Visible = .T. *!* Endwith ENDPROC PROCEDURE do_modifica_ordine Lparameters tcNumeObiect,tnOrdine,tnValoare If Empty(This.cclasa) lcClasa = [CT_GRUP_CAMP] Else lcClasa = Upper(Alltrim(This.cclasa)) Endif If tnValoare = 0 For i = 1 To This._scrollcontainer1.Objects.Count With This._scrollcontainer1.Objects(i) If Upper(Alltrim(.Class))=lcClasa Do Case Case .nordine = tnOrdine If Pemstatus(This.Parent,"do_modifica",5) *!* modificare ROAGEST v 2.0.144 *!* This.Parent.do_modifica(2,.ccamp,.nordine - 1) This.Parent.do_modifica(2,.ccamp,0) *!* modificare ROAGEST v 2.0.144 ^ Endif .do_actualizeaza_ordine(0) Case .nordine > tnOrdine If Pemstatus(This.Parent,"do_modifica",5) This.Parent.do_modifica(2,.ccamp,.nordine - 1) Endif .do_actualizeaza_ordine(.nordine - 1) Endcase Endif Endwith Endfor This.nmax_ordine = This.nmax_ordine - 1 Else This.nmax_ordine = This.nmax_ordine + 1 With This._scrollcontainer1.&tcNumeObiect. If Pemstatus(This.Parent,"do_modifica",5) This.Parent.do_modifica(2,.ccamp,This.nmax_ordine) Endif .do_actualizeaza_ordine(This.nmax_ordine) Endwith Endif ENDPROC PROCEDURE do_reset This._SCROLLCONTAINER1.Init() ENDPROC PROCEDURE do_sterge_ct Lparameters tcCamp Local lcClasa,lcNumeObiect If Empty(This.cclasa) lcClasa = [CT_GRUP_CAMP] Else lcClasa = Upper(Alltrim(This.cclasa)) Endif lcNumeObiect = Upper(Alltrim([ct_grup_] + Strtran(tcCamp,[.],[_]))) If Type('this._scrollcontainer1.'+lcNumeObiect)<>'U' With This._scrollcontainer1.&lcNumeObiect. *!* lnHeight = .Height *!* lnTop = .Top lnOrdine = .nordine Endwith *!* This.RemoveObject(lcNumeObiect,lcClasa) This._scrollcontainer1.do_stergeobiect(lcNumeObiect) For i = 1 To This._scrollcontainer1.Objects.Count With This._scrollcontainer1.Objects(i) If Upper(Alltrim(.Class))=lcClasa If lnOrdine > 0 And .nordine > lnOrdine If Pemstatus(This.Parent,"do_modifica",5) This.Parent.do_modifica(2,.ccamp,.nordine - 1) Endif .do_actualizeaza_ordine(.nordine - 1) Endif *!* If .Top > lnTop *!* .Top = .Top - lnHeight + 2 *!* Endif Endif Endwith Endfor *!* This.nMaxTop = This.nMaxTop - lnHeight + 2 This.nmax_ordine = This.nmax_ordine - Iif(lnOrdine = 0,0,1) Endif ENDPROC PROCEDURE _scrollcontainer1.Init Local lnNrObiecteVizibile,lnTop,lnLeft,lnWidth,lnDistantaVObiecte,lnDistantaOObiecte lnHeightGrupCamp = 15 && 17 = inaltimea ct_grup_camp lnNrObiecteVizibile = Floor((This.Parent.Height - This.Top)/ lnHeightGrupCamp) lnTop = This.Top lnLeft = This.Left lnWidth = This.Parent.Width lnDistantaVObiecte = -2 lnDistantaOObiecte = 0 This.but_jos1.Left = lnWidth - 18 This.but_sus1.Left = lnWidth - 18 This.nmaxheight = lnHeightGrupCamp * lnNrObiecteVizibile DoDefault(lnNrObiecteVizibile,lnTop,lnLeft,lnWidth,lnDistantaVObiecte,lnDistantaOObiecte) ENDPROC ENDDEFINE DEFINE CLASS ct_ordine_camp AS _container OF "_baza.vcx" *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="ck_ordine" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lb_nume_camp" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="opt_ordine" UniqueID="" Timestamp="" /> * *m: do_actualizeaza_ordine *p: ccamp *p: cnumecamp *p: csens *p: nordine * * BorderWidth = 0 ccamp = cnumecamp = csens = Height = 17 Name = "ct_ordine_camp" nordine = 0 Width = 302 * ADD OBJECT 'ck_ordine' AS _checkbox WITH ; Alignment = 0, ; AutoSize = .F., ; Caption = "[Ordine camp]", ; Height = 17, ; Left = 122, ; Name = "ck_ordine", ; Top = 0, ; Width = 43 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" /> ADD OBJECT 'lb_nume_camp' AS lb_simplu WITH ; AutoSize = .F., ; Caption = "[Explicatie camp]", ; Height = 17, ; Left = 2, ; Name = "lb_nume_camp", ; Top = 0, ; Width = 118 *< END OBJECT: ClassLib="lb.vcx" BaseClass="label" /> ADD OBJECT 'opt_ordine' AS _optiongrup WITH ; BorderStyle = 0, ; Height = 28, ; Left = 160, ; Name = "opt_ordine", ; Top = -6, ; Width = 146, ; Option1.AutoSize = .T., ; Option1.Caption = "Crescator", ; Option1.FontName = "Arial Narrow", ; Option1.Left = 5, ; Option1.Name = "Option1", ; Option1.Top = 5, ; Option2.AutoSize = .T., ; Option2.Caption = "Descrescator", ; Option2.FontName = "Arial Narrow", ; Option2.Left = 68, ; Option2.Name = "Option2", ; Option2.Top = 5 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="optiongroup" /> PROCEDURE do_actualizeaza_ordine Lparameters tnOrdine If !Empty(tnOrdine) This.lb_nume_camp.FontBold = .T. This.ck_ordine.Caption = Alltrim(Str(tnOrdine)) This.opt_ordine.Visible = .T. Else This.lb_nume_camp.FontBold = .F. This.ck_ordine.Caption = [] With This.opt_ordine .Visible = .F. .Value = 1 Endwith Endif This.nordine = tnOrdine ENDPROC PROCEDURE Init Lparameters toHash This.ccamp = toHash.getValue('cCamp') This.cnumeCamp = toHash.getValue('cNumeCamp') This.lb_nume_camp.Caption = toHash.getValue('cNumeCamp') This.do_actualizeaza_ordine(0) ENDPROC PROCEDURE ck_ordine.Click This.ProgrammaticChange() ENDPROC PROCEDURE ck_ordine.ProgrammaticChange This.Parent.Parent.Parent.do_modifica_ordine(This.Parent.Name,This.Parent.nordine,This.Value) ENDPROC PROCEDURE opt_ordine.InteractiveChange If This.Value = 1 This.Parent.csens = [] Else This.Parent.csens = [DESC] Endif This.Parent.Parent.Parent.do_modifica_sens(This.Parent.ccamp,This.Value) ENDPROC PROCEDURE opt_ordine.ProgrammaticChange This.InteractiveChange() ENDPROC ENDDEFINE DEFINE CLASS ct_ordonare AS _container OF "_baza.vcx" *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="lb_ordonare" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="_scrollcontainer1" UniqueID="" Timestamp="" /> * *m: do_adauga_ct *m: do_modifica_ordine *m: do_modifica_sens *m: do_reset *m: do_sterge_ct *p: cclasa && Numele clasei ce va fi instantiata la adaugare. *p: nleft *p: nleft2 && 90 *p: nmaxtop *p: nmaxtop2 *p: nmax_ordine *p: _memberdata && XML Metadata for customizable properties * * cclasa = ct_ordine_camp Height = 200 Name = "ct_ordonare" nleft = 9 nleft2 = 90 nmaxtop = 0 nmaxtop2 = 0 nmax_ordine = 0 Width = 353 _memberdata = * ADD OBJECT '_scrollcontainer1' AS _scrollcontainer WITH ; BorderWidth = 0, ; Height = 181, ; Left = 0, ; Name = "_scrollcontainer1", ; Top = 23, ; Width = 360, ; But_sus1.Left = 328, ; But_sus1.Name = "But_sus1", ; But_sus1.Top = 1, ; But_jos1.Left = 328, ; But_jos1.Name = "But_jos1", ; But_jos1.Top = 30 *< END OBJECT: ClassLib="scrollcontainer.vcx" BaseClass="container" /> ADD OBJECT 'lb_ordonare' AS lb_simplu WITH ; Caption = "Ordonate dupa:", ; FontItalic = .T., ; Height = 17, ; Left = 8, ; Name = "lb_ordonare", ; TabIndex = 8, ; Top = 6, ; Visible = .T., ; Width = 87 *< END OBJECT: ClassLib="lb.vcx" BaseClass="label" /> PROCEDURE do_adauga_ct Lparameters tcCamp,tcNumeCamp Local lcClasa,lcNumeObiect,loHash As MyHash If Empty(This.cclasa) lcClasa = [CT_ORDINE_CAMP] Else lcClasa = Upper(Alltrim(This.cclasa)) Endif lcNumeObiect = Upper(Alltrim([ct_ordine_] + Strtran(tcCamp,[.],[_]))) loHash = GetHash() loHash.SetValue("cCamp", tcCamp) loHash.SetValue("cNumeCamp", tcNumeCamp) This._scrollcontainer1.do_adaugaobiect(lcNumeObiect,lcClasa,loHash) With This._scrollcontainer1.&lcNumeObiect. .Visible = .T. Endwith Release loHash *!* This.AddObject(lcNumeObiect,lcClasa,tcCamp,tcNumeCamp) *!* With This.&lcNumeObiect. *!* .Left = This.nLeft *!* .Top = This.nMaxTop *!* This.nMaxTop = .Top + .Height - 2 *!* .Visible = .T. *!* Endwith ENDPROC PROCEDURE do_modifica_ordine Lparameters tcNumeObiect,tnOrdine,tnValoare If Empty(This.cclasa) lcClasa = [CT_ORDINE_CAMP] Else lcClasa = Upper(Alltrim(This.cclasa)) Endif If tnValoare = 0 For i = 1 To This._scrollcontainer1.Objects.Count With This._scrollcontainer1.Objects(i) If Upper(Alltrim(.Class))=lcClasa Do Case Case .nordine = tnOrdine If Pemstatus(This.Parent,"do_modifica",5) This.Parent.do_modifica(3,.ccamp,0) Endif .do_actualizeaza_ordine(0) Case .nordine > tnOrdine If Pemstatus(This.Parent,"do_modifica",5) This.Parent.do_modifica(3,.ccamp,.nordine - 1) Endif .do_actualizeaza_ordine(.nordine - 1) Endcase Endif Endwith Endfor This.nmax_ordine = This.nmax_ordine - 1 Else This.nmax_ordine = This.nmax_ordine + 1 With This._scrollcontainer1.&tcNumeObiect. If Pemstatus(This.Parent,"do_modifica",5) This.Parent.do_modifica(3,.ccamp,This.nmax_ordine) Endif .do_actualizeaza_ordine(This.nmax_ordine) Endwith Endif ENDPROC PROCEDURE do_modifica_sens Lparameters tcCamp,tnSens If Pemstatus(This.Parent,"do_modifica",5) This.Parent.do_modifica(4,tcCamp,tnSens) Endif ENDPROC PROCEDURE do_reset This._SCROLLCONTAINER1.Init() ENDPROC PROCEDURE do_sterge_ct Lparameters tcCamp Local lcClasa,lcNumeObiect If Empty(This.cclasa) lcClasa = [CT_ORDINE_CAMP] Else lcClasa = Upper(Alltrim(This.cclasa)) Endif lcNumeObiect = Upper(Alltrim([ct_ordine_] + Strtran(tcCamp,[.],[_]))) If Type('this._scrollcontainer1.'+lcNumeObiect)<>'U' With This._scrollcontainer1.&lcNumeObiect. *!* lnHeight = .Height *!* lnTop = .Top lnOrdine = .nordine Endwith *!* This.RemoveObject(lcNumeObiect,lcClasa) This._scrollcontainer1.do_stergeobiect(lcNumeObiect) For i = 1 To This._scrollcontainer1.Objects.Count With This._scrollcontainer1.Objects(i) If Upper(Alltrim(.Class))=lcClasa If lnOrdine > 0 And .nordine > lnOrdine If Pemstatus(This.Parent,"do_modifica",5) This.Parent.do_modifica(3,.ccamp,.nordine - 1) Endif .do_actualizeaza_ordine(.nordine - 1) Endif *!* If .Top > lnTop *!* .Top = .Top - lnHeight + 2 *!* Endif Endif Endwith Endfor *!* This.nMaxTop = This.nMaxTop - lnHeight + 2 This.nmax_ordine = This.nmax_ordine - Iif(lnOrdine = 0,0,1) Endif ENDPROC PROCEDURE _scrollcontainer1.Init Local lnNrObiecteVizibile,lnTop,lnLeft,lnWidth,lnDistantaVObiecte,lnDistantaOObiecte lnHeightOrdCamp = 15 && 17 = inaltimea ct_grup_camp lnNrObiecteVizibile = Floor((This.Parent.Height - This.Top)/ lnHeightOrdCamp) lnTop = This.Top lnLeft = This.Left lnWidth = This.Width lnDistantaVObiecte = -2 lnDistantaOObiecte = 0 This.nmaxheight = lnHeightOrdCamp * lnNrObiecteVizibile DoDefault(lnNrObiecteVizibile,lnTop,lnLeft,lnWidth,lnDistantaVObiecte,lnDistantaOObiecte) ENDPROC ENDDEFINE DEFINE CLASS ct_selectie AS _container OF "_baza.vcx" *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="Ct_grupare1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_grupare1.lblAtentie" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_ordonare1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lb_coloane" UniqueID="" Timestamp="" /> * *m: do_actualizeaza_culori_sume *m: do_adauga *m: do_compune_ordine_selectie *m: do_crosstabulare *m: do_instructiune_sql *m: do_modifica *m: do_reset *m: do_sterge *m: do_verifica_verticala *m: get_coloane_crosstabulare *m: get_coloane_grupare *m: get_coloane_ordonare *m: get_coloane_selectie *p: cclasa && Clasa folosita pentru checkbox-urile din selectii. *p: ccoloanesuma && Numele coloanelor care sunt agregate. *p: clistacoloaneordine && Lista delimitata prin virgula ce contine pozitiile din ccoloanesuma pentru care se vor adauga containere la ordonare. *p: cnumecoloanesuma *p: cnumetabela && Numele tabelei/view-ului din care se face selectia. *p: cordine *p: csql *p: lcrosstabulare && .T. daca a fost selectata o coloana pentru crosstabulare *p: ltitlucoloanesuma && Daca numele coloanelor selectate se face dupa valoare din cNumeColoaneSuma *p: nelemente && Numarul de elemente din this.aselectie *a: aselectie[30,6] *p: _memberdata && XML Metadata for customizable properties * * cclasa = ct_selectie_camp ccoloanesuma = clistacoloaneordine = cnumecoloanesuma = cnumetabela = cordine = csql = Height = 364 lcrosstabulare = .F. ltitlucoloanesuma = .F. Name = "ct_selectie" nelemente = 0 ToolTipText = ' Pentru detalii despre generarea rapoartelor, apasati butonul "?".' Width = 332 _memberdata = * ADD OBJECT 'Ct_grupare1' AS ct_grupare WITH ; Height = 133, ; Left = 5, ; Name = "Ct_grupare1", ; Top = 227, ; Width = 320, ; lb_grupare.Name = "lb_grupare", ; _scrollcontainer1.But_jos1.Name = "But_jos1", ; _scrollcontainer1.But_sus1.Name = "But_sus1", ; _scrollcontainer1.Name = "_scrollcontainer1" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> ADD OBJECT 'Ct_grupare1.lblAtentie' AS lb_simplu WITH ; AutoSize = .F., ; Caption = "Mesaj atentie", ; ForeColor = 255,0,0, ; Height = 17, ; Left = 91, ; Name = "lblAtentie", ; TabIndex = 9, ; Top = 6, ; Visible = .F., ; Width = 223 *< END OBJECT: ClassLib="lb.vcx" BaseClass="label" /> ADD OBJECT 'Ct_ordonare1' AS ct_ordonare WITH ; Height = 133, ; Left = 5, ; Name = "Ct_ordonare1", ; Top = 95, ; Width = 320, ; lb_ordonare.Name = "lb_ordonare", ; _scrollcontainer1.But_jos1.Name = "But_jos1", ; _scrollcontainer1.But_sus1.Name = "But_sus1", ; _scrollcontainer1.Name = "_scrollcontainer1" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> ADD OBJECT 'lb_coloane' AS lb_simplu WITH ; Caption = "Coloane in selectie:", ; FontItalic = .T., ; Height = 17, ; Left = 10, ; Name = "lb_coloane", ; TabIndex = 9, ; Top = 0, ; Width = 110 *< END OBJECT: ClassLib="lb.vcx" BaseClass="label" /> PROCEDURE do_actualizeaza_culori_sume Local lnTip lnTip = Iif(This.lcrosstabulare,2,1) For i = 1 To This.Objects.Count If Upper(This.Objects[i].Class) = 'CT_SELECTIE_CAMP' And This.Objects[i].lsuma This.Objects[i].do_seteaza_culoare(lnTip) Endif Endfor ENDPROC PROCEDURE do_adauga Lparameters lcCamp, lcNumeCamp, llGrupare, llOrdine, llColoaneSuma, lcCampId *!* LPARAMETERS toSelectieCamp *!* LOCAL lcCamp, lcNumeCamp, llGrupare, llOrdine, llColoaneSuma *!* WITH toSelectieCamp *!* lcCamp = .ccamp *!* lcNumeCamp = .cnumecamp *!* llGrupare = .lgrupare *!* llOrdine = .lordine *!* llColoaneSuma = .lSuma *!* ENDWITH If !llColoaneSuma This.nelemente = This.nelemente + 1 Ains(This.aselectie,This.nelemente) This.aselectie[This.nelemente,1] = Upper(Alltrim(lcCamp)) This.aselectie[this.nelemente,2] = 0 This.aselectie[this.nelemente,3] = 0 This.aselectie[this.nelemente,4] = 0 && modificare crosstabulare This.aselectie[this.nelemente,5] = .F. This.aselectie[this.nelemente,6] = Upper(Alltrim(Nvl(lcCampId,lcCamp))) && campul dupa ale carui valori se face crosstabularea && modificare crosstabulare ^ If llGrupare This.ct_grupare1.do_adauga_ct(Upper(Alltrim(lcCamp)),lcNumeCamp) Endif If llOrdine This.ct_ordonare1.do_adauga_ct(Upper(Alltrim(lcCamp)),lcNumeCamp) Endif Else This.ccoloanesuma = This.ccoloanesuma + "|" + lcCamp This.cnumecoloanesuma = This.cnumecoloanesuma + "|" + lcNumeCamp Endif ENDPROC PROTECTED PROCEDURE do_compune_ordine_selectie Lparameters taArraySelectie Local lcOrdine, lcSens lcOrdine = [] Asort(taArraySelectie,3) For i = 1 To Alen(taArraySelectie,1) If !Empty(taArraySelectie[i,1]) And !Empty(Nvl(taArraySelectie[i,3],0)) If Empty(taArraySelectie[i,4]) Or (taArraySelectie[i,4] = 1) lcSens = [] Else lcSens = [ DESC] Endif lcOrdine = lcOrdine + [,] + taArraySelectie[i,1] + lcSens Endif Endfor This.cOrdine = lcOrdine ENDPROC PROCEDURE do_crosstabulare && modificare crosstabulare Lparameters lcCamp, llCrosstabulare lnPozitie=Ascan(This.aselectie,Upper(Alltrim(lcCamp)),1,Alen(This.aselectie,1),1,9) If !This.lcrosstabulare If lnPozitie > 0 This.aselectie(lnPozitie,5) = .T. This.lcrosstabulare = .T. llReturn = .T. Else llReturn = .F. Endif Else If lnPozitie > 0 If This.aselectie(lnPozitie,5) This.aselectie(lnPozitie,5) = .F. This.lcrosstabulare = .F. Endif Endif llReturn = .F. Endif Return llReturn && modificare crosstabulare ^ ENDPROC PROCEDURE do_instructiune_sql LPARAMETERS tcFiltru *!* 22.06.2010 *!* marius.mutu *!* din frm_date_rapoarte_gen.do_cauta - apelez do_instructiune_sql cu filtrul dorit *!* daca coloana de crostabulare face parte din filtru - transmit filtrul la pivot_gen.build_sql_complex - sa arat atatea coloane cate valori sunt in filtru *!* 08.07.2010 *!* marius.mutu *!* am adaugat parametrul p_separator '|' la apelul build_sql_complex *!* daca in expresiile valorilor aparea virgula, era interpretata gresit ca separator de expresii Local llSelectieVida,lcSql,lcColoaneGrupate,lcAlteColoane,lcColoaneSuma,lcSelect,lcFiltru,lcGroupBy,lcOrderBy,lcOrdine,lcOrdineGrup Local lnPozitii,llReturn && modificare crosstabulare Local lcIdColoanaCrossTabulare,lcColoanaCrossTabulare,lnNumarColoane,lcColoaneSumaCT,lcNumeColoaneSumaCT,lcSelectCT,lcColoaneAgregareCT Store "" to lcIdColoanaCrossTabulare,lcColoanaCrossTabulare,lnNumarColoane,lcColoaneSumaCT,lcNumeColoaneSumaCT,lcSelectCT,lcColoaneAgregareCT && modificare crosstabulare ^ Store .T. To llSelectieVida Store .T. to llReturn *!* 08.07.2010 LOCAL lcSeparator lcSeparator = [|] *!* 08.07.2010 ^ lcSql = "" lcMesajAtentie = "" lnNumarColoane = Alen(This.aselectie,2) && numarul de coloane din array-ul this.aselectie If !Empty(This.clistacoloaneordine) lnPozitii = Getwordcount(This.clistacoloaneordine,[,]) + 1 Else lnPozitii = 1 Endif For i = lnPozitii To Alen(Thisform.ct_selectie1.aselectie,1) If !Empty(Thisform.ct_selectie1.aselectie[i,1]) llSelectieVida = .F. Exit Endif Endfor If llSelectieVida lcSql = [] Else Dimension laArraySelectie(This.nelemente,lnNumarColoane) Acopy(This.aselectie,laArraySelectie,1,This.nelemente*lnNumarColoane) This.do_compune_ordine_selectie(@laArraySelectie) lcColoaneAgregare = This.ccoloanesuma lcView = gcS + [.] + This.cnumetabela lcColoaneGrupate = [] lcAlteColoane = [] lcColoaneSuma = [] lcSelect = [] lcFiltru = [1=2] lcGroupBy = [] lcOrderBy = [] lcOrdine = This.cordine lcOrdineGrup = [] && modificare crosstabulare lcIdColoanaCrossTabulare = [] lcColoanaCrossTabulare = [] && modificare crosstabulare ^ If !Empty(This.clistacoloaneordine) *!* sterg coloana pentru care se va face suma For i = 1 To lnPozitii - 1 lnPozColoana = Val(Getwordnum(This.clistacoloaneordine,i,[,])) lcColoana = Getwordnum(This.ccoloanesuma,lnPozColoana,[|]) lnRand = Ascan(laArraySelectie,lcColoana,1,Alen(laArraySelectie,1),1,15) Adel(laArraySelectie,lnRand) *!* Adel(laArraySelectie,1) Endfor Dimension laArraySelectie(This.nelemente-lnPozitii+1,lnNumarColoane) Endif Asort(laArraySelectie,2) For i = 1 To Getwordcount(lcColoaneAgregare,[|]) lcNumeColoana = Getwordnum(lcColoaneAgregare,i,[|]) *!* daca se iau numele coloanelor suma din cNumeColoaneSuma sau chiar numele coloanei If This.ltitlucoloanesuma lcTitluColoana = Getwordnum(This.cNumecoloanesuma,i,[|]) Try lcTitluColoana = strtranx(lcTitluColoana, "([^a-zA-Z0-9])", [_] ) Catch lcTitluColoana = lcNumeColoana Endtry *!* lcTitluColoana = ["] + lcTitluColoana + ["] Else lcTitluColoana = Getwordnum(lcColoaneAgregare,i,[|]) Endif lcColoaneSuma = lcColoaneSuma + [,SUM(] + lcNumeColoana + [) as ] + lcTitluColoana && modificare crosstabulare lcColoaneAgregareCT = lcColoaneAgregareCT + [,SUM(] + lcNumeColoana + [) as ] + lcTitluColoana If This.do_verifica_verticala(lcNumeColoana) *!* 08.07.2010 lcColoaneSumaCT = lcColoaneSumaCT + lcSeparator + lcNumeColoana lcNumeColoaneSumaCT = lcNumeColoaneSumaCT + lcSeparator + lcTitluColoana *!* 08.07.2010 ^ *!* Else *!* lcColoaneAgregareCT = lcColoaneAgregareCT + [,SUM(] + lcNumeColoana + [) as ] + lcTitluColoana Endif && modificare crosstabulare ^ Endfor For i = 1 To Alen(laArraySelectie,1) If !Empty(laArraySelectie[i,1]) && modificare crosstabulare If This.lcrosstabulare And laArraySelectie[i,5] lcColoanaCrossTabulare = laArraySelectie[i,1] lcIdColoanaCrossTabulare = laArraySelectie[i,6] Else && modificare crosstabulare ^ If !Empty(laArraySelectie[i,2]) lcColoaneGrupate = lcColoaneGrupate + [,] + Alltrim(laArraySelectie[i,1]) Else lcAlteColoane = lcAlteColoane + [,] + Alltrim(laArraySelectie[i,1]) Endif && modificare crosstabulare Endif && modificare crosstabulare ^ Endif Endfor *!* daca sunt campuri pentru care se face suma, trebuie sa fie si campuri dupa care se grupeaza If Empty(lcColoaneGrupate) And !Empty(lcColoaneSuma) lcSql = [] lcMesajAtentie = "Trebuie sa bifati campurile pentru grupare!" llReturn = .F. Else If !Empty(lcColoaneGrupate) lcSelect = [GROUPING_ID(]+Substr(lcColoaneGrupate,2)+lcAlteColoane+[) AS GID] + lcColoaneGrupate lcOrdineGrup = Substr(lcColoaneGrupate,2) + [,GID] If Empty(lcAlteColoane) && modificare crosstabulare lcSelectCT = lcSelect && modificare crosstabulare ^ lcSelect = lcSelect + lcColoaneSuma lcGroupBy = [ GROUP BY ROLLUP(]+Substr(lcColoaneGrupate,2)+[) ] Else && modificare crosstabulare lcSelectCT = lcSelect + lcAlteColoane && modificare crosstabulare ^ lcSelect = lcSelect + lcAlteColoane + lcColoaneSuma lcGroupBy = [ GROUP BY ROLLUP(]+Substr(lcColoaneGrupate,2)+[,(]+Substr(lcAlteColoane,2)+[)) ] Endif Else lcSelect = lcSelect + [GROUPING_ID(] + Substr(lcAlteColoane,2) +[) AS GID] + ; lcAlteColoane + lcColoaneSuma && modificare crosstabulare lcSelectCT = lcSelectCT + [GROUPING_ID(] + Substr(lcAlteColoane,2) +[) AS GID] + ; lcAlteColoane && modificare crosstabulare ^ lcGroupBy = [ GROUP BY ROLLUP((] + Substr(lcAlteColoane,2) + [))] lcOrdineGrup = [GID] Endif Do Case Case !Empty(lcOrdine) And !Empty(lcOrdineGrup) lcOrderBy = [ ORDER BY ] + lcOrdineGrup + lcOrdine Case !Empty(lcOrdine) And Empty(lcOrdineGrup) lcOrderBy = [ ORDER BY ] + Substr(lcOrdine,2) Case !Empty(lcOrdineGrup) lcOrderBy = [ ORDER BY ] + lcOrdineGrup Otherwise lcOrderBy = [] Endcase && modificare crosstabulare If This.lcrosstabulare If Empty(lcColoaneSumaCT) amessagebox("Ati ales coloana pentru crosstabulare," + ; "dar nu ati ales sumele care doriti sa fie calculate pentru valorile coloanei respective!",48,"Atentie") llReturn = .F. Return llReturn ENDIF *!* 22.06.2010 IF UPPER(ALLTRIM(m.lcColoanaCrossTabulare))$UPPER(ALLTRIM(m.tcFiltru)) OR UPPER(ALLTRIM(m.lcIdColoanaCrossTabulare))$UPPER(ALLTRIM(m.tcFiltru)) lcFiltru = STRTRAN(m.tcFiltru, ['], ['']) ENDIF *!* 22.06.2010 ^ Local lcCursorCrossTab lcCursorCrossTab = [crscross] *!* 08.07.2010 lcSql = [select pivot_gen.build_sql_complex('] + Strtran(lcView,gcS + [.],[]) + [',] + ; ['] + Strtran(lcSelectCT,['],['']) + [',] + ; ['] + Strtran(Substr(lcColoaneAgregareCT,2),['],['']) + [',] + ; ['] + Strtran(lcIdColoanaCrossTabulare,['],['']) + [',] + ; ['] + Strtran(lcColoanaCrossTabulare,['],['']) + [',] + ; ['] + Strtran(Substr(lcColoaneSumaCT,2),['],['']) + [',] + ; ['] + Strtran(Substr(lcNumeColoaneSumaCT,2),['],['']) + [',] + ; ['SUM',] + ; ['0',] + ; ['] + lcFiltru + [',] + ; [0,] + ; ['] + Strtran(lcGroupBy,[GROUP BY],[]) + [',] + ; ['] + Strtran(Strtran(Strtran(lcOrderBy,[,]+lcColoanaCrossTabulare,[]),lcColoanaCrossTabulare+[,],[]),[ORDER BY],[]) + [',] + ; ['|') as sir_sql from dual] *!* 08.07.2010 ^ lnSucces = goExecutor.oExecute(lcSql,lcCursorCrossTab) If lnSucces < 0 lcSql = [] lcMesajAtentie = [Eroare la crosstabulare!] amessagebox(goExecutor.cEroare,48,"Atentie") llReturn = .F. Else If Reccount(lcCursorCrossTab) > 0 Select (lcCursorCrossTab) lcSql = Alltrim(sir_sql) Endif Use In (lcCursorCrossTab) Endif Else && modificare crosstabulare ^^ lcSql = [SELECT ] + lcSelect + [ FROM ] + lcView + ; [ WHERE ] + lcFiltru + lcGroupBy + lcOrderBy && modificare crosstabulare Endif && modificare crosstabulare ^^ Release laArraySelectie Endif && EMPTY(lcColoaneGrupate) AND !EMPTY(lcColoaneSuma) Endif && llSelectieVida This.cSql = lcSql This.ct_grupare1.lblAtentie.Caption = lcMesajAtentie This.ct_grupare1.lblAtentie.Visible = !Empty(lcMesajAtentie) Return llReturn ENDPROC PROCEDURE do_modifica Lparameters tnColoana,tcCamp,tnValoare && tnColoana : 2 - ordine grupare && 3 - ordine la ordonare && 4 - sens la ordonare = 1 - ASC && 2 - DESC && 5 - cross-tabulare && 6 - valoarea dupa care se face cross-tabularea lnPozitie=Ascan(This.aselectie,Upper(Alltrim(tcCamp)),1,30,1,9) If lnPozitie > 0 This.aselectie[lnPozitie,tnColoana]=tnValoare Endif ENDPROC PROCEDURE do_reset Local i For i = 1 To This.Objects.Count If Upper(Alltrim(This.Objects(i).Class)) = [CT_SELECTIE_CAMP] This.Objects(i).ck_camp.Value = 0 *!* With This.Objects(i) *!* This.do_sterge(.ccamp, .cnumecamp, .lSuma) *!* Endwith Endif EndFor This.ct_GRUPARE1.do_reset() This.ct_orDONARE1.do_reset() Release i ENDPROC PROCEDURE do_sterge LPARAMETERS lcCamp, lcNumeCamp, llColoaneSuma *!* LPARAMETERS toSelectieCamp *!* LOCAL lcCamp, lcNumeCamp *!* WITH toSelectieCamp *!* lcCamp = .ccamp *!* lcNumeCamp = .cnumecamp *!* llColoaneSuma = .lSuma *!* ENDWITH && modificare crosstabulare *!* lnPozitie=Ascan(This.aselectie,Upper(Alltrim(lcCamp)),1,30,1,9) lnPozitie=Ascan(This.aselectie,Upper(Alltrim(lcCamp)),1,Alen(This.aselectie,1),1,9) && modificare crosstabulare ^ If lnPozitie > 0 && modificare crosstabulare If This.aselectie[lnPozitie,5] This.lcrosstabulare = .F. Endif && modificare crosstabulare ^ Adel(This.aselectie,lnPozitie) This.nelemente = This.nelemente - 1 Endif This.ct_grupare1.do_sterge_ct(lcCamp) This.ct_ordonare1.do_sterge_ct(lcCamp) *!* AMESSAGEBOX(this.ccoloanesuma) *!* AMESSAGEBOX(this.cnumecoloanesuma) IF llColoaneSuma this.ccoloanesuma = STRTRAN(this.ccoloanesuma + [|], [|] + lcCamp + [|], [|]) IF RIGHT(this.ccoloanesuma,1) = [|] this.ccoloanesuma = LEFT(this.ccoloanesuma, LEN(this.ccoloanesuma) - 1) ENDIF this.cnumecoloanesuma = STRTRAN(this.cnumecoloanesuma + [|], [|] + lcNumeCamp + [|], [|]) IF RIGHT(this.cnumecoloanesuma,1) = [|] this.cnumecoloanesuma = LEFT(this.cnumecoloanesuma, LEN(this.cnumecoloanesuma) - 1) ENDIF ENDIF *!* AMESSAGEBOX(this.ccoloanesuma) *!* AMESSAGEBOX(this.cnumecoloanesuma) ENDPROC PROCEDURE do_verifica_verticala Lparameters lcCamp Local j llVerticala = .F. For j = 1 To This.Objects.Count If Upper(This.Objects[j].Class) = 'CT_SELECTIE_CAMP' And Upper(This.Objects[j].ccamp) = Upper(lcCamp) llVerticala = This.Objects[j].lverticala Exit Endif Endfor Release j Return llVerticala ENDPROC PROCEDURE get_coloane_crosstabulare Local lcCrossTabulare lcCrossTabulare = [] For j = 1 To This.Objects.Count If Upper(This.Objects[j].Class) = [CT_SELECTIE_CAMP] If This.Objects[j].lverticala *!* modificare 28.04.2011 : campul dupa care se face crosstabularea trebuie sa-l pun pe prima pozitie, altfel, la *!* incarcarea unui raport salvat, nu imi mai pune coloanele de la crosstabulare ( trebuie sa fie *!* bifata mai intai coloana cu .cidcamp completat ) *!* lcCrossTabulare = lcCrossTabulare + [,] + Strtran(Upper(This.Objects[j].Name),[CT_SELECTIE_]) If !Isnull(This.Objects[j].cidcamp) lcCrossTabulare = [,] + Strtran(Upper(This.Objects[j].Name),[CT_SELECTIE_]) + lcCrossTabulare ELSE lcCrossTabulare = lcCrossTabulare + [,] + Strtran(Upper(This.Objects[j].Name),[CT_SELECTIE_]) ENDIF *!* modificare 28.04.2011 ^ Endif Endif Endfor Return Substr(lcCrossTabulare,2) ENDPROC PROCEDURE get_coloane_grupare Local laArray,lcGrupare lcGrupare = [] Dimension laArray[Alen(this.aselectie,1),Alen(this.aselectie,2)] Acopy(This.aselectie,laArray) For i = 1 To Alen(laArray,1) If Empty(laArray[i,2]) laArray[i,2] = 0 Endif Endfor Asort(laArray,2) For i = 1 To Alen(laArray,1) If !Empty(laArray[i,2]) lcGrupare = lcGrupare + [,] + Alltrim(Str(Ascan(this.aselectie,laArray[i,1],1,Alen(this.aselectie,1),1,9))) Endif Endfor Return Substr(lcGrupare,2) ENDPROC PROCEDURE get_coloane_ordonare Local laArray,lcGrupare lcOrdonare = [] Dimension laArray[Alen(this.aselectie,1),Alen(this.aselectie,2)] Acopy(This.aselectie,laArray) For i = 1 To Alen(laArray,1) If Empty(laArray[i,3]) laArray[i,3] = 0 Endif Endfor Asort(laArray,3) For i = 1 To Alen(laArray,1) If !Empty(laArray[i,3]) lcOrdonare = lcOrdonare + [,] + Alltrim(Str(Ascan(this.aselectie,laArray[i,1],1,Alen(this.aselectie,1),1,9))) + Iif(Empty(laArray[i,4]) Or laArray[i,4] = 1,[],[ DESC]) Endif Endfor Return Substr(lcOrdonare,2) ENDPROC PROCEDURE get_coloane_selectie Local lcSelectie lcSelectie = [] *!* For i = 1 To Alen(This.aselectie,1) *!* If !Empty(This.aselectie[i,1]) *!* lcSelectie = lcSelectie + [,] + This.aselectie[i,1] *!* Endif *!* EndFor *!* lcColoaneSuma = Substr(This.ccoloanesuma,2) *!* For i = 1 To Getwordcount(lcColoaneSuma,[,]) *!* lcColoana = Upper(Getwordnum(lcColoaneSuma,i,[,])) *!* For j = 1 To This.Objects.Count *!* If Upper(This.Objects[j].Class) = [CT_SELECTIE_CAMP] *!* If Upper(This.Objects[j].ccamp) = lcColoana *!* lcSelectie = lcSelectie + [,] + Strtran(Upper(This.Objects[j].Name),[CT_SELECTIE_]) *!* Endif *!* Endif *!* Endfor *!* Endfor For j = 1 To This.Objects.Count If Upper(This.Objects[j].Class) = [CT_SELECTIE_CAMP] If This.Objects[j].ck_camp.Value = 1 lcSelectie = lcSelectie + [,] + Strtran(Upper(This.Objects[j].Name),[CT_SELECTIE_]) Endif Endif Endfor Return Substr(lcSelectie,2) ENDPROC PROCEDURE Init *!* la ccoloanesuma si cnumecoloanesuma am ca separator <<|>> si nu <<,>> pentru ca pot avea ca si coloana o expresie de forma : *!* round(....,...) si atunci nu-mi ia corect coloana If !Empty(This.clistacoloaneordine) *!* se adauga la ordine si prima coloana din coloanele de sume lcLista = Alltrim(Iif(Type('This.clistacoloaneordine')='C',This.clistacoloaneordine,Str(This.clistacoloaneordine))) This.clistacoloaneordine=lcLista For i = 1 To Getwordcount(lcLista,[,]) lnPozitie=Val(Getwordnum(lcLista,i,[,])) lcNume=Proper(Getwordnum(This.ccoloanesuma,lnPozitie,[|])) If !Empty(This.cnumecoloanesuma) lcNumeCamp=Proper(Getwordnum(This.cnumecoloanesuma,lnPozitie,[|])) Else lcNumeCamp = lcNume Endif This.do_adauga(lcNume,lcNumeCamp,.F.,.T.,.F.,.NULL.) Endfor Endif Bindevent(This,"lcrosstabulare",This,"do_actualizeaza_culori_sume",1) ENDPROC ENDDEFINE DEFINE CLASS ct_selectie_camp AS _container OF "_baza.vcx" *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="ck_camp" UniqueID="" Timestamp="" /> * *m: actualizeaza_container *m: do_seteaza_culoare *p: ccamp *p: cidcamp && Numele campului care contine id-urile corespunzatoare coloanei "ccamp" ( pentru folosit la campurile cu lverticala = .T. ). *p: cnumecamp *p: csens *p: lgrupare && .T. daca se pot face grupari dupa acest camp. *p: lordine && .T. daca se poate ordona dupa acest camp. *p: lsuma && Acest camp va fi adaugat in proprietatea cColoaneSuma a containerului ct_selectie *p: lverticala && .T. daca valorile posibile pentru aceasta coloana vor aparea ca si coloane. *p: nid_container *p: nordine_grup *p: nordine_ordine *p: nselectat *p: rgbcrosstab && Culoarea folosita pentru coloana ale carei valori pot fi crosstabulate. *p: rgbnormal *p: rgbselectcrosstab && Culoarea coloanei dupa care se face crosstabularea. *p: _memberdata && XML Metadata for customizable properties * * BorderWidth = 0 ccamp = cidcamp = .NULL. cnumecamp = csens = Height = 19 lgrupare = .T. lordine = .T. lsuma = .F. lverticala = .F. Name = "ct_selectie_camp" nid_container = 0 nordine_grup = 0 nordine_ordine = 0 nselectat = 0 rgbcrosstab = 2,119,5 rgbnormal = 0,0,0 rgbselectcrosstab = 0,0,255 Width = 108 _memberdata = * ADD OBJECT 'ck_camp' AS _checkbox WITH ; Alignment = 0, ; Caption = "Camp", ; Left = 9, ; Name = "ck_camp", ; Top = 1 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="checkbox" /> PROCEDURE actualizeaza_container Lparameters llVizibil This.Visible=llVizibil This.ck_camp.FontBold = .F. This.ck_camp.Value = 0 This.ngrupat = 0 ENDPROC PROCEDURE do_seteaza_culoare Lparameters tnTip *!* tnTip = 1 - rgbnormal *!* 2 - rgbcrosstab Local lcCuloare Store [] To lcCuloare If tnTip = 1 lcCuloare = [Rgb(] + This.rgbnormal + [)] This.lverticala = .F. Else lcCuloare = [Rgb(] + This.rgbcrosstab + [)] Endif This.ck_camp.ForeColor = &lcCuloare ENDPROC PROCEDURE Init This.ck_camp.Caption = This.cnumecamp This.do_seteaza_culoare(Iif(Isnull(This.cidcamp),1,2)) ENDPROC PROCEDURE ck_camp.Click This.ProgrammaticChange() ENDPROC PROCEDURE ck_camp.ProgrammaticChange This.Parent.nselectat = This.Value If This.Value = 1 This.FontBold=.T. This.Parent.Parent.do_adauga(This.Parent.ccamp, This.Parent.cnumecamp, This.Parent.lgrupare, This.Parent.lordine, This.Parent.lSuma, This.Parent.cidcamp) Else This.FontBold = .F. && modificare crosstabulare *!* lcCuloare = [Rgb(] + Iif(Isnull(This.Parent.cidcamp),This.Parent.rgbnormal,This.Parent.rgbcrosstab) + [)] lcCuloare = [Rgb(] + Iif((This.Parent.lsuma And This.Parent.Parent.lcrosstabulare) ; or !Isnull(This.Parent.cidcamp),This.Parent.rgbcrosstab,This.Parent.rgbnormal) + [)] This.ForeColor = &lcCuloare This.Parent.lverticala = .F. && modificare crosstabulare ^ This.Parent.Parent.do_sterge(This.Parent.ccamp, This.Parent.cnumecamp, This.Parent.lSuma) Endif ENDPROC PROCEDURE ck_camp.RightClick && modificare crosstabulare If This.Value = 1 If !Isnull(This.Parent.cidcamp) This.Parent.lverticala = This.Parent.Parent.do_crosstabulare(This.Parent.ccamp,This.Parent.lverticala) Endif If This.Parent.lsuma And This.Parent.Parent.lcrosstabulare This.Parent.lverticala = !This.Parent.lverticala Endif If This.Parent.lverticala lcCuloare = [Rgb(] + This.Parent.rgbselectcrosstab + [)] Else lcCuloare = [Rgb(] + Iif((This.Parent.lsuma And This.Parent.Parent.lcrosstabulare) ; or !Isnull(This.Parent.cidcamp),This.Parent.rgbcrosstab,This.Parent.rgbnormal) + [)] Endif This.ForeColor = &lcCuloare Endif && modificare crosstabulare ^ ENDPROC ENDDEFINE DEFINE CLASS ct_selectie_sql AS _container OF "_baza.vcx" *< CLASSDATA: Baseclass="container" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="edtSelectie" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cmdParametri" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lb_coloane" UniqueID="" Timestamp="" /> * *m: do_actualizeaza_culori_sume *m: do_adauga *m: do_compune_ordine_selectie *m: do_crosstabulare *m: do_instructiune_sql *m: do_modifica *m: do_reset *m: do_sterge *m: do_verifica_verticala *m: get_coloane_crosstabulare *m: get_coloane_grupare *m: get_coloane_ordonare *m: get_coloane_selectie *p: cclasa && Clasa folosita pentru checkbox-urile din selectii. *p: ccoloanesuma && Numele coloanelor care sunt agregate. *p: clistacoloaneordine && Lista delimitata prin virgula ce contine pozitiile din ccoloanesuma pentru care se vor adauga containere la ordonare. *p: cnumecoloanesuma *p: cnumetabela && Numele tabelei/view-ului din care se face selectia. *p: cordine *p: csql *p: lcrosstabulare && .T. daca a fost selectata o coloana pentru crosstabulare *p: ltitlucoloanesuma && Daca numele coloanelor selectate se face dupa valoare din cNumeColoaneSuma *p: nelemente && Numarul de elemente din this.aselectie *a: aselectie[30,6] *p: _memberdata && XML Metadata for customizable properties * * Anchor = 15 cclasa = ct_selectie_camp ccoloanesuma = clistacoloaneordine = cnumecoloanesuma = cnumetabela = cordine = csql = Height = 364 lcrosstabulare = .F. ltitlucoloanesuma = .F. Name = "ct_selectie_sql" nelemente = 0 ToolTipText = ' Pentru detalii despre generarea rapoartelor, apasati butonul "?".' Width = 332 _memberdata = * ADD OBJECT 'cmdParametri' AS _commandbutton WITH ; Caption = "Optiuni", ; Height = 22, ; Left = 51, ; Name = "cmdParametri", ; SpecialEffect = 0, ; Top = 4, ; Width = 60 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="commandbutton" /> ADD OBJECT 'edtSelectie' AS _editbox WITH ; Anchor = 15, ; Height = 325, ; Left = 12, ; Name = "edtSelectie", ; Top = 30, ; Width = 312 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="editbox" /> ADD OBJECT 'lb_coloane' AS lb_simplu WITH ; Caption = "SQL", ; FontItalic = .T., ; Height = 17, ; Left = 16, ; Name = "lb_coloane", ; TabIndex = 9, ; Top = 8, ; Width = 26 *< END OBJECT: ClassLib="lb.vcx" BaseClass="label" /> PROCEDURE do_actualizeaza_culori_sume Local lnTip lnTip = Iif(This.lcrosstabulare,2,1) For i = 1 To This.Objects.Count If Upper(This.Objects[i].Class) = 'CT_SELECTIE_CAMP' And This.Objects[i].lsuma This.Objects[i].do_seteaza_culoare(lnTip) Endif Endfor ENDPROC PROCEDURE do_adauga Lparameters lcCamp, lcNumeCamp, llGrupare, llOrdine, llColoaneSuma, lcCampId *!* LPARAMETERS toSelectieCamp *!* LOCAL lcCamp, lcNumeCamp, llGrupare, llOrdine, llColoaneSuma *!* WITH toSelectieCamp *!* lcCamp = .ccamp *!* lcNumeCamp = .cnumecamp *!* llGrupare = .lgrupare *!* llOrdine = .lordine *!* llColoaneSuma = .lSuma *!* ENDWITH If !llColoaneSuma This.nelemente = This.nelemente + 1 Ains(This.aselectie,This.nelemente) This.aselectie[This.nelemente,1] = Upper(Alltrim(lcCamp)) This.aselectie[this.nelemente,2] = 0 This.aselectie[this.nelemente,3] = 0 This.aselectie[this.nelemente,4] = 0 && modificare crosstabulare This.aselectie[this.nelemente,5] = .F. This.aselectie[this.nelemente,6] = Upper(Alltrim(Nvl(lcCampId,lcCamp))) && campul dupa ale carui valori se face crosstabularea && modificare crosstabulare ^ If llGrupare This.ct_grupare1.do_adauga_ct(Upper(Alltrim(lcCamp)),lcNumeCamp) Endif If llOrdine This.ct_ordonare1.do_adauga_ct(Upper(Alltrim(lcCamp)),lcNumeCamp) Endif Else This.ccoloanesuma = This.ccoloanesuma + "|" + lcCamp This.cnumecoloanesuma = This.cnumecoloanesuma + "|" + lcNumeCamp Endif ENDPROC PROTECTED PROCEDURE do_compune_ordine_selectie Lparameters taArraySelectie Local lcOrdine, lcSens lcOrdine = [] Asort(taArraySelectie,3) For i = 1 To Alen(taArraySelectie,1) If !Empty(taArraySelectie[i,1]) And !Empty(Nvl(taArraySelectie[i,3],0)) If Empty(taArraySelectie[i,4]) Or (taArraySelectie[i,4] = 1) lcSens = [] Else lcSens = [ DESC] Endif lcOrdine = lcOrdine + [,] + taArraySelectie[i,1] + lcSens Endif Endfor This.cOrdine = lcOrdine ENDPROC PROCEDURE do_crosstabulare && modificare crosstabulare Lparameters lcCamp, llCrosstabulare lnPozitie=Ascan(This.aselectie,Upper(Alltrim(lcCamp)),1,Alen(This.aselectie,1),1,9) If !This.lcrosstabulare If lnPozitie > 0 This.aselectie(lnPozitie,5) = .T. This.lcrosstabulare = .T. llReturn = .T. Else llReturn = .F. Endif Else If lnPozitie > 0 If This.aselectie(lnPozitie,5) This.aselectie(lnPozitie,5) = .F. This.lcrosstabulare = .F. Endif Endif llReturn = .F. Endif Return llReturn && modificare crosstabulare ^ ENDPROC PROCEDURE do_instructiune_sql Lparameters tcFiltru Local llReturn, i, lcText, lcValue, llEroare Local lcFiltru, lnParametri, lcParametruValoare, lcParametru, lcValoare, lnAtPos1, lnAtPos2 llReturn = .F. * EXTRAGERE VALORI PARAMETRI DIN TCFILTRU * TNAN = 2010 AND TNLUNA = 9 AND SUCURSALA * AN AND S Create Cursor crsParametriValori (parametru C(100), valoare M) lcFiltru = Strtran(Upper(Alltrim(tcFiltru)), 'AND' , '|') lnParametri = Getwordcount(lcFiltru, '|') For i = 1 To lnParametri lcParametruValoare = Getwordnum(lcFiltru, i, '|') If !Empty(m.lcParametruValoare) && TNAN = 2010 lcParametru = Upper(Alltrim(Getwordnum(m.lcParametruValoare, 1, '='))) && TNAN * Se pare ca parametri de tip C au UPPER(parametru) = 'valoare' * Scot UPPER() lcParametru = STRTRAN(m.lcParametru, 'UPPER(', '') lcParametru = STRTRAN(m.lcParametru, ')', '') Do Case * parametri cuvinte rezervate trebuie sa fie definiti cu tipul E * pe camp cautare id trebuie sa fie tot numele parametrului Case lcParametru = 'SUCURSALA' && sucursala curenta lcValoare = gcCondSucursala Case lcParametru = 'AN' && an curent lcValoare = ALLTRIM(STR(gnAn)) && Alltrim(Str(m.gnAn)) Case lcParametru = 'LUNA' && luna curenta lcValoare = ALLTRIM(STR(gnLuna)) && Alltrim(Str(m.gnLuna)) Otherwise lcValoare = Alltrim(Getwordnum(m.lcParametruValoare, 2, '=')) && 2010 * Scot apostroafele din valorile de tip caracter ex: UPPER(tnZIuaCURENTA) = '04102010' IF INLIST(LEFT(m.lcValoare,1), ['], ["]) AND INLIST(RIGHT(m.lcValoare,1), ['], ["]) lcValoare = SUBSTR(m.lcValoare, 2, LEN(m.lcValoare) - 2) ENDIF Endcase Insert Into crsParametriValori (parametru, valoare) Values (lcParametru, lcValoare) Endif Endfor * RAW SQL * select * from act where an = <%=TNAN%> and luna = <%=TNLUNA%> lcText = Alltrim(This.edtSelectie.Value) * FAC MERGE VALORI PARAMETRI IN RAW SQL llEroare = .F. Do While Atcc('<%=', lcText) > 0 * Get the start and end position of the next expression lnAtPos1 = Atcc('<%=', lcText) lnAtPos2 = Atcc('%>', lcText) * Extract the next expression lcParametru = Substr(m.lcText, lnAtPos1 + 3, lnAtPos2 - lnAtPos1 - 3) * Remove any cariage returns from the expression as they could be inserted by an HTML editor lcParametru = Upper(Alltrim(Chrtran(m.lcParametru, Chr(13) + Chr(10), ''))) lcValue = "" Select crsParametriValori Locate For parametru = lcParametru If Found() lcValue = valoare ELSE AMESSAGEBOX('Nu este completata valoarea parametrului ' + lcParametru + '!',0+48, _screen.Caption) llEroare = .T. EXIT Endif * Stuff the result back instead of the original expression lcText = Stuffc(lcText, lnAtPos1, lnAtPos2 - lnAtPos1 + 2, lcValue) Enddo IF !llEroare This.cSql = m.lcText llReturn = .T. ELSE This.cSql = "" llReturn = .F. ENDIF Return llReturn ENDPROC PROCEDURE do_modifica Lparameters tnColoana,tcCamp,tnValoare && tnColoana : 2 - ordine grupare && 3 - ordine la ordonare && 4 - sens la ordonare = 1 - ASC && 2 - DESC && 5 - cross-tabulare && 6 - valoarea dupa care se face cross-tabularea lnPozitie=Ascan(This.aselectie,Upper(Alltrim(tcCamp)),1,30,1,9) If lnPozitie > 0 This.aselectie[lnPozitie,tnColoana]=tnValoare Endif ENDPROC PROCEDURE do_reset THIS.edtSelectie.Value = "" ENDPROC PROCEDURE do_sterge LPARAMETERS lcCamp, lcNumeCamp, llColoaneSuma *!* LPARAMETERS toSelectieCamp *!* LOCAL lcCamp, lcNumeCamp *!* WITH toSelectieCamp *!* lcCamp = .ccamp *!* lcNumeCamp = .cnumecamp *!* llColoaneSuma = .lSuma *!* ENDWITH && modificare crosstabulare *!* lnPozitie=Ascan(This.aselectie,Upper(Alltrim(lcCamp)),1,30,1,9) lnPozitie=Ascan(This.aselectie,Upper(Alltrim(lcCamp)),1,Alen(This.aselectie,1),1,9) && modificare crosstabulare ^ If lnPozitie > 0 && modificare crosstabulare If This.aselectie[lnPozitie,5] This.lcrosstabulare = .F. Endif && modificare crosstabulare ^ Adel(This.aselectie,lnPozitie) This.nelemente = This.nelemente - 1 Endif This.ct_grupare1.do_sterge_ct(lcCamp) This.ct_ordonare1.do_sterge_ct(lcCamp) *!* AMESSAGEBOX(this.ccoloanesuma) *!* AMESSAGEBOX(this.cnumecoloanesuma) IF llColoaneSuma this.ccoloanesuma = STRTRAN(this.ccoloanesuma + [|], [|] + lcCamp + [|], [|]) IF RIGHT(this.ccoloanesuma,1) = [|] this.ccoloanesuma = LEFT(this.ccoloanesuma, LEN(this.ccoloanesuma) - 1) ENDIF this.cnumecoloanesuma = STRTRAN(this.cnumecoloanesuma + [|], [|] + lcNumeCamp + [|], [|]) IF RIGHT(this.cnumecoloanesuma,1) = [|] this.cnumecoloanesuma = LEFT(this.cnumecoloanesuma, LEN(this.cnumecoloanesuma) - 1) ENDIF ENDIF *!* AMESSAGEBOX(this.ccoloanesuma) *!* AMESSAGEBOX(this.cnumecoloanesuma) ENDPROC PROCEDURE do_verifica_verticala Lparameters lcCamp Local j llVerticala = .F. For j = 1 To This.Objects.Count If Upper(This.Objects[j].Class) = 'CT_SELECTIE_CAMP' And Upper(This.Objects[j].ccamp) = Upper(lcCamp) llVerticala = This.Objects[j].lverticala Exit Endif Endfor Release j Return llVerticala ENDPROC PROCEDURE get_coloane_crosstabulare Local lcCrossTabulare lcCrossTabulare = [] For j = 1 To This.Objects.Count If Upper(This.Objects[j].Class) = [CT_SELECTIE_CAMP] If This.Objects[j].lverticala lcCrossTabulare = lcCrossTabulare + [,] + Strtran(Upper(This.Objects[j].Name),[CT_SELECTIE_]) Endif Endif Endfor Return Substr(lcCrossTabulare,2) ENDPROC PROCEDURE get_coloane_grupare Local laArray,lcGrupare lcGrupare = [] Dimension laArray[Alen(this.aselectie,1),Alen(this.aselectie,2)] Acopy(This.aselectie,laArray) For i = 1 To Alen(laArray,1) If Empty(laArray[i,2]) laArray[i,2] = 0 Endif Endfor Asort(laArray,2) For i = 1 To Alen(laArray,1) If !Empty(laArray[i,2]) lcGrupare = lcGrupare + [,] + Alltrim(Str(Ascan(this.aselectie,laArray[i,1],1,Alen(this.aselectie,1),1,9))) Endif Endfor Return Substr(lcGrupare,2) ENDPROC PROCEDURE get_coloane_ordonare Local laArray,lcGrupare lcOrdonare = [] Dimension laArray[Alen(this.aselectie,1),Alen(this.aselectie,2)] Acopy(This.aselectie,laArray) For i = 1 To Alen(laArray,1) If Empty(laArray[i,3]) laArray[i,3] = 0 Endif Endfor Asort(laArray,3) For i = 1 To Alen(laArray,1) If !Empty(laArray[i,3]) lcOrdonare = lcOrdonare + [,] + Alltrim(Str(Ascan(this.aselectie,laArray[i,1],1,Alen(this.aselectie,1),1,9))) + Iif(Empty(laArray[i,4]) Or laArray[i,4] = 1,[],[ DESC]) Endif Endfor Return Substr(lcOrdonare,2) ENDPROC PROCEDURE get_coloane_selectie Local lcSelectie lcSelectie = [] *!* For i = 1 To Alen(This.aselectie,1) *!* If !Empty(This.aselectie[i,1]) *!* lcSelectie = lcSelectie + [,] + This.aselectie[i,1] *!* Endif *!* EndFor *!* lcColoaneSuma = Substr(This.ccoloanesuma,2) *!* For i = 1 To Getwordcount(lcColoaneSuma,[,]) *!* lcColoana = Upper(Getwordnum(lcColoaneSuma,i,[,])) *!* For j = 1 To This.Objects.Count *!* If Upper(This.Objects[j].Class) = [CT_SELECTIE_CAMP] *!* If Upper(This.Objects[j].ccamp) = lcColoana *!* lcSelectie = lcSelectie + [,] + Strtran(Upper(This.Objects[j].Name),[CT_SELECTIE_]) *!* Endif *!* Endif *!* Endfor *!* Endfor For j = 1 To This.Objects.Count If Upper(This.Objects[j].Class) = [CT_SELECTIE_CAMP] If This.Objects[j].ck_camp.Value = 1 lcSelectie = lcSelectie + [,] + Strtran(Upper(This.Objects[j].Name),[CT_SELECTIE_]) Endif Endif Endfor Return Substr(lcSelectie,2) ENDPROC PROCEDURE Init *!* la ccoloanesuma si cnumecoloanesuma am ca separator <<|>> si nu <<,>> pentru ca pot avea ca si coloana o expresie de forma : *!* round(....,...) si atunci nu-mi ia corect coloana If !Empty(This.clistacoloaneordine) *!* se adauga la ordine si prima coloana din coloanele de sume lcLista = Alltrim(Iif(Type('This.clistacoloaneordine')='C',This.clistacoloaneordine,Str(This.clistacoloaneordine))) This.clistacoloaneordine=lcLista For i = 1 To Getwordcount(lcLista,[,]) lnPozitie=Val(Getwordnum(lcLista,i,[,])) lcNume=Proper(Getwordnum(This.ccoloanesuma,lnPozitie,[|])) If !Empty(This.cnumecoloanesuma) lcNumeCamp=Proper(Getwordnum(This.cnumecoloanesuma,lnPozitie,[|])) Else lcNumeCamp = lcNume Endif This.do_adauga(lcNume,lcNumeCamp,.F.,.T.,.F.,.NULL.) Endfor Endif Bindevent(This,"lcrosstabulare",This,"do_actualizeaza_culori_sume",1) ENDPROC PROCEDURE cmdParametri.Click Local lcSql, lnIdRaport lcSql = This.Parent.edtSelectie.Value lnIdRaport = This.Parent.Parent.nIdRaport *** definesc parametri (ex: tnAn, tnLuna) si salvez filtrul in rapoarte_filtre lnButon = parametri_rapoarte_sql(m.lcSql, m.lnIdRaport) && In orapoarte_dinamice.prg IF lnButon = 1 *** incarc filtrele pentru completarea criteriilor This.Parent.Parent.do_reset_filtru() && frm_date_rapoarte_gen_base.do_incarca_filtru() ENDIF ENDPROC ENDDEFINE DEFINE CLASS frm_date_rapoarte AS _frmbase OF "_frm_base.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="But_salveaza1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_clb_raport" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_clb_raport.But_sterge1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Clb_data_referinta" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Clb_perioada" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_opt_agent" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_opt_masina" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_opt_delegat" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_opt_client" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_selectie1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_nract" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_datascad" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_nume_agent" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_nume_delegat" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_nume_client" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_selectie1.Ct_selectie_dataact" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_listare1" UniqueID="" Timestamp="" /> * *m: do_adauga_filtru *m: do_cauta_agent *m: do_cauta_client *m: do_cauta_delegat *m: do_cauta_masina * * DoCreate = .T. Height = 470 Name = "frm_date_rapoarte" Width = 696 _shape1.Height = 29 _shape1.Left = 0 _shape1.Name = "_shape1" _shape1.Top = 0 _shape1.Width = 696 _shape2.Height = 29 _shape2.Left = 600 _shape2.Name = "_shape2" _shape2.Top = 0 _shape2.Width = 96 Lb_titlu_alb_b121.Caption = "CRITERII DE SELECTIE" Lb_titlu_alb_b121.FontBold = .T. Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" Lb_titlu_alb_b121.TabIndex = 22 BUT_TERMIN1.Left = 664 BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.TabIndex = 18 BUT_TERMIN1.Top = 1 GRIDSORT1.Left = 480 GRIDSORT1.Name = "GRIDSORT1" GRIDSORT1.Top = 36 * ADD OBJECT 'But_listare1' AS but_listare WITH ; Left = 634, ; Name = "But_listare1", ; Top = 1 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_salveaza1' AS but_salveaza WITH ; Left = 603, ; Name = "But_salveaza1", ; TabIndex = 20, ; Top = 1, ; Visible = .F. *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'Clb_data_referinta' AS clb_tx_simplu WITH ; Left = 383, ; Name = "Clb_data_referinta", ; TabIndex = 3, ; Top = 100, ; Text_simplu1.ControlSource = "poListare.data_referinta", ; Text_simplu1.Height = 23, ; Text_simplu1.Left = 126, ; Text_simplu1.Name = "Text_simplu1", ; Text_simplu1.Top = 3, ; Text_simplu1.Width = 159, ; Lb_simplu1.Caption = "Data de referinta", ; Lb_simplu1.Name = "Lb_simplu1" *< END OBJECT: ClassLib="lb_tx.vcx" BaseClass="container" /> ADD OBJECT 'Clb_perioada' AS clb_n1n2_simplu WITH ; Left = 383, ; Name = "Clb_perioada", ; TabIndex = 2, ; Top = 72, ; tx_n1.ControlSource = "poListare.datai", ; tx_n1.Left = 127, ; tx_n1.Name = "tx_n1", ; tx_n1.Top = 2, ; Lb_simplu1.Caption = "Perioada", ; Lb_simplu1.Name = "Lb_simplu1", ; tx_n2.ControlSource = "poListare.dataf", ; tx_n2.Name = "tx_n2" *< END OBJECT: ClassLib="lb_tx.vcx" BaseClass="container" /> ADD OBJECT 'Ct_clb_raport' AS ct_clb_cautare WITH ; Height = 31, ; Left = 23, ; Name = "Ct_clb_raport", ; TabIndex = 21, ; Top = 36, ; Visible = .F., ; Width = 396, ; img_cautare.Height = 25, ; img_cautare.Left = 321, ; img_cautare.Name = "img_cautare", ; img_cautare.Top = 3, ; img_cautare.Width = 30, ; clb_tx_cautare.Lb_simplu1.Caption = "Raport", ; clb_tx_cautare.Lb_simplu1.Name = "Lb_simplu1", ; clb_tx_cautare.Name = "clb_tx_cautare", ; clb_tx_cautare.TabIndex = 1, ; clb_tx_cautare.Text_simplu1.Height = 23, ; clb_tx_cautare.Text_simplu1.Left = 71, ; clb_tx_cautare.Text_simplu1.Name = "Text_simplu1", ; clb_tx_cautare.Text_simplu1.Top = 3, ; clb_tx_cautare.Text_simplu1.Width = 239 *< END OBJECT: ClassLib="caut_ora.vcx" BaseClass="container" /> ADD OBJECT 'Ct_clb_raport.But_sterge1' AS but_sterge WITH ; Height = 27, ; Left = 361, ; Name = "But_sterge1", ; TabIndex = 2, ; Top = 1, ; Width = 30 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'Ct_opt_agent' AS ct_opt_cautare WITH ; cprocedura = thisform.do_cauta_agent, ; cvar_afisata = poListare.nume_agent, ; Left = 383, ; Name = "Ct_opt_agent", ; TabIndex = 5, ; Top = 198, ; tx_cautare.Name = "tx_cautare", ; opt_cautare.Name = "opt_cautare", ; opt_cautare.OPTION1.Left = 5, ; opt_cautare.OPTION1.Name = "OPTION1", ; opt_cautare.OPTION1.Top = 5, ; opt_cautare.OPTION2.Left = 5, ; opt_cautare.OPTION2.Name = "OPTION2", ; opt_cautare.OPTION2.Top = 24, ; lb_explicatie.Caption = "Agent", ; lb_explicatie.Name = "lb_explicatie" *< END OBJECT: ClassLib="caut_ora.vcx" BaseClass="container" /> ADD OBJECT 'Ct_opt_client' AS ct_opt_cautare WITH ; cprocedura = thisform.do_cauta_client, ; cvar_afisata = poListare.nume_client, ; Left = 383, ; Name = "Ct_opt_client", ; TabIndex = 4, ; Top = 128, ; tx_cautare.Name = "tx_cautare", ; opt_cautare.Name = "opt_cautare", ; opt_cautare.OPTION1.Left = 5, ; opt_cautare.OPTION1.Name = "OPTION1", ; opt_cautare.OPTION1.Top = 5, ; opt_cautare.OPTION2.Left = 5, ; opt_cautare.OPTION2.Name = "OPTION2", ; opt_cautare.OPTION2.Top = 24, ; lb_explicatie.Caption = "Client", ; lb_explicatie.Name = "lb_explicatie" *< END OBJECT: ClassLib="caut_ora.vcx" BaseClass="container" /> ADD OBJECT 'Ct_opt_delegat' AS ct_opt_cautare WITH ; cprocedura = thisform.do_cauta_delegat, ; cvar_afisata = poListare.nume_delegat, ; Left = 383, ; Name = "Ct_opt_delegat", ; TabIndex = 6, ; Top = 268, ; tx_cautare.Name = "tx_cautare", ; opt_cautare.Name = "opt_cautare", ; opt_cautare.OPTION1.Left = 5, ; opt_cautare.OPTION1.Name = "OPTION1", ; opt_cautare.OPTION1.Top = 5, ; opt_cautare.OPTION2.Left = 5, ; opt_cautare.OPTION2.Name = "OPTION2", ; opt_cautare.OPTION2.Top = 24, ; lb_explicatie.Caption = "Delegat", ; lb_explicatie.Name = "lb_explicatie" *< END OBJECT: ClassLib="caut_ora.vcx" BaseClass="container" /> ADD OBJECT 'Ct_opt_masina' AS ct_opt_cautare WITH ; cprocedura = thisform.do_cauta_masina, ; cvar_afisata = poListare.nrinmat, ; Left = 383, ; Name = "Ct_opt_masina", ; TabIndex = 7, ; Top = 338, ; tx_cautare.Name = "tx_cautare", ; opt_cautare.Name = "opt_cautare", ; opt_cautare.OPTION1.Left = 5, ; opt_cautare.OPTION1.Name = "OPTION1", ; opt_cautare.OPTION1.Top = 5, ; opt_cautare.OPTION2.Left = 5, ; opt_cautare.OPTION2.Name = "OPTION2", ; opt_cautare.OPTION2.Top = 24, ; lb_explicatie.Caption = "Masina", ; lb_explicatie.Name = "lb_explicatie" *< END OBJECT: ClassLib="caut_ora.vcx" BaseClass="container" /> ADD OBJECT 'Ct_selectie1' AS ct_selectie WITH ; ccoloanesuma = facturat|incasat, ; cnumetabela = fact_vrap_fact_incasari, ; Left = 24, ; Name = "Ct_selectie1", ; Top = 72, ; Ct_grupare1.lblAtentie.Name = "lblAtentie", ; Ct_grupare1.lb_grupare.Name = "lb_grupare", ; Ct_grupare1.Name = "Ct_grupare1", ; Ct_ordonare1.lb_ordonare.Name = "lb_ordonare", ; Ct_ordonare1.Name = "Ct_ordonare1", ; lb_coloane.Name = "lb_coloane" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> ADD OBJECT 'Ct_selectie1.Ct_selectie_dataact' AS ct_selectie_camp WITH ; ccamp = dataact, ; cnumecamp = Data factura, ; Left = 17, ; Name = "Ct_selectie_dataact", ; nid_container = 2, ; TabIndex = 37, ; Top = 36, ; ck_camp.Alignment = 0, ; ck_camp.Name = "ck_camp" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> ADD OBJECT 'Ct_selectie1.Ct_selectie_datascad' AS ct_selectie_camp WITH ; ccamp = datascad, ; cnumecamp = Data scadenta, ; Left = 17, ; Name = "Ct_selectie_datascad", ; nid_container = 3, ; TabIndex = 31, ; Top = 51, ; ck_camp.Alignment = 0, ; ck_camp.Name = "ck_camp" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> ADD OBJECT 'Ct_selectie1.Ct_selectie_nract' AS ct_selectie_camp WITH ; ccamp = nract, ; cnumecamp = Nr. factura, ; Left = 17, ; Name = "Ct_selectie_nract", ; nid_container = 1, ; TabIndex = 30, ; Top = 22, ; ck_camp.Alignment = 0, ; ck_camp.Name = "ck_camp" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> ADD OBJECT 'Ct_selectie1.Ct_selectie_nume_agent' AS ct_selectie_camp WITH ; ccamp = nume_agent, ; cnumecamp = Agent, ; Left = 180, ; Name = "Ct_selectie_nume_agent", ; nid_container = 5, ; TabIndex = 33, ; Top = 22, ; ck_camp.Alignment = 0, ; ck_camp.Name = "ck_camp" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> ADD OBJECT 'Ct_selectie1.Ct_selectie_nume_client' AS ct_selectie_camp WITH ; ccamp = nume_client, ; cnumecamp = Client, ; Left = 17, ; Name = "Ct_selectie_nume_client", ; nid_container = 4, ; TabIndex = 36, ; Top = 67, ; ck_camp.Alignment = 0, ; ck_camp.Name = "ck_camp" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> ADD OBJECT 'Ct_selectie1.Ct_selectie_nume_delegat' AS ct_selectie_camp WITH ; ccamp = nume_delegat, ; cnumecamp = Delegat, ; Left = 180, ; Name = "Ct_selectie_nume_delegat", ; TabIndex = 34, ; Top = 36, ; ck_camp.Alignment = 0, ; ck_camp.Name = "ck_camp" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> PROCEDURE do_adauga_filtru Lparameters lcSql lcFiltru = [WHERE DATAACT BETWEEN ?poListare.datai AND ?poListare.dataf] If !Empty(Nvl(poListare.nume_client,[])) lcFiltru = lcFiltru + [ AND nume_client = ?poListare.nume_client] Endif If !Empty(Nvl(poListare.nume_agent,[])) lcFiltru = lcFiltru + [ AND nume_agent = ?poListare.nume_agent] Endif If !Empty(Nvl(poListare.nume_delegat,[])) lcFiltru = lcFiltru + [ AND nume_delegat = ?poListare.nume_delegat] Endif If !Empty(Nvl(poListare.nrinmat,[])) lcFiltru = lcFiltru + [ AND nrinmat = ?poListare.nrinmat] Endif poListare.csql = Strtran(lcSql,[WHERE 1=2],lcFiltru) ENDPROC PROCEDURE do_cauta_agent Private pnIdPart,pcNumePart lcTitlu=[ALEGETI AGENTUL] pnIdPart=0 pcNumePart=[] If caut_partener_dupa_tip(gnIdTipAgenti,lcTitlu,@pnIdPart,@pcNumePart) poListare.id_agent = pnIdPart poListare.nume_agent = Alltrim(pcNumePart) Thisform.ct_opt_agent.Refresh() Thisform.ct_opt_delegat.SetFocus() Else If Empty(Nvl(poListare.nume_agent,[])) Thisform.ct_opt_agent.opt_cautare.Value=1 Endif Thisform.ct_opt_agent.SetFocus() Endif ENDPROC PROCEDURE do_cauta_client Private pnIdPart,pcNumePart Store 0 To pnIdPart Store "" To pcNumePart If cauta_client(@pnIdPart,@pcNumePart) poListare.id_client = pnIdPart poListare.nume_client = pcNumePart Thisform.ct_opt_client.Refresh() Thisform.ct_opt_agent.SetFocus() Else If Empty(Nvl(poListare.nume_client,[])) Thisform.ct_opt_client.opt_cautare.Value=1 Endif Thisform.ct_opt_client.SetFocus() Endif ENDPROC PROCEDURE do_cauta_delegat Local loCauta loCauta=caut_delegati() If !Empty(loCauta.id_responsabil) poListare.id_delegat = loCauta.id_responsabil poListare.nume_delegat = Alltrim(loCauta.nume) Thisform.ct_opt_delegat.Refresh() Thisform.ct_opt_masina.SetFocus() Else If Empty(Nvl(poListare.nume_delegat,[])) Thisform.ct_opt_delegat.opt_cautare.Value = 1 Endif Thisform.ct_opt_delegat.SetFocus() Endif ENDPROC PROCEDURE do_cauta_masina locauta=caut_masina_gs() If !Empty(locauta.id_masina) poListare.nrinmat = Alltrim(locauta.nrinmat) poListare.id_masina = locauta.id_masina Thisform.ct_opt_masina.Refresh() Else If Empty(Nvl(poListare.nrinmat,[])) Thisform.ct_opt_masina.opt_cautare.Value = 1 Endif Thisform.ct_opt_masina.SetFocus() Endif ENDPROC PROCEDURE do_listare lccontrol = Upper(This.ActiveControl.BaseClass ) If Inlist(lccontrol,"TEXTBOX","EDITBOX","COMBOBOX") lcval=This.ActiveControl.ControlSource &lcval=Thisform.ActiveControl.Value Endif Do Case Case Empty(Nvl(poListare.datai,{})) amessagebox("Nu ati completat data initiala!",0+48,"Atentie") Thisform.clb_perioada.tx_n1.SetFocus() Return Case Empty(Nvl(poListare.dataf,{})) amessagebox("Nu ati completat data finala!",0+48,"Atentie") Thisform.clb_perioada.tx_n2.SetFocus() Return Case Empty(Nvl(poListare.data_referinta,{})) amessagebox("Nu ati completat data de referinta!",0+48,"Atentie") Thisform.clb_data_referinta.SetFocus() Return Otherwise With This.ct_selectie1 .do_instructiune_sql() lcSql = .csql Endwith If Empty(lcSql) amessagebox("Nu ati ales coloane pentru selectie!",0+48,"Atentie") Thisform.ct_selectie1.SetFocus() Return Else This.do_adauga_filtru(lcSql) Endif Endcase If Used('crsraport') Use In crsraport Endif STRTOFILE(poListare.cSql,[c:\sql.txt]) lnSucces = goExecutor.oExecute(poListare.csql,'crsraport') If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare") Endif pcDataora = get_ora(2) If Reccount('crsraport')<>0 Thisform.AlwaysOnTop = .F. Select crsraport Report Form raport_facturat To Printer Prompt Preview Thisform.AlwaysOnTop = .T. Else amessagebox("Nu exista rezultate pentru listare!",0+48,"Atentie") Endif If Used('crsraport') Use In crsraport Endif ENDPROC PROCEDURE Clb_perioada.tx_n1.Valid *!* ENDPROC ENDDEFINE DEFINE CLASS frm_date_rapoarte_gen AS frm_date_rapoarte_gen_base OF "orapoarte.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="Ct_selectie1" UniqueID="" Timestamp="" /> * DoCreate = .T. Name = "frm_date_rapoarte_gen" _shape1.Name = "_shape1" _shape2.Name = "_shape2" Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" Gridsort1.Name = "Gridsort1" BUT_TERMIN1.Name = "BUT_TERMIN1" But_listare1.Name = "But_listare1" But_excel1.Name = "But_excel1" But_help1.Name = "But_help1" But_cautare1.Name = "But_cautare1" But_sterge1.Name = "But_sterge1" ed_explicatii_filtru.Name = "ed_explicatii_filtru" ed_explicatii_filtru.Top = 63 But_salveaza1.Name = "But_salveaza1" But_nou1.Name = "But_nou1" But_reset2.Name = "But_reset2" But_start_criterii1.Name = "But_start_criterii1" lb_raport_predefinit.Name = "lb_raport_predefinit" * ADD OBJECT 'Ct_selectie1' AS ct_selectie WITH ; Height = 391, ; Left = 7, ; Name = "Ct_selectie1", ; TabIndex = 11, ; Top = 36, ; Width = 332, ; ZOrderSet = 11, ; Ct_grupare1.lblAtentie.Name = "lblAtentie", ; Ct_grupare1.lb_grupare.Name = "lb_grupare", ; Ct_grupare1.Left = 5, ; Ct_grupare1.Name = "Ct_grupare1", ; Ct_grupare1.Top = 252, ; Ct_grupare1._scrollcontainer1.But_jos1.Name = "But_jos1", ; Ct_grupare1._scrollcontainer1.But_sus1.Name = "But_sus1", ; Ct_grupare1._scrollcontainer1.Name = "_scrollcontainer1", ; Ct_ordonare1.lb_ordonare.Name = "lb_ordonare", ; Ct_ordonare1.Left = 5, ; Ct_ordonare1.Name = "Ct_ordonare1", ; Ct_ordonare1.Top = 120, ; Ct_ordonare1._scrollcontainer1.But_jos1.Name = "But_jos1", ; Ct_ordonare1._scrollcontainer1.But_sus1.Name = "But_sus1", ; Ct_ordonare1._scrollcontainer1.Name = "_scrollcontainer1", ; lb_coloane.Name = "lb_coloane" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> ENDDEFINE DEFINE CLASS frm_date_rapoarte_gen_base AS _frmbase OF "_frm_base.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="But_listare1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_excel1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_help1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_cautare1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_sterge1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_nou1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="ed_explicatii_filtru" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_salveaza1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_reset2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lb_raport_predefinit" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_start_criterii1" UniqueID="" Timestamp="" /> * *m: creeaza_raport *m: do_adauga_filtru *m: do_cauta_raport *m: do_incarca_filtru *m: do_incarca_raport *m: do_modificabil *m: do_reset_filtru *p: cdenumire && Denumirea raportului. *p: cfiltruperioada && Campurile / campul dupa care se filtreaza perioada ( trebuie sa fie de forma an * 12 + luna ). *p: cnume_ct_selectie && Numele containerului bazat pe ct_selectie. *p: craport && Numele raportului pentru listare *p: craportinitial && Numele raportului folosit pentru listare. *p: ctitluraport *p: ctitluraportinitial && Titlul initial al raportului. *p: filtru_cript *p: ladaugalunacurenta && IN CAZUL IN CARE EXISTA PERIOADA IN FILTRU : .T. - daca adauga luna curenta in filtru la incarcarea unui raport ( daca nu exista deja o perioada salvata in filtru ), la resetare si la raport nou. *p: ldrepturi && Se acceseaza doar rapoartele pe care are drepturi utilizatorul *p: lfiltruperioada && .T. - este adaugat filtrul pe perioada; campul este specificat in cFiltruPerioada *p: lreadonly && Daca campurile de selectie, ordonare, grupare sunt blocate (pentru selectii predefinite) *p: nidformularraport && Id-ul formularului. *p: nidraport && Id-ul raportului incarcat. *p: nidraportinitial * * BorderStyle = 3 cdenumire = cfiltruperioada = an*12+luna cnume_ct_selectie = ct_selectie1 craport = craportinitial = ctitluraport = ctitluraportinitial = Rapoarte generate dinamic DoCreate = .T. filtru_cript = Height = 440 lactiv4 = .T. ladaugalunacurenta = .T. ldrepturi = .F. lfiltruperioada = .T. lreadonly = .F. Name = "frm_date_rapoarte_gen_base" nidformularraport = .NULL. nidraport = .NULL. nidraportinitial = .NULL. Width = 696 _memberdata = _shape1.Anchor = 10 _shape1.Height = 29 _shape1.Left = 0 _shape1.Name = "_shape1" _shape1.Top = 0 _shape1.Width = 696 _shape1.ZOrderSet = 0 _shape2.Height = 29 _shape2.Left = 455 _shape2.Name = "_shape2" _shape2.Top = 0 _shape2.Width = 240 _shape2.ZOrderSet = 1 Lb_titlu_alb_b121.Caption = "Thisform.ctitluraportinitial" Lb_titlu_alb_b121.FontBold = .T. Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" Lb_titlu_alb_b121.TabIndex = 10 Lb_titlu_alb_b121.ZOrderSet = 2 BUT_TERMIN1.Anchor = 9 BUT_TERMIN1.Left = 666 BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.TabIndex = 8 BUT_TERMIN1.Top = 1 BUT_TERMIN1.ZOrderSet = 4 GRIDSORT1.Left = 480 GRIDSORT1.Name = "GRIDSORT1" GRIDSORT1.Top = 36 * ADD OBJECT 'But_cautare1' AS but_cautare WITH ; Anchor = 9, ; caction = do_cauta_raport, ; Height = 27, ; Left = 513, ; Name = "But_cautare1", ; TabIndex = 3, ; Top = 1, ; Width = 30 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_excel1' AS but_excel WITH ; Anchor = 9, ; Left = 605, ; Name = "But_excel1", ; TabIndex = 6, ; Top = 1, ; ZOrderSet = 6 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_help1' AS but_help WITH ; Anchor = 9, ; Left = 454, ; Name = "But_help1", ; TabIndex = 1, ; Top = 1, ; ZOrderSet = 7 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_listare1' AS but_listare WITH ; Anchor = 9, ; Left = 636, ; lvizibil = .F., ; Name = "But_listare1", ; TabIndex = 7, ; Top = 1, ; ZOrderSet = 5 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_nou1' AS but_nou WITH ; Anchor = 9, ; Left = 483, ; Name = "But_nou1", ; TabIndex = 2, ; Top = 1 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_reset2' AS but_reset WITH ; Anchor = 9, ; caction = do_reset_filtru, ; Left = 624, ; Name = "But_reset2", ; TabIndex = 9, ; ToolTipText = "Reseteaza filtru", ; Top = 32, ; ZOrderSet = 14 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_salveaza1' AS but_salveaza WITH ; Anchor = 9, ; Height = 27, ; Left = 543, ; Name = "But_salveaza1", ; TabIndex = 4, ; ToolTipText = "Salvare raport", ; Top = 1, ; Width = 30, ; ZOrderSet = 13 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_start_criterii1' AS but_start_criterii WITH ; Anchor = 9, ; lcautare = .F., ; Left = 655, ; Name = "But_start_criterii1", ; TabIndex = 13, ; Top = 32, ; ZOrderSet = 15 *< END OBJECT: ClassLib="ocriterii.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_sterge1' AS but_sterge WITH ; Anchor = 9, ; Left = 574, ; lvizibil = .F., ; Name = "But_sterge1", ; TabIndex = 5, ; ToolTipText = "Stergere raport (CTRL+D)", ; Top = 1, ; ZOrderSet = 10 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'ed_explicatii_filtru' AS _editbox WITH ; Anchor = 13, ; ControlSource = "Thisform.filtru_pretty_ro", ; Height = 364, ; Left = 360, ; Name = "ed_explicatii_filtru", ; ReadOnly = .T., ; TabIndex = 12, ; Top = 63, ; Width = 324, ; ZOrderSet = 12 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="editbox" /> ADD OBJECT 'lb_raport_predefinit' AS _lbbase WITH ; Caption = "RAPORT PREDEFINIT", ; FontBold = .T., ; FontSize = 25, ; Height = 228, ; Left = 12, ; Name = "lb_raport_predefinit", ; Rotation = 35, ; TabIndex = 14, ; Top = 200, ; Visible = .F., ; Width = 300, ; ZOrderSet = 16 *< END OBJECT: ClassLib="_lb_base.vcx" BaseClass="label" /> PROCEDURE creeaza_raport If Used('crsraport') Use In crsraport Endif This.do_cauta() If Used('crsRaport') And Reccount('crsraport')<>0 If Used('crsexport') Use In crsexport ENDIF *!* 23.09.2010 IF TYPE('crsRaport.gid') <> 'U' Dimension aColoane[1] lcSelect = [SELECT Iif(gid<>0,'TOTAL',Space(5)) As explicatie] Afields(aColoane,'crsraport') For i = 1 To Alen(aColoane,1) If Upper(Alltrim(aColoane[i,1])) <> 'GID' lcNumeColoana = Upper(Alltrim(aColoane[i,1])) lcSelect = lcSelect + [,] + Iif(aColoane[i,2] = 'T', [TTOD(] + lcNumeColoana + [) as ] + ; lcNumeColoana, lcNumeColoana) Endif Endfor lcSelect = lcSelect + [ From crsraport Into Cursor crsexport] ELSE lcSelect = [select * From crsraport Into Cursor crsexport] ENDIF *!* 23.09.2010 ^ &lcSelect Endif If Used('crsRaport') Use In crsRaport Endif ENDPROC PROCEDURE do_adauga Thisform.do_reset() ENDPROC PROCEDURE do_adauga_filtru ENDPROC PROCEDURE do_cauta *!* 22.06.2010 *!* marius.mutu *!* apelez do_instructiune_sql cu filtru *!* in do_instructiune_sql - trimit filtrul daca coloana de crostabulare face parte din filtru - sa arat atatea coloane cate valori sunt in filtru *!* 28.04.2011 *!* marius.atanasiu *!* am adaugat gcCondSucursala in filtru, daca nu sunt pe firma mama Local llReturn,lcFiltruSucursala With Thisform.ct_selectie1 *!* 22.06.2010 *!* If .do_instructiune_sql() If .do_instructiune_sql(Thisform.filtru_pretty) *!* 22.06.2010 ^ lcSql = .csql If Empty(lcSql) amessagebox("Nu ati ales coloane pentru selectie!",0+48,"Atentie") .SetFocus() llReturn = .F. Else *!* 28.04.2011 *!* lcSql = Strtran(lcSql,[WHERE 1=2],Iif(!Empty(Thisform.filtru_pretty),[WHERE ] + Thisform.filtru_pretty,[])) If Thisform.nIdformularraport = 2 lcFiltruSucursala = [] Else lcFiltruSucursala = Iif(glEMama,[],gcCondSucursala) Endif lcSql = Strtran(lcSql,[WHERE 1=2],Iif(!Empty(Thisform.filtru_pretty),[WHERE ] + Thisform.filtru_pretty + lcFiltruSucursala,; [] + SUBSTR(lcFiltruSucursala,5))) *!* 28.04.2011 ^ lnSucces = goExecutor.oExecute(lcSql,'crsraport') If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare") llReturn = .F. Endif Endif Else llReturn = .F. Endif Endwith Return llReturn ENDPROC PROCEDURE do_cauta_raport Local loCauta loCauta = caut_raport(This.nidformularraport, this.lDrepturi) If gnButon = 1 Thisform.nidraport = loCauta.id_raport Thisform.do_incarca_raport() Endif Release loCauta ENDPROC PROCEDURE do_excel Local lcFileName lcFileName = "" This.creeaza_raport() If Used('crsExport') lcFileName = strtranx(This.ctitluraport, "([^a-zA-Z0-9])", [_] ) export_xls('crsexport', lcFileName) Use In crsExport Else amessagebox("Nu exista rezultate pentru export in Excel!",0+48,"Atentie") Endif ENDPROC PROCEDURE do_help *!* 23.09.2010 *!* marius.mutu *!* raw sql nIdFormularRaport = 2 Local lofrmhelprap lnIdFormular = this.nIdformularraport IF EMPTY(NVL(m.lnIdFormular,0)) m.lnIdFormular = 1 ENDIF lofrmhelprap = Createobject('frm_help_rapoarte', m.lnIdFormular) lofrmhelprap.Show(1) Release lofrmhelprap ENDPROC PROCEDURE do_incarca_filtru Local lcCursorFiltru IF EMPTY(NVL(Thisform.nidraport,0)) RETURN ENDIF lcCursorFiltru = [crsrapfiltru] If Used(lcCursorFiltru) Use In (lcCursorFiltru) ENDIF lcSql = [select valoare from rapoarte_filtre where id_raport = ] + Alltrim(Str(Thisform.nidraport)) lnSucces = goExecutor.oExecute(lcSql,lcCursorFiltru) If lnSucces < 0 amessagebox(goExecutor.cEroare,16,"Eroare") Else Select (lcCursorFiltru) Thisform.filtru_cript = valoare *!* modificare ROAGEST v 2.0.144 If At(Upper([luna_curenta|]),Upper(Thisform.filtru_cript)) <> 0 Thisform.filtru_cript = STRTRAN(Thisform.filtru_cript,UPPER([luna_curenta|]),Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]) Endif *!* modificare ROAGEST v 2.0.144 ^ Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) Thisform.ed_explicatii_filtru.Refresh() Endif If Used(lcCursorFiltru) Use In (lcCursorFiltru) Endif Release lcCursorFiltru ENDPROC PROCEDURE do_incarca_raport *!* 23.09.2010 *!* marius.mutu *!* tratare idformular = 2 && raw sql Local i, lnCount, lcCamp, loCamp, lcNumeContainer, loContainer, lcListaCampuri, lcListaOrdonare, lcListaGrupare LOCAL lcCrossTabulare, lcListaCampuri2 Local loException As Exception Local lcCursorRaport, lnIdFormular Local lcSql, lnSucces, lcRawSql, lcNumeCamp, lnIndexCamp, lcCampSelectat, lcElement *!* 23.09.2010 lnIdFormular = THIS.nIdformularraport *!* 23.09.2010 ^ If !Empty(Nvl(Thisform.nidraport,0)) lcCursorRaport = [crsdateraport] If Used(lcCursorRaport) Use In (lcCursorRaport) Endif *!* 23.09.2010 lcSql = [select denumire,titlu,nume_frx,modificabil,campuri,grupare,ordonare,crosstabulare, csql from vrapoarte ] + ; [where id_raport = ] + Alltrim(Str(Thisform.nidraport)) *!* 23.09.2010 ^ lnSucces = goExecutor.oExecute(lcSql,lcCursorRaport) If lnSucces < 0 amessagebox(goExecutor.cEroare,16,"Eroare") Else lcNumeContainer = [thisform.] + Thisform.cnume_ct_selectie loContainer = &lcNumeContainer *!* modificare ROAGEST v 2.0.144 Local llAdaugaLunaCurenta llAdaugaLunaCurenta = Thisform.ladaugalunacurenta Thisform.ladaugalunacurenta = .F. *!* modificare ROAGEST v 2.0.144 ^ Thisform.do_reset(.T.) *!* 23.09.2010 Thisform.do_reset_filtru(.T.) *!* 23.09.2010 ^ *!* modificare ROAGEST v 2.0.144 Thisform.ladaugalunacurenta = llAdaugaLunaCurenta *!* modificare ROAGEST v 2.0.144 ^ Select (lcCursorRaport) lcListaCampuri = campuri lcListaOrdonare = ordonare lcListaGrupare = grupare lcCrossTabulare = crosstabulare lcRawSql = csql lcListaCampuri2 = [] Thisform.cdenumire = Upper(Alltrim(denumire)) Thisform.ctitluraport = Upper(Alltrim(titlu)) Thisform.cRaport = nume_frx Thisform.lReadOnly = Iif(modificabil = 1,.F.,.T.) With &lcNumeContainer .Enabled = !Thisform.lReadOnly Endwith Thisform.but_listare1.Visible = Iif(!Empty(Nvl(Thisform.cRaport,[])),.T.,.F.) Thisform.but_listare1.lvizibil = Iif(!Empty(Nvl(Thisform.cRaport,[])),.T.,.F.) Thisform.but_sterge1.Visible = !Thisform.lReadOnly This.lb_titlu_alb_b121.Caption = Upper(Alltrim(Iif(!Empty(Thisform.ctitluraport),Thisform.ctitluraport,Thisform.ctitluraportinitial))) *** NU INCARC NIMIC If m.lnIdFormular = 2 && raw sql loContainer.edtSelectie.value = m.lcRawSql ELSE && Completare campuri selectie predefinite If !Empty(Nvl(lcListaCampuri,[])) lnCount = Getwordcount(lcListaCampuri,",") For i = 1 To lnCount lcNumeCamp = Getwordnum(lcListaCampuri,i, ",") lcCamp = lcNumeContainer + [.ct_selectie_] + lcNumeCamp + [.ck_camp]&& ct_selectie_nnir Try loCamp = &lcCamp loCamp.Value = 1 *!* modificare ROAGEST v 2.0.143 If !Evaluate(lcNumeContainer + [.ct_selectie_] + lcNumeCamp + [.lSuma]) lcListaCampuri2 = lcListaCampuri2 + lcNumeCamp + [,] Endif *!* modificare ROAGEST v 2.0.143 ^ Catch To loException amessagebox(loException.Message) Endtry Endfor Endif && Completare campuri grupare predefinite && modificare ROAGEST v 2.0.143 : am inlocuit lcListaCampuri cu lcListaCampuri2 If !Empty(Nvl(lcListaGrupare,[])) lnCount = Getwordcount(lcListaGrupare,",") For i = 1 To lnCount lnIndexCamp = Val(Getwordnum(lcListaGrupare,i, ",")) lcCampSelectat = lcNumeContainer + [.ct_selectie_] + Getwordnum(lcListaCampuri2,lnIndexCamp, ",") + [.cCamp] lcCamp = &lcCampSelectat lcCamp = Upper(Alltrim(lcNumeContainer + [.ct_grupare1._scrollcontainer1.ct_grup_] + Strtran(lcCamp,[.],[_]))) + [.ck_ordine] Try loCamp = &lcCamp loCamp.Value = 1 Catch To loException amessagebox(loException.Message) Endtry Endfor Endif && Completare campuri ordonare predefinite && modificare ROAGEST v 2.0.143 : am inlocuit lcListaCampuri cu lcListaCampuri2 If !Empty(Nvl(lcListaOrdonare,[])) Local llDesc lnCount = Getwordcount(lcListaOrdonare,",") For i = 1 To lnCount llDesc = .F. lcElement = Getwordnum(lcListaOrdonare,i, ",") If 'DESC'$Upper(lcElement) llDesc = .T. lnIndexCamp = Val(Alltrim(Strtran(Upper(lcElement),[DESC],[]))) Else lnIndexCamp = Val(lcElement) Endif lcCampSelectat = lcNumeContainer + [.ct_selectie_] + Getwordnum(lcListaCampuri2,lnIndexCamp, ",") + [.cCamp] lcCamp = &lcCampSelectat lcCamp = Upper(Alltrim(lcNumeContainer + [.ct_ordonare1._scrollcontainer1.ct_ordine_] + Strtran(lcCamp,[.],[_]))) + [.ck_ordine] Try loCamp = &lcCamp loCamp.Value = 1 Catch To loException amessagebox(loException.Message) Endtry If llDesc lcCamp = &lcCampSelectat lcCamp = Upper(Alltrim(lcNumeContainer + [.ct_ordonare1._scrollcontainer1.ct_ordine_] + Strtran(lcCamp,[.],[_]))) + [.opt_ordine] Try loCamp = &lcCamp loCamp.Value = 2 Catch To loException amessagebox(loException.Message) Endtry Endif Endfor Endif && Completare campuri crosstabulare predefinite If !Empty(Nvl(lcCrossTabulare,[])) lnCount = Getwordcount(lcCrossTabulare,",") For i = 1 To lnCount lcCamp = Getwordnum(lcCrossTabulare,i, ",") lcCamp = lcNumeContainer + [.ct_selectie_] + lcCamp + [.ck_camp] && ct_selectie_nnir Try loCamp = &lcCamp loCamp.RightClick() Catch To loException amessagebox(loException.Message) Endtry Endfor Endif Endif && lnIdFormular = 2 && Incarcare filtru Thisform.do_incarca_filtru() Thisform.Refresh() Endif If Used(lcCursorRaport) Use In (lcCursorRaport) Endif Endif ENDPROC PROCEDURE do_listare Local lcQuickReport Local loListener Private pcDataOra, pcTitlu, pcSubtitlu This.creeaza_raport() If Used('crsExport') lcQuickReport = This.cRaport If !Empty(lcQuickReport) pcDataOra = get_ora(2) pcTitlu = Thisform.ctitluraport pcSubtitlu = Thisform.filtru_pretty_ro Thisform.AlwaysOnTop = .F. Select crsExport Report Form (lcQuickReport) To Printer Prompt Preview Thisform.AlwaysOnTop = .T. Endif Use In crsExport Else amessagebox("Nu exista rezultate pentru listare!",0+48,"Atentie") Endif ENDPROC PROCEDURE do_modificabil Thisform.lb_raport_predefinit.Visible = Thisform.lReadOnly If Type('thisform.but_sterge1')='O' Thisform.but_sterge1.Visible = Iif(Isnull(Thisform.nidraport),.F.,Thisform.lReadOnly) Thisform.but_sterge1.lvizibil = Iif(Isnull(Thisform.nidraport),.F.,Thisform.lReadOnly) Endif ENDPROC PROCEDURE do_reset Lparameters tlIncomplet *!* .T. - este apelat din do_incarca_raport si nu trebuie sa reseteze nidraport pentru ca a fost setat din cautare *!* .F. - se reseteaza nidraport Local lcNumeContainer lcNumeContainer = [thisform.] + Thisform.cnume_ct_selectie Thisform.lReadOnly = .F. With &lcNumeContainer .Enabled = !Thisform.lReadOnly .do_reset() Endwith Thisform.do_reset_filtru() Thisform.ctitluraport = Thisform.ctitluraportinitial Thisform.cRaport = Thisform.cRaportinitial Thisform.cdenumire = Thisform.ctitluraportinitial If !tlIncomplet Thisform.nidraport = Thisform.nidraportinitial Endif This.but_listare1.Visible = .F. This.but_listare1.lvizibil = .F. This.lb_titlu_alb_b121.Caption = Upper(Alltrim(Thisform.ctitluraportinitial)) If Isnull(Thisform.nidraport) Thisform.but_sterge1.Visible = .F. Endif ENDPROC PROCEDURE do_reset_filtru LPARAMETERS tlInitial Thisform.filtru_pretty = "" Thisform.filtru_pretty_ro = "" Thisform.filtru_pretty_ro_full = "" Thisform.filtru_cript = "" If Type("this.but_start_criterii1") = 'O' Thisform.but_start_criterii1.ToolTipText=Thisform.filtru_pretty_ro Thisform.but_start_criterii1.SetFocus Thisform.but_start_criterii1.pornit = "nu" Endif *!* If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta And ; *!* At([Perioada;]+Alltrim(Thisform.cfiltruperioada)+[;],Thisform.filtru_cript) = 0 *!* Thisform.filtru_cript = Thisform.filtru_cript + [Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; *!* Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|] *!* Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) *!* Endif lnIdFormular = This.nIdFormularRaport *!* 23.09.2010 If m.lnIdFormular = 2 && raw sql IF !tlInitial && do_incarca_raport() apeleaza si do_reset_filtru() si do_incarca_filtru() si nu mai trebuie sa apelez din nou This.do_incarca_filtru() ENDIF Else If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta Thisform.filtru_cript = [Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|] Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) Endif Endif *!* 23.09.2010 ^ Thisform.ed_explicatii_filtru.Refresh() ENDPROC PROCEDURE do_salvare *!* 23.09.2010 *!* marius.mutu *!* tratare idformular = 2 && raw sql *!* 12.10.2015 *!* marius.mutu *!* se salveaza si csql_parametri la adaugarea raportului (pentru raport nou din raport existent) Private pcDenumireRaport, pcTitluRaport, pnIdRaport, pnIdRaportNou, pcSql, pcSqlParametri Local lofrmraportnou,llArataFereastra, lcCampuri, lnIdFormular, lcIdFormular, lcGrupare, lcOrdonare, lcCrossTabulare Local lcNumeContainer, loContainerSelectie, lcMenu, lnx, lcRaport, lcModificabil Local lcValoriFiltru, lcSql, lnSucces pcSql = "" lcCampuri = "" lcGrupare = "" lcOrdonare = "" lcCrossTabulare = "" pcSqlParametri = "" lnIdFormular = THIS.nIdformularraport lcIdFormular = Alltrim(Str(m.lnIdFormular)) && id_formular_raport pcDenumireRaport = Thisform.cdenumire && denumire pcTitluRaport = Iif(Empty(Thisform.ctitluraport),Thisform.ctitluraportinitial,Thisform.ctitluraport) && titlu pnIdRaport = Iif(Thisform.lReadOnly,.Null.,Thisform.nidraport) && raport && daca raportul e predefinit ( nu e modificabil ) atunci pot doar sa-l salvez ca unul nou pnIdRaportNou = 0 llArataFereastra = .F. lcNumeContainer = [thisform.] + Thisform.cnume_ct_selectie loContainerSelectie = &lcNumeContainer *!* 23.09.2010 IF m.lnIdFormular <> 2 lcCampuri = loContainerSelectie.get_coloane_selectie() If Empty(m.lcCampuri) amessagebox("Nu ati selectat niciun camp!",48,"Atentie") Return Endif ELSE pcSql = ALLTRIM(loContainerSelectie.edtSelectie.value) ENDIF *!* 23.09.2010 ^ If !Isnull(m.pnIdRaport) lcMenu = "Salveaza modificari;Salveaza modificari si schimba denumire/titlu;Salveaza ca raport nou" lnx = xmenu(m.lcMenu) Do Case Case lnx = 1 llArataFereastra = .F. Case lnx = 2 llArataFereastra = .T. Case lnx = 3 llArataFereastra = .T. pnIdRaport = Null pcSqlParametri = "" lnSucces = goExecutor.oSelect2Value([select csql_parametri from rapoarte where id_raport = ?pnIdRaport], @pcSqlParametri) If lnSucces < 0 amessagebox(goExecutor.cEroare,16,"Eroare") Endif Otherwise Return Endcase Else llArataFereastra = .T. Endif If llArataFereastra lofrmraportnou = Createobject('frm_raport_nou') lofrmraportnou.Show(1) Else gnButon = 1 Endif If gnButon = 1 lcRaport = Iif(Thisform.lReadOnly,Thisform.cRaportInitial,Thisform.cRaport) && nume_frx *!* lcModificabil = Iif(Thisform.lReadOnly,[0],[1]) && modificabil lcModificabil = [1] IF m.lnIdFormular <> 2 lcGrupare = Nvl(loContainerSelectie.get_coloane_grupare(),[NULL]) lcOrdonare = Nvl(loContainerSelectie.get_coloane_ordonare(),[NULL]) lcCrossTabulare = Nvl(loContainerSelectie.get_coloane_crosstabulare(),[NULL]) ENDIF *!* modificare ROAGEST v 2.0.144 *!* If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta And ; *!* At(Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; *!* Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),Upper(Thisform.filtru_cript)) <> 0 *!* Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; *!* Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),[luna_curenta|]) *!* Endif If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta And ; OccursRegExp(Upper("Perioada;" + Alltrim(Thisform.cfiltruperioada) + ";/[1-6]/;;" + ; Padl(Alltrim(Str(gnLuna)),2,[0]) + "/" + Alltrim(Str(gnAn)) + "|"),UPPER(Thisform.filtru_cript)) > 0 Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;luna_curenta|])) Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;2;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;2;;luna_curenta|])) Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;3;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;3;;luna_curenta|])) Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;4;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;4;;luna_curenta|])) Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;5;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;5;;luna_curenta|])) Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;6;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;6;;luna_curenta|])) Endif *!* modificare ROAGEST v 2.0.144 ^ lcValoriFiltru = Nvl(thisform.filtru_cript,[NULL]) lcSql = [{call pack_rapoarte.salveaza_raport(?pnIdRaport,?@pnIdRaportNou,] + ; ['] + Alltrim(pcDenumireRaport) + [','] + Alltrim(pcTitluRaport) + [',] + ; ['] + Alltrim(Nvl(lcRaport,[])) + [',] + Alltrim(lcModificabil) + [,] + ; ['] + Alltrim(lcCampuri) + [','] + Alltrim(lcGrupare) + [',] + ; ['] + Alltrim(lcOrdonare) + [','] + Alltrim(lcCrossTabulare) + [',] + ; lcIdFormular + [,'] + lcValoriFiltru + [',] + ; [?gnIdUtil, ?pcSql, ?pcSqlParametri)}] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox("Salvarea nu a reusit!" + Chr(13) + Chr(10) + Chr(13) + Chr(10) + ; goExecutor.cEroare,16,"Eroare") Else amessagebox("Raportul a fost salvat in baza de date!",64,"Info salvare raport") Thisform.nidraport = pnIdRaportNou Thisform.cdenumire = pcDenumireRaport Thisform.ctitluraport = pcTitluRaport Thisform.cRaport = lcRaport Thisform.lReadOnly = .F. loContainerSelectie.Enabled = !Thisform.lReadOnly Thisform.but_sterge1.Visible = !Thisform.lReadOnly Thisform.but_listare1.Visible = Iif(!Empty(Thisform.cRaport),.T.,.F.) Thisform.but_listare1.lvizibil = Iif(!Empty(Thisform.cRaport),.T.,.F.) Endif Endif Release pcDenumireRaport, pcTitluRaport, lofrmraportnou, pnIdRaport, pnIdRaportNou ENDPROC PROCEDURE do_sterge If amessagebox("Doriti sa stergeti raportul '"+Upper(Alltrim(Thisform.cdenumire)) + "' din baza de date?",4+32,"Confirmare stergere") = 6 lcSql = [begin pack_rapoarte.sterge_raport(] + Alltrim(Str(Thisform.nidraport)) + [,] + ; [?gnIdUtil); end;] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.cEroare,16,"Eroare") Else amessagebox("Raportul a fost sters!",64,"Info stergere") Thisform.nidraport = .Null. Endif Endif ENDPROC PROCEDURE Init Lparameters tnIdRaport, tlDrepturi *!* tnIdRaport: 1 = Rapoarte rulaj; 2 = Rapoarte SQL *!* tlDrepturi: .T. = Se afiseaza doar rapoartele pe care are drepturi utilizatorul If Isnull(Thisform.nidformularraport) Thisform.RemoveObject('ct_clb_raport') Thisform.RemoveObject('but_salveaza1') Thisform.RemoveObject('but_modiparam1') If Isnull(Thisform.nidraport) Thisform.RemoveObject('but_sterge1') Endif Endif For i = 1 To Thisform.Objects.Count If Upper(Alltrim(Thisform.Objects[i].Class)) = [CT_SELECTIE] Thisform.cnume_ct_selectie = Thisform.Objects[i].Name Exit Endif Endfor This.lb_titlu_alb_b121.Caption = Upper(Alltrim(Thisform.ctitluraportinitial)) Thisform.ctitluraport = Thisform.ctitluraportinitial Thisform.cRaport = Thisform.cRaportinitial Thisform.nidraport = Thisform.nidraportinitial *!* 07.03.2011 IF PCOUNT() = 2 Thisform.lDrepturi = tlDrepturi ENDIF *!* 07.03.2011 ^ *!* *!* If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta And ; *!* *!* At([Perioada;]+Alltrim(Thisform.cfiltruperioada)+[;],Thisform.filtru_cript) = 0 *!* *!* Thisform.filtru_cript = Thisform.filtru_cript + [Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; *!* *!* Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|] *!* *!* Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) *!* *!* Endif *!* modificare ROAGEST v 2.0.144 *!* If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta *!* Thisform.filtru_cript = [Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; *!* Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|] *!* Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) *!* Endif *!* modificare ROAGEST v 2.0.144 ^ Bindevent(Thisform,"lReadOnly",Thisform,"do_modificabil",1) DoDefault() If !Empty(tnIdRaport) Thisform.nidraport = tnIdRaport Thisform.do_incarca_raport() *!* modificare ROAGEST v 2.0.144 Else If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta Thisform.filtru_cript = [Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|] Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) Endif *!* modificare ROAGEST v 2.0.144 ^ Endif ENDPROC PROCEDURE But_start_criterii1.initform Lparameters tlShowForm DoDefault(tlShowForm) Thisform.ed_explicatii_filtru.Refresh() This.SetFocus() ENDPROC PROCEDURE But_start_criterii1.loadcriterii *!* 23.09.2010 *!* marius.mutu *!* tratare idformular = 2 && raw sql #Define CRLF Chr(13)+Chr(10) Local lnIdFormular, lnIdRaport *!* 23.09.2010 lnIdFormular = Thisform.nIdformularraport lnIdRaport = Thisform.nIdRaport If m.lnIdFormular = 2 && raw sql *** obtin cursorul cu criterii Do criterii_rapoarte_sql With lnIdRaport In orapoarte_dinamice.prg *!* crsParametriXML(parametru C(250), titlu C(100), CAMP M, TIPCAMP C(10), CAMPID C(100), CAMPCAUTARE C(100) ) If Used('crsParametriXML') Select crsParametriXML Scan lcTitlu = Alltrim(titlu) lcCamp = Iif(Empty(Alltrim(camp)), "none", Alltrim(camp)) lcTipCamp = Iif(Empty(Alltrim(tipcamp)), "C", Alltrim(tipcamp)) lcCampId = Iif(Empty(Alltrim(campid)), "none", Alltrim(campid)) lcCampCautare = Iif(Empty(Alltrim(campcautare)), "none", Alltrim(campcautare)) lcStringCriterii = lcStringCriterii + CRLF + ; lcTitlu + "\" + lcCamp + "\" + lcTipCamp + "\" + lcCampId + "\" + lcCampCautare + "\" Endscan Endif && used Use In (Select('crsParametriXML')) Else If Thisform.lfiltruperioada lcStringCriterii = lcStringCriterii + CRLF + ; "Perioada\" + Alltrim(Thisform.cfiltruperioada) + "\D1\none\" Endif lcStringCriterii = lcStringCriterii + IIF(glEMama,crlf + "Sucursala\sucursala\T\ID_SUCURSALA\nom_sucursala", "") && aleg sucursale doar daca sunt pe mama : 28.04.2011 Endif && lnIdFormular *!* 23.09.2010 ^ DoDefault() ENDPROC PROCEDURE lb_raport_predefinit.Init lcNumeContainer = [thisform.] + Thisform.cnume_ct_selectie loContainer = &lcNumeContainer This.Top = loContainer.Top + Round((loContainer.Height-This.Height)/2,0) This.Left = loContainer.Left + Round((loContainer.Width-This.Width)/2,0) ENDPROC ENDDEFINE DEFINE CLASS frm_date_rapoarte_gen_original AS _frmbase OF "_frm_base.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="But_listare1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_excel1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_help1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_cautare1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_sterge1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ct_selectie1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="ed_explicatii_filtru" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_salveaza1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_reset2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_start_criterii1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="But_nou1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="lb_raport_predefinit" UniqueID="" Timestamp="" /> * *m: creeaza_raport *m: do_adauga_filtru *m: do_cauta_raport *m: do_incarca_filtru *m: do_incarca_raport *m: do_modificabil *m: do_reset_filtru *m: do_salvare *p: cdenumire && Denumirea raportului. *p: cfiltruperioada && Campurile / campul dupa care se filtreaza perioada ( trebuie sa fie de forma an * 12 + luna ). *p: cnume_ct_selectie && Numele containerului bazat pe ct_selectie. *p: craport && Numele raportului pentru listare *p: craportinitial && Numele raportului folosit pentru listare. *p: ctitluraport *p: ctitluraportinitial && Titlul initial al raportului. *p: filtru_cript *p: ladaugalunacurenta && IN CAZUL IN CARE EXISTA PERIOADA IN FILTRU : .T. - daca adauga luna curenta in filtru la incarcarea unui raport ( daca nu exista deja o perioada salvata in filtru ), la resetare si la raport nou. *p: lfiltruperioada && .T. - este adaugat filtrul pe perioada; campul este specificat in cFiltruPerioada *p: lreadonly && Daca campurile de selectie, ordonare, grupare sunt blocate (pentru selectii predefinite) *p: nidformularraport && Id-ul formularului. *p: nidraport && Id-ul raportului incarcat. *p: nidraportinitial * * cdenumire = cfiltruperioada = an*12+luna cnume_ct_selectie = ct_selectie1 craport = craportinitial = ctitluraport = ctitluraportinitial = Rapoarte generate dinamic DoCreate = .T. filtru_cript = Height = 440 lactiv4 = .T. ladaugalunacurenta = .T. lfiltruperioada = .T. lreadonly = .F. Name = "frm_date_rapoarte_gen" nidformularraport = .NULL. nidraport = .NULL. nidraportinitial = .NULL. Width = 696 _memberdata = _shape1.Height = 29 _shape1.Left = 0 _shape1.Name = "_shape1" _shape1.Top = 0 _shape1.Width = 696 _shape1.ZOrderSet = 0 _shape2.Height = 29 _shape2.Left = 455 _shape2.Name = "_shape2" _shape2.Top = 0 _shape2.Width = 240 _shape2.ZOrderSet = 1 Lb_titlu_alb_b121.Caption = "Thisform.ctitluraportinitial" Lb_titlu_alb_b121.FontBold = .T. Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" Lb_titlu_alb_b121.TabIndex = 10 Lb_titlu_alb_b121.ZOrderSet = 2 BUT_TERMIN1.Left = 666 BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.TabIndex = 8 BUT_TERMIN1.Top = 1 BUT_TERMIN1.ZOrderSet = 4 GRIDSORT1.Left = 480 GRIDSORT1.Name = "GRIDSORT1" GRIDSORT1.Top = 36 * ADD OBJECT 'But_cautare1' AS but_cautare WITH ; caction = do_cauta_raport, ; Height = 27, ; Left = 513, ; Name = "But_cautare1", ; TabIndex = 3, ; Top = 1, ; Width = 30 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_excel1' AS but_excel WITH ; Left = 605, ; Name = "But_excel1", ; TabIndex = 6, ; Top = 1, ; ZOrderSet = 6 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_help1' AS but_help WITH ; Left = 454, ; Name = "But_help1", ; TabIndex = 1, ; Top = 1, ; ZOrderSet = 7 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_listare1' AS but_listare WITH ; Left = 636, ; lvizibil = .F., ; Name = "But_listare1", ; TabIndex = 7, ; Top = 1, ; ZOrderSet = 5 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_nou1' AS but_nou WITH ; Left = 483, ; Name = "But_nou1", ; TabIndex = 2, ; Top = 1 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_reset2' AS but_reset WITH ; caction = do_reset_filtru, ; Left = 624, ; Name = "But_reset2", ; TabIndex = 9, ; ToolTipText = "Reseteaza filtru", ; Top = 32, ; ZOrderSet = 14 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_salveaza1' AS but_salveaza WITH ; Height = 27, ; Left = 543, ; Name = "But_salveaza1", ; TabIndex = 4, ; ToolTipText = "Salvare raport", ; Top = 1, ; Width = 30, ; ZOrderSet = 13 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_start_criterii1' AS but_start_criterii WITH ; Anchor = 9, ; lcautare = .F., ; Left = 655, ; Name = "But_start_criterii1", ; TabIndex = 13, ; Top = 32, ; ZOrderSet = 15 *< END OBJECT: ClassLib="ocriterii.vcx" BaseClass="commandbutton" /> ADD OBJECT 'But_sterge1' AS but_sterge WITH ; Left = 574, ; lvizibil = .F., ; Name = "But_sterge1", ; TabIndex = 5, ; ToolTipText = "Stergere raport (CTRL+D)", ; Top = 1, ; ZOrderSet = 10 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'Ct_selectie1' AS ct_selectie WITH ; Height = 391, ; Left = 12, ; Name = "Ct_selectie1", ; TabIndex = 11, ; Top = 36, ; Width = 332, ; ZOrderSet = 11, ; Ct_grupare1.lblAtentie.Name = "lblAtentie", ; Ct_grupare1.lb_grupare.Name = "lb_grupare", ; Ct_grupare1.Left = 5, ; Ct_grupare1.Name = "Ct_grupare1", ; Ct_grupare1.Top = 252, ; Ct_grupare1._scrollcontainer1.But_jos1.Name = "But_jos1", ; Ct_grupare1._scrollcontainer1.But_sus1.Name = "But_sus1", ; Ct_grupare1._scrollcontainer1.Name = "_scrollcontainer1", ; Ct_ordonare1.lb_ordonare.Name = "lb_ordonare", ; Ct_ordonare1.Left = 5, ; Ct_ordonare1.Name = "Ct_ordonare1", ; Ct_ordonare1.Top = 120, ; Ct_ordonare1._scrollcontainer1.But_jos1.Name = "But_jos1", ; Ct_ordonare1._scrollcontainer1.But_sus1.Name = "But_sus1", ; Ct_ordonare1._scrollcontainer1.Name = "_scrollcontainer1", ; lb_coloane.Name = "lb_coloane" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> ADD OBJECT 'ed_explicatii_filtru' AS _editbox WITH ; ControlSource = "Thisform.filtru_pretty_ro", ; Height = 364, ; Left = 360, ; Name = "ed_explicatii_filtru", ; ReadOnly = .T., ; TabIndex = 12, ; Top = 63, ; Width = 324, ; ZOrderSet = 12 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="editbox" /> ADD OBJECT 'lb_raport_predefinit' AS _lbbase WITH ; Caption = "RAPORT PREDEFINIT", ; FontBold = .T., ; FontSize = 25, ; Height = 228, ; Left = 12, ; Name = "lb_raport_predefinit", ; Rotation = 35, ; TabIndex = 14, ; Top = 200, ; Visible = .F., ; Width = 300, ; ZOrderSet = 16 *< END OBJECT: ClassLib="_lb_base.vcx" BaseClass="label" /> PROCEDURE creeaza_raport If Used('crsraport') Use In crsraport Endif This.do_cauta() If Used('crsRaport') And Reccount('crsraport')<>0 If Used('crsexport') Use In crsexport Endif Dimension aColoane[1] lcSelect = [SELECT Iif(gid<>0,'TOTAL',Space(5)) As explicatie] Afields(aColoane,'crsraport') For i = 1 To Alen(aColoane,1) If Upper(Alltrim(aColoane[i,1])) <> 'GID' lcNumeColoana = Upper(Alltrim(aColoane[i,1])) lcSelect = lcSelect + [,] + Iif(aColoane[i,2] = 'T', [TTOD(] + lcNumeColoana + [) as ] + ; lcNumeColoana, lcNumeColoana) Endif Endfor lcSelect = lcSelect + [ From crsraport Into Cursor crsexport] &lcSelect Endif If Used('crsRaport') Use In crsRaport Endif ENDPROC PROCEDURE do_adauga Thisform.do_reset() ENDPROC PROCEDURE do_adauga_filtru ENDPROC PROCEDURE do_cauta *!* 22.06.2010 *!* marius.mutu *!* apelez do_instructiune_sql cu filtru *!* in do_instructiune_sql - trimit filtrul daca coloana de crostabulare face parte din filtru - sa arat atatea coloane cate valori sunt in filtru Local llReturn With Thisform.ct_selectie1 *!* 22.06.2010 *!* If .do_instructiune_sql() If .do_instructiune_sql(Thisform.filtru_pretty) *!* 22.06.2010 ^ lcSql = .csql If Empty(lcSql) amessagebox("Nu ati ales coloane pentru selectie!",0+48,"Atentie") .SetFocus() llReturn = .F. Else lcSql = Strtran(lcSql,[WHERE 1=2],Iif(!Empty(Thisform.filtru_pretty),[WHERE ] + Thisform.filtru_pretty,[])) lnSucces = goExecutor.oExecute(lcSql,'crsraport') If lnSucces < 0 amessagebox(goExecutor.oPrelucrareEroare(),16,"Eroare") llReturn = .F. Endif Endif Else llReturn = .F. Endif Endwith Return llReturn ENDPROC PROCEDURE do_cauta_raport Local loCauta loCauta = caut_raport(This.nidformularraport) If gnButon = 1 Thisform.nidraport = loCauta.id_raport Thisform.do_incarca_raport() Endif Release loCauta ENDPROC PROCEDURE do_excel Local lcFileName lcFileName = "" This.creeaza_raport() If Used('crsExport') lcFileName = strtranx(This.ctitluraport, "([^a-zA-Z0-9])", [_] ) export_xls('crsexport', lcFileName) Use In crsExport Else amessagebox("Nu exista rezultate pentru export in Excel!",0+48,"Atentie") Endif ENDPROC PROCEDURE do_help Local lofrmhelprap lofrmhelprap = Createobject('frm_help_rapoarte') lofrmhelprap.Show(1) Release lofrmhelprap ENDPROC PROCEDURE do_incarca_filtru Local lcCursorFiltru lcCursorFiltru = [crsrapfiltru] If Used(lcCursorFiltru) Use In (lcCursorFiltru) Endif lcSql = [select valoare from rapoarte_filtre where id_raport = ] + Alltrim(Str(Thisform.nidraport)) lnSucces = goExecutor.oExecute(lcSql,lcCursorFiltru) If lnSucces < 0 amessagebox(goExecutor.cEroare,16,"Eroare") Else Select (lcCursorFiltru) Thisform.filtru_cript = valoare *!* modificare ROAGEST v 2.0.144 If At(Upper([luna_curenta|]),Upper(Thisform.filtru_cript)) <> 0 Thisform.filtru_cript = STRTRAN(Thisform.filtru_cript,UPPER([luna_curenta|]),Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]) Endif *!* modificare ROAGEST v 2.0.144 ^ Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) Thisform.ed_explicatii_filtru.Refresh() Endif If Used(lcCursorFiltru) Use In (lcCursorFiltru) Endif Release lcCursorFiltru ENDPROC PROCEDURE do_incarca_raport Local lcCursorRaport If !Empty(Nvl(Thisform.nidraport,0)) lcCursorRaport = [crsdateraport] If Used(lcCursorRaport) Use In (lcCursorRaport) Endif lcSql = [select denumire,titlu,nume_frx,modificabil,campuri,grupare,ordonare,crosstabulare from vrapoarte ] + ; [where id_raport = ] + Alltrim(Str(Thisform.nidraport)) lnSucces = goExecutor.oExecute(lcSql,lcCursorRaport) If lnSucces < 0 amessagebox(goExecutor.cEroare,16,"Eroare") Else Local i, lnCount, lcCamp, loCamp, lnSelected, lcNumeContainer, lcListaCampuri, lcListaOrdonare, lcListaGrupare, ; lcCrossTabulare, lcListaCampuri2 Local loException As Exception lcNumeContainer = [thisform.] + Thisform.cnume_ct_selectie *!* modificare ROAGEST v 2.0.144 LOCAL llAdaugaLunaCurenta llAdaugaLunaCurenta = Thisform.ladaugalunacurenta Thisform.ladaugalunacurenta = .F. *!* modificare ROAGEST v 2.0.144 ^ Thisform.do_reset(.T.) Thisform.do_reset_filtru() *!* modificare ROAGEST v 2.0.144 Thisform.ladaugalunacurenta = llAdaugaLunaCurenta *!* modificare ROAGEST v 2.0.144 ^ Select (lcCursorRaport) lcListaCampuri = campuri lcListaOrdonare = ordonare lcListaGrupare = grupare lcCrossTabulare = crosstabulare lcListaCampuri2 = [] Thisform.cdenumire = Upper(Alltrim(denumire)) Thisform.ctitluraport = Upper(Alltrim(titlu)) Thisform.cRaport = nume_frx Thisform.lReadOnly = Iif(modificabil = 1,.F.,.T.) With &lcNumeContainer .Enabled = !Thisform.lReadOnly Endwith Thisform.but_listare1.Visible = Iif(!Empty(Nvl(Thisform.cRaport,[])),.T.,.F.) Thisform.but_listare1.lvizibil = Iif(!Empty(Nvl(Thisform.cRaport,[])),.T.,.F.) Thisform.but_sterge1.Visible = !Thisform.lReadOnly This.lb_titlu_alb_b121.Caption = Upper(Alltrim(Iif(!Empty(Thisform.ctitluraport),Thisform.ctitluraport,Thisform.ctitluraportinitial))) && Completare campuri selectie predefinite If !Empty(Nvl(lcListaCampuri,[])) lnCount = Getwordcount(lcListaCampuri,",") For i = 1 To lnCount lcNumeCamp = Getwordnum(lcListaCampuri,i, ",") lcCamp = lcNumeContainer + [.ct_selectie_] + lcNumeCamp + [.ck_camp]&& ct_selectie_nnir Try loCamp = &lcCamp loCamp.Value = 1 *!* modificare ROAGEST v 2.0.143 If !EVALUATE(lcNumeContainer + [.ct_selectie_] + lcNumeCamp + [.lSuma]) lcListaCampuri2 = lcListaCampuri2 + lcNumeCamp + [,] Endif *!* modificare ROAGEST v 2.0.143 ^ Catch To loException amessagebox(loException.Message) Endtry Endfor Endif && Completare campuri grupare predefinite && modificare ROAGEST v 2.0.143 : am inlocuit lcListaCampuri cu lcListaCampuri2 If !Empty(Nvl(lcListaGrupare,[])) lnCount = Getwordcount(lcListaGrupare,",") For i = 1 To lnCount lnIndexCamp = Val(Getwordnum(lcListaGrupare,i, ",")) lcCampSelectat = lcNumeContainer + [.ct_selectie_] + Getwordnum(lcListaCampuri2,lnIndexCamp, ",") + [.cCamp] lcCamp = &lcCampSelectat lcCamp = Upper(Alltrim(lcNumeContainer + [.ct_grupare1._scrollcontainer1.ct_grup_] + Strtran(lcCamp,[.],[_]))) + [.ck_ordine] Try loCamp = &lcCamp loCamp.Value = 1 Catch To loException amessagebox(loException.Message) Endtry Endfor Endif && Completare campuri ordonare predefinite && modificare ROAGEST v 2.0.143 : am inlocuit lcListaCampuri cu lcListaCampuri2 If !Empty(Nvl(lcListaOrdonare,[])) Local llDesc lnCount = Getwordcount(lcListaOrdonare,",") For i = 1 To lnCount llDesc = .F. lcElement = Getwordnum(lcListaOrdonare,i, ",") If 'DESC'$Upper(lcElement) llDesc = .T. lnIndexCamp = Val(Alltrim(Strtran(Upper(lcElement),[DESC],[]))) Else lnIndexCamp = Val(lcElement) Endif lcCampSelectat = lcNumeContainer + [.ct_selectie_] + Getwordnum(lcListaCampuri2,lnIndexCamp, ",") + [.cCamp] lcCamp = &lcCampSelectat lcCamp = Upper(Alltrim(lcNumeContainer + [.ct_ordonare1._scrollcontainer1.ct_ordine_] + Strtran(lcCamp,[.],[_]))) + [.ck_ordine] Try loCamp = &lcCamp loCamp.Value = 1 Catch To loException amessagebox(loException.Message) Endtry If llDesc lcCamp = &lcCampSelectat lcCamp = Upper(Alltrim(lcNumeContainer + [.ct_ordonare1._scrollcontainer1.ct_ordine_] + Strtran(lcCamp,[.],[_]))) + [.opt_ordine] Try loCamp = &lcCamp loCamp.Value = 2 Catch To loException amessagebox(loException.Message) Endtry Endif Endfor Endif && Completare campuri crosstabulare predefinite If !Empty(Nvl(lcCrossTabulare,[])) lnCount = Getwordcount(lcCrossTabulare,",") For i = 1 To lnCount lcCamp = Getwordnum(lcCrossTabulare,i, ",") lcCamp = lcNumeContainer + [.ct_selectie_] + lcCamp + [.ck_camp] && ct_selectie_nnir Try loCamp = &lcCamp loCamp.RightClick() Catch To loException amessagebox(loException.Message) Endtry Endfor EndIf && Incarcare filtru Thisform.do_incarca_filtru() thisform.Refresh() Endif If Used(lcCursorRaport) Use In (lcCursorRaport) Endif Endif ENDPROC PROCEDURE do_listare Local lcQuickReport Local loListener Private pcDataOra, pcTitlu, pcSubtitlu This.creeaza_raport() If Used('crsExport') lcQuickReport = This.cRaport If !Empty(lcQuickReport) pcDataOra = get_ora(2) pcTitlu = Thisform.ctitluraport pcSubtitlu = Thisform.filtru_pretty_ro Thisform.AlwaysOnTop = .F. Select crsExport Report Form (lcQuickReport) To Printer Prompt Preview Thisform.AlwaysOnTop = .T. Endif Use In crsExport Else amessagebox("Nu exista rezultate pentru listare!",0+48,"Atentie") Endif ENDPROC PROCEDURE do_modificabil Thisform.lb_raport_predefinit.Visible = Thisform.lReadOnly If Type('thisform.but_sterge1')='O' Thisform.but_sterge1.Visible = Iif(Isnull(Thisform.nidraport),.F.,Thisform.lReadOnly) Thisform.but_sterge1.lvizibil = Iif(Isnull(Thisform.nidraport),.F.,Thisform.lReadOnly) Endif ENDPROC PROCEDURE do_reset Lparameters tlIncomplet *!* .T. - este apelat din do_incarca_raport si nu trebuie sa reseteze nidraport pentru ca a fost setat din cautare *!* .F. - se reseteaza nidraport Local lcNumeContainer lcNumeContainer = [thisform.] + Thisform.cnume_ct_selectie Thisform.lReadOnly = .F. With &lcNumeContainer .Enabled = !Thisform.lReadOnly .do_reset() EndWith thisform.do_reset_filtru() Thisform.ctitluraport = Thisform.ctitluraportinitial Thisform.cRaport = Thisform.cRaportinitial Thisform.cdenumire = Thisform.ctitluraportinitial If !tlIncomplet Thisform.nidraport = Thisform.nidraportinitial Endif This.but_listare1.Visible = .F. This.but_listare1.lvizibil = .F. This.lb_titlu_alb_b121.Caption = Upper(Alltrim(Thisform.ctitluraportinitial)) If Isnull(Thisform.nidraport) Thisform.but_sterge1.Visible = .F. Endif ENDPROC PROCEDURE do_reset_filtru Thisform.filtru_pretty = "" Thisform.filtru_pretty_ro = "" Thisform.filtru_pretty_ro_full = "" Thisform.filtru_cript = "" If Type("this.but_start_criterii1") = 'O' Thisform.but_start_criterii1.ToolTipText=Thisform.filtru_pretty_ro Thisform.but_start_criterii1.SetFocus Thisform.but_start_criterii1.pornit = "nu" Endif *!* If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta And ; *!* At([Perioada;]+Alltrim(Thisform.cfiltruperioada)+[;],Thisform.filtru_cript) = 0 *!* Thisform.filtru_cript = Thisform.filtru_cript + [Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; *!* Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|] *!* Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) *!* Endif If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta Thisform.filtru_cript = [Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|] Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) Endif Thisform.ed_explicatii_filtru.Refresh() ENDPROC PROCEDURE do_salvare Private pcDenumireRaport, pcTitluRaport, pnIdRaport, pnIdRaportNou Local lofrmraportnou,llArataFereastra pcDenumireRaport = Thisform.cdenumire && denumire pcTitluRaport = Iif(Empty(Thisform.ctitluraport),Thisform.ctitluraportinitial,Thisform.ctitluraport) && titlu pnIdRaport = Iif(Thisform.lReadOnly,.Null.,Thisform.nidraport) && raport && daca raportul e predefinit ( nu e modificabil ) atunci pot doar sa-l salvez ca unul nou pnIdRaportNou = 0 llArataFereastra = .F. lcNumeContainer = [thisform.] + Thisform.cnume_ct_selectie loContainerSelectie = &lcNumeContainer lcCampuri = loContainerSelectie.get_coloane_selectie() If Empty(lcCampuri) amessagebox("Nu ati selectat niciun camp!",48,"Atentie") Return Endif If !Isnull(pnIdRaport) lcMenu = "Salveaza modificari;Salveaza modificari si schimba denumire/titlu;Salveaza ca raport nou" lnx = xmenu(lcMenu) Do Case Case lnx = 1 llArataFereastra = .F. Case lnx = 2 llArataFereastra = .T. Case lnx = 3 llArataFereastra = .T. pnIdRaport = Null Otherwise Return Endcase Else llArataFereastra = .T. Endif If llArataFereastra lofrmraportnou = Createobject('frm_raport_nou') lofrmraportnou.Show(1) Else gnButon = 1 Endif If gnButon = 1 lcRaport = Iif(Thisform.lReadOnly,Thisform.cRaportInitial,Thisform.cRaport) && nume_frx *!* lcModificabil = Iif(Thisform.lReadOnly,[0],[1]) && modificabil lcModificabil = [1] lcIdFormular = Alltrim(Str(Thisform.nidformularraport)) && id_formular_raport lcGrupare = Nvl(loContainerSelectie.get_coloane_grupare(),[NULL]) lcOrdonare = Nvl(loContainerSelectie.get_coloane_ordonare(),[NULL]) lcCrossTabulare = Nvl(loContainerSelectie.get_coloane_crosstabulare(),[NULL]) *!* modificare ROAGEST v 2.0.144 *!* If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta And ; *!* At(Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; *!* Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),Upper(Thisform.filtru_cript)) <> 0 *!* Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; *!* Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),[luna_curenta|]) *!* Endif If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta And ; OccursRegExp(Upper("Perioada;" + Alltrim(Thisform.cfiltruperioada) + ";/[1-6]/;;" + ; Padl(Alltrim(Str(gnLuna)),2,[0]) + "/" + Alltrim(Str(gnAn)) + "|"),UPPER(Thisform.filtru_cript)) > 0 Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;luna_curenta|])) Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;2;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;2;;luna_curenta|])) Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;3;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;3;;luna_curenta|])) Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;4;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;4;;luna_curenta|])) Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;5;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;5;;luna_curenta|])) Thisform.filtru_cript = Strtran(Upper(Thisform.filtru_cript),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;6;;] + Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|]),; Upper([Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;6;;luna_curenta|])) Endif *!* modificare ROAGEST v 2.0.144 ^ lcValoriFiltru = Nvl(thisform.filtru_cript,[NULL]) lcSql = [{call pack_rapoarte.salveaza_raport(?pnIdRaport,?@pnIdRaportNou,] + ; ['] + Alltrim(pcDenumireRaport) + [','] + Alltrim(pcTitluRaport) + [',] + ; ['] + Alltrim(Nvl(lcRaport,[])) + [',] + Alltrim(lcModificabil) + [,] + ; ['] + Alltrim(lcCampuri) + [','] + Alltrim(lcGrupare) + [',] + ; ['] + Alltrim(lcOrdonare) + [','] + Alltrim(lcCrossTabulare) + [',] + ; lcIdFormular + [,'] + lcValoriFiltru + [',] + ; [?gnIdUtil)}] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox("Salvarea nu a reusit!" + Chr(13) + Chr(10) + Chr(13) + Chr(10) + ; goExecutor.cEroare,16,"Eroare") Else amessagebox("Raportul a fost salvat in baza de date!",64,"Info salvare raport") Thisform.nidraport = pnIdRaportNou Thisform.cdenumire = pcDenumireRaport Thisform.ctitluraport = pcTitluRaport Thisform.cRaport = lcRaport Thisform.lReadOnly = .F. loContainerSelectie.Enabled = !Thisform.lReadOnly Thisform.but_sterge1.Visible = !Thisform.lReadOnly Thisform.but_listare1.Visible = Iif(!Empty(Thisform.cRaport),.T.,.F.) Thisform.but_listare1.lvizibil = Iif(!Empty(Thisform.cRaport),.T.,.F.) Endif Endif Release pcDenumireRaport, pcTitluRaport, lofrmraportnou, pnIdRaport, pnIdRaportNou ENDPROC PROCEDURE do_sterge If amessagebox("Doriti sa stergeti raportul '"+Upper(Alltrim(Thisform.cdenumire)) + "' din baza de date?",4+32,"Confirmare stergere") = 6 lcSql = [begin pack_rapoarte.sterge_raport(] + Alltrim(Str(Thisform.nidraport)) + [,] + ; [?gnIdUtil); end;] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.cEroare,16,"Eroare") Else amessagebox("Raportul a fost sters!",64,"Info stergere") Thisform.nidraport = .Null. Endif Endif ENDPROC PROCEDURE Init Lparameters tnIdRaport If Isnull(Thisform.nidformularraport) Thisform.RemoveObject('ct_clb_raport') Thisform.RemoveObject('but_salveaza1') Thisform.RemoveObject('but_modiparam1') If Isnull(Thisform.nidraport) Thisform.RemoveObject('but_sterge1') Endif Endif For i = 1 To Thisform.Objects.Count If Upper(Alltrim(Thisform.Objects[i].Class)) = [CT_SELECTIE] Thisform.cnume_ct_selectie = Thisform.Objects[i].Name Exit Endif Endfor This.lb_titlu_alb_b121.Caption = Upper(Alltrim(Thisform.ctitluraportinitial)) Thisform.ctitluraport = Thisform.ctitluraportinitial Thisform.cRaport = Thisform.cRaportinitial Thisform.nidraport = Thisform.nidraportinitial *!* *!* If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta And ; *!* *!* At([Perioada;]+Alltrim(Thisform.cfiltruperioada)+[;],Thisform.filtru_cript) = 0 *!* *!* Thisform.filtru_cript = Thisform.filtru_cript + [Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; *!* *!* Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|] *!* *!* Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) *!* *!* Endif *!* modificare ROAGEST v 2.0.144 *!* If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta *!* Thisform.filtru_cript = [Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; *!* Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|] *!* Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) *!* Endif *!* modificare ROAGEST v 2.0.144 ^ Bindevent(Thisform,"lReadOnly",Thisform,"do_modificabil",1) DoDefault() If !Empty(tnIdRaport) Thisform.nidraport = tnIdRaport Thisform.do_incarca_raport() *!* modificare ROAGEST v 2.0.144 Else If Thisform.lfiltruperioada And Thisform.ladaugalunacurenta Thisform.filtru_cript = [Perioada;] + Alltrim(Thisform.cfiltruperioada) + [;1;;] + ; Padl(Alltrim(Str(gnLuna)),2,[0]) + [/] + Alltrim(Str(gnAn)) + [|] Thisform.but_start_criterii1.loadfiltru(Thisform.filtru_cript) Endif *!* modificare ROAGEST v 2.0.144 ^ Endif ENDPROC PROCEDURE But_start_criterii1.initform Lparameters tlShowForm DoDefault(tlShowForm) Thisform.ed_explicatii_filtru.Refresh() This.SetFocus() ENDPROC PROCEDURE But_start_criterii1.loadcriterii If Thisform.lfiltruperioada lcStringCriterii = lcStringCriterii + crlf + ; "Perioada\" + Alltrim(Thisform.cfiltruperioada) + "\D1\none\" Endif DoDefault() ENDPROC PROCEDURE lb_raport_predefinit.Init lcNumeContainer = [thisform.] + Thisform.cnume_ct_selectie loContainer = &lcNumeContainer This.Top = loContainer.Top + Round((loContainer.Height-This.Height)/2,0) This.Left = loContainer.Left + Round((loContainer.Width-This.Width)/2,0) ENDPROC ENDDEFINE DEFINE CLASS frm_date_rapoarte_sql AS frm_date_rapoarte_gen_base OF "orapoarte.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="Ct_selectie1" UniqueID="" Timestamp="" /> * cbuton4 = but_reface1 cbuton7 = but_sterge1;but_nou1 DoCreate = .T. Name = "frm_date_rapoarte_sql" nidformularraport = 2 _shape1.Name = "_shape1" _shape1.ZOrderSet = 1 _shape2.Name = "_shape2" _shape2.ZOrderSet = 2 Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" Lb_titlu_alb_b121.ZOrderSet = 3 Gridsort1.Name = "Gridsort1" BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.ZOrderSet = 5 But_listare1.Name = "But_listare1" But_listare1.ZOrderSet = 6 But_excel1.Name = "But_excel1" But_excel1.ZOrderSet = 7 But_help1.Name = "But_help1" But_help1.ZOrderSet = 8 But_cautare1.Name = "But_cautare1" But_cautare1.ZOrderSet = 9 But_nou1.Name = "But_nou1" But_nou1.Visible = .F. But_nou1.ZOrderSet = 13 But_sterge1.Name = "But_sterge1" But_sterge1.ZOrderSet = 10 ed_explicatii_filtru.Name = "ed_explicatii_filtru" ed_explicatii_filtru.Top = 63 ed_explicatii_filtru.ZOrderSet = 11 But_salveaza1.Name = "But_salveaza1" But_salveaza1.ZOrderSet = 12 But_reset2.Name = "But_reset2" But_reset2.ZOrderSet = 14 lb_raport_predefinit.Left = 14 lb_raport_predefinit.Name = "lb_raport_predefinit" lb_raport_predefinit.Top = 200 lb_raport_predefinit.ZOrderSet = 16 But_start_criterii1.Name = "But_start_criterii1" But_start_criterii1.ZOrderSet = 15 * ADD OBJECT 'Ct_selectie1' AS ct_selectie_sql WITH ; Left = 12, ; Name = "Ct_selectie1", ; Top = 63, ; ZOrderSet = 0, ; edtSelectie.Name = "edtSelectie", ; cmdParametri.Name = "cmdParametri", ; lb_coloane.Name = "lb_coloane" *< END OBJECT: ClassLib="orapoarte.vcx" BaseClass="container" /> PROCEDURE Show LPARAMETERS nStyle DODEFAULT(nStyle) * Daca utilizatorul nu are drepturi de pe butonul adaugare, nu ii dau voie nici sa modificare * in acest caz modificarea este un raport nou (adaugare) this.ct_selectie1.Enabled = this.but_nou1.Visible ENDPROC PROCEDURE But_start_criterii1.loadcriterii PARAMETERS tacriterii EXTERNAL ARRAY tacriterii #DEFINE crlf CHR(13)+CHR(10) lcStringCriterii="" DODEFAULT() ENDPROC ENDDEFINE DEFINE CLASS frm_help_rapoarte AS _frmbase OF "_frm_base.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="ed_text" UniqueID="" Timestamp="" /> * DoCreate = .T. Height = 286 Name = "frm_help_rapoarte" Width = 481 _shape1.Height = 29 _shape1.Left = 0 _shape1.Name = "_shape1" _shape1.Top = 0 _shape1.Width = 480 _shape2.Height = 29 _shape2.Left = 451 _shape2.Name = "_shape2" _shape2.Top = 0 _shape2.Width = 31 Lb_titlu_alb_b121.Caption = "Ajutor generare rapoarte" Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" BUT_TERMIN1.Left = 451 BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.Top = 1 Gridsort1.Name = "Gridsort1" * ADD OBJECT 'ed_text' AS _edbase WITH ; Height = 240, ; Left = 12, ; Name = "ed_text", ; ReadOnly = .T., ; Top = 36, ; Width = 456 *< END OBJECT: ClassLib="_ed_base.vcx" BaseClass="editbox" /> PROCEDURE Init Lparameters tnIdFormular Local lnIdFormular lnIdFormular = Iif(!Empty(Nvl(tnIdFormular,0)), tnIdFormular, 1) Local lcCrlf, lcTab lcCrlf = Chr(13) + Chr(10) lcTab = Chr(9) DoDefault() If m.lnIdFormular = 1 This.ed_text.Value = ["Coloane in selectie" : ] + lcCrlf + ; lcTab + lcTab + [Daca numele este scris cu verde, atunci valorile coloanei respective pot fi inscrise pe ] + ; [coloane in loc de linii (crosstabulare). Pentru aceasta trebuie sa bifati casuta din dreptul numelui si sa faceti click ] + ; [dreapta pe el. Numele se va colora in albastru, iar numele coloanelor care se insumeaza vor fi colorate in ] + ; [verde.] + lcCrlf + lcCrlf + ; lcTab + lcTab + [Se urmeaza acelasi procedeu pentru coloanele cu sume care se doresc a aparea pentru fiecare ] + ; [valoare distincta din categoria care a fost selectata cu albastru.] + lcCrlf + ; lcTab + lcTab + [Diferenta este ca dintre cele care nu se insumeaza, doar valorile uneia pot fi aranjate pe ] + ; [coloane, in timp ce dintre cele care se insumeaza se pot selecta oricate.] + lcCrlf + ; lcTab + lcTab + [ATENTIE!!! Daca ati selectat o coloana pentru crosstabulare, atunci trebuie sa selectati ] + ; [pentru crosstabulare cel putin o coloana dintre cele care se insumeaza.] Else This.ed_text.Value = [Apasati pe butonul Binoclu pentru a completa valorile parametrilor : ] + lcCrlf + ; [Ex: In dreptul parametrului Ziua curenta zzllaaaa, completati 01012010] Endif ENDPROC ENDDEFINE DEFINE CLASS frm_optiuni_rapoarte AS _frmbase OF "_frm_base.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="But_renunt1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="opt_rapoarte" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="grd_rapoarte" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="grd_rapoarte.cDenumire.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="grd_rapoarte.cDenumire.Text1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="grd_rapoarte.cTitlu.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="grd_rapoarte.cTitlu.Text1" UniqueID="" Timestamp="" /> * DoCreate = .T. Height = 320 Name = "frm_optiuni_rapoarte" Width = 588 _shape1.Height = 29 _shape1.Left = 0 _shape1.Name = "_shape1" _shape1.Top = 0 _shape1.Width = 588 _shape2.Height = 29 _shape2.Left = 524 _shape2.Name = "_shape2" _shape2.Top = 0 _shape2.Width = 64 Lb_titlu_alb_b121.Caption = "RAPOARTE" Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" BUT_TERMIN1.Left = 557 BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.Top = 1 Gridsort1.Name = "Gridsort1" * ADD OBJECT 'But_renunt1' AS but_renunt WITH ; Left = 526, ; Name = "But_renunt1", ; Top = 1 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'grd_rapoarte' AS _grdrow WITH ; ColumnCount = 2, ; DeleteMark = .F., ; Enabled = .F., ; FontItalic = .T., ; FontName = "Arial Narrow", ; ForeColor = 128,128,128, ; Height = 221, ; Left = 23, ; Name = "grd_rapoarte", ; Panel = 1, ; RecordSource = "crsrapoarte", ; Top = 79, ; Width = 541, ; Column1.ControlSource = "denumire", ; Column1.Enabled = .F., ; Column1.FontItalic = .T., ; Column1.FontName = "Arial Narrow", ; Column1.ForeColor = 128,128,128, ; Column1.Name = "cDenumire", ; Column1.ReadOnly = .T., ; Column1.Width = 276, ; Column2.ControlSource = "titlu", ; Column2.Enabled = .F., ; Column2.FontItalic = .T., ; Column2.FontName = "Arial Narrow", ; Column2.ForeColor = 128,128,128, ; Column2.Name = "cTitlu", ; Column2.ReadOnly = .T., ; Column2.Width = 231 *< END OBJECT: ClassLib="_grd_base.vcx" BaseClass="grid" /> ADD OBJECT 'grd_rapoarte.cDenumire.Header1' AS header WITH ; Alignment = 2, ; Caption = "Denumire", ; FontItalic = .T., ; FontName = "Arial Narrow", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'grd_rapoarte.cDenumire.Text1' AS textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; Enabled = .F., ; FontItalic = .T., ; FontName = "Arial Narrow", ; ForeColor = 128,128,128, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'grd_rapoarte.cTitlu.Header1' AS header WITH ; Alignment = 2, ; Caption = "Titlu", ; FontItalic = .T., ; FontName = "Arial Narrow", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'grd_rapoarte.cTitlu.Text1' AS textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; Enabled = .F., ; FontItalic = .T., ; FontName = "Arial Narrow", ; ForeColor = 128,128,128, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: BaseClass="textbox" /> ADD OBJECT 'opt_rapoarte' AS _optiongrup WITH ; AutoSize = .F., ; Height = 276, ; Left = 12, ; Name = "opt_rapoarte", ; Top = 36, ; Width = 564, ; OPTION1.AutoSize = .T., ; OPTION1.Caption = "Raport nou", ; OPTION1.Left = 5, ; OPTION1.Name = "OPTION1", ; OPTION1.Top = 5, ; OPTION2.AutoSize = .T., ; OPTION2.Caption = "Raport existent", ; OPTION2.Left = 5, ; OPTION2.Name = "OPTION2", ; OPTION2.Top = 24 *< END OBJECT: ClassLib="_baza.vcx" BaseClass="optiongroup" /> PROCEDURE inainte_de_do_termin If Thisform.opt_rapoarte.Value = 1 pnIdRaport = 0 Else Select crsrapoarte pnIdRaport = id_raport Endif Return .T. ENDPROC PROCEDURE opt_rapoarte.InteractiveChange If This.Value = 2 thisform.grd_rapoarte.FontItalic = .F. thisform.grd_rapoarte.ForeColor = Rgb(0,0,0) Thisform.grd_rapoarte.Enabled = .T. Thisform.grd_rapoarte.SetFocus() Else thisform.grd_rapoarte.FontItalic = .T. thisform.grd_rapoarte.ForeColor = Rgb(128,128,128) Thisform.grd_rapoarte.Enabled = .F. Endif ENDPROC ENDDEFINE DEFINE CLASS frm_optiuni_rapoarte_sql AS _frmbase OF "_frm_base.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="But_renunt1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="cboFieldType" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="clbCaption" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="clbFieldSearchId" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="clbFieldSearch" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ed_tx_simplu1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ed_tx_simplu1._lbbase2" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="grdParametri" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="grdParametri.cParametru.Header1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="grdParametri.cParametru.Text1" UniqueID="" Timestamp="" /> * DoCreate = .T. Height = 320 Name = "frm_optiuni_rapoarte_sql" Width = 509 _shape1.Height = 29 _shape1.Left = 0 _shape1.Name = "_shape1" _shape1.Top = 0 _shape1.Width = 588 _shape2.Height = 29 _shape2.Left = 446 _shape2.Name = "_shape2" _shape2.Top = 0 _shape2.Width = 64 Lb_titlu_alb_b121.Caption = "OPTIUNI" Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" Lb_titlu_alb_b121.TabIndex = 8 BUT_TERMIN1.Left = 478 BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.TabIndex = 6 BUT_TERMIN1.Top = 1 Gridsort1.Left = 9 Gridsort1.Name = "Gridsort1" Gridsort1.Top = 33 * ADD OBJECT 'But_renunt1' AS but_renunt WITH ; Left = 447, ; Name = "But_renunt1", ; TabIndex = 7, ; Top = 1 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'cboFieldType' AS cb_tx_simplu WITH ; Height = 29, ; Left = 144, ; Name = "cboFieldType", ; TabIndex = 3, ; Top = 200, ; Width = 264, ; _cbbase1.ControlSource = "crsParametri.tipcamp", ; _cbbase1.Height = 23, ; _cbbase1.Left = 68, ; _cbbase1.Name = "_cbbase1", ; _cbbase1.RowSource = "C,N,D,D1,E,A", ; _cbbase1.RowSourceType = 1, ; _cbbase1.ToolTipText = "C = caracter, N = numar, D = data, D1 = perioada, E = expresie, A = lista valori", ; _cbbase1.Top = 3, ; _cbbase1.Width = 185, ; _lbbase1.Caption = "Tip camp", ; _lbbase1.Name = "_lbbase1" *< END OBJECT: ClassLib="lb_tx.vcx" BaseClass="container" /> ADD OBJECT 'clbCaption' AS clb_tx_simplu WITH ; Height = 29, ; Left = 144, ; Name = "clbCaption", ; TabIndex = 1, ; Top = 48, ; Width = 264, ; Text_simplu1.ControlSource = "crsParametri.titlu", ; Text_simplu1.Format = "K", ; Text_simplu1.Height = 23, ; Text_simplu1.Left = 68, ; Text_simplu1.Name = "Text_simplu1", ; Text_simplu1.Top = 3, ; Text_simplu1.Width = 184, ; Lb_simplu1.Caption = "Titlu", ; Lb_simplu1.Name = "Lb_simplu1" *< END OBJECT: ClassLib="lb_tx.vcx" BaseClass="container" /> ADD OBJECT 'clbFieldSearch' AS clb_tx_simplu WITH ; Height = 29, ; Left = 144, ; Name = "clbFieldSearch", ; TabIndex = 5, ; Top = 272, ; Width = 264, ; Text_simplu1.ControlSource = "crsParametri.campcautare", ; Text_simplu1.Left = 70, ; Text_simplu1.Name = "Text_simplu1", ; Text_simplu1.Top = 3, ; Lb_simplu1.Caption = "Cautare", ; Lb_simplu1.Name = "Lb_simplu1" *< END OBJECT: ClassLib="lb_tx.vcx" BaseClass="container" /> ADD OBJECT 'clbFieldSearchId' AS clb_tx_simplu WITH ; Height = 29, ; Left = 144, ; Name = "clbFieldSearchId", ; TabIndex = 4, ; Top = 236, ; Width = 264, ; Text_simplu1.ControlSource = "crsParametri.campid", ; Text_simplu1.Height = 23, ; Text_simplu1.Left = 101, ; Text_simplu1.Name = "Text_simplu1", ; Text_simplu1.Top = 3, ; Text_simplu1.Width = 152, ; Lb_simplu1.Caption = "Camp ID cautare", ; Lb_simplu1.Name = "Lb_simplu1" *< END OBJECT: ClassLib="lb_tx.vcx" BaseClass="container" /> ADD OBJECT 'Ed_tx_simplu1' AS ed_tx_simplu WITH ; Height = 106, ; Left = 144, ; Name = "Ed_tx_simplu1", ; TabIndex = 2, ; Top = 89, ; Width = 361, ; _edbase1.ControlSource = "crsParametri.camp", ; _edbase1.Height = 97, ; _edbase1.Left = 68, ; _edbase1.Name = "_edbase1", ; _edbase1.ReadOnly = .T., ; _edbase1.Top = 2, ; _edbase1.Width = 284, ; _lbbase1.Caption = "Camp /", ; _lbbase1.Name = "_lbbase1" *< END OBJECT: ClassLib="lb_tx.vcx" BaseClass="container" /> ADD OBJECT 'Ed_tx_simplu1._lbbase2' AS _lbbase WITH ; Caption = "Expresie", ; Left = 8, ; Name = "_lbbase2", ; Top = 25 *< END OBJECT: ClassLib="_lb_base.vcx" BaseClass="label" /> ADD OBJECT 'grdParametri' AS _grdbase WITH ; ColumnCount = 1, ; DeleteMark = .F., ; Height = 252, ; Left = 12, ; Name = "grdParametri", ; Panel = 1, ; ReadOnly = .T., ; RecordSource = "crsParametri", ; ScrollBars = 2, ; TabIndex = 9, ; Top = 48, ; Width = 121, ; Column1.ControlSource = "crsParametri.parametru", ; Column1.Name = "cParametru", ; Column1.ReadOnly = .T., ; Column1.Width = 86 *< END OBJECT: ClassLib="_grd_base.vcx" BaseClass="grid" /> ADD OBJECT 'grdParametri.cParametru.Header1' AS header WITH ; Alignment = 2, ; Caption = "Parametru", ; Name = "Header1" *< END OBJECT: BaseClass="header" /> ADD OBJECT 'grdParametri.cParametru.Text1' AS textbox WITH ; BackColor = 255,255,255, ; BorderStyle = 0, ; ForeColor = 0,0,0, ; Margin = 0, ; Name = "Text1", ; ReadOnly = .T. *< END OBJECT: BaseClass="textbox" /> PROCEDURE grdParametri.AfterRowColChange LPARAMETERS nColIndex thisform.Refresh() ENDPROC ENDDEFINE DEFINE CLASS frm_raport_nou AS _frmbase OF "_frm_base.vcx" *< CLASSDATA: Baseclass="form" Timestamp="" Scale="Pixels" Uniqueid="" /> *-- OBJECTDATA items order determines ZOrder / El orden de los items OBJECTDATA determina el ZOrder *< OBJECTDATA: ObjPath="But_renunt1" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ed_denumire" UniqueID="" Timestamp="" /> *< OBJECTDATA: ObjPath="Ed_titlu" UniqueID="" Timestamp="" /> * *p: nid *p: orec * * DoCreate = .T. Height = 190 Name = "frm_raport_nou" Width = 374 _shape1.Name = "_shape1" _shape2.Height = 29 _shape2.Left = 312 _shape2.Name = "_shape2" _shape2.Top = 0 _shape2.Width = 64 Lb_titlu_alb_b121.Caption = "DATE RAPORT" Lb_titlu_alb_b121.FontBold = .T. Lb_titlu_alb_b121.Name = "Lb_titlu_alb_b121" Lb_titlu_alb_b121.TabIndex = 5 BUT_TERMIN1.Left = 344 BUT_TERMIN1.Name = "BUT_TERMIN1" BUT_TERMIN1.TabIndex = 3 BUT_TERMIN1.Top = 1 GRIDSORT1.Name = "GRIDSORT1" * ADD OBJECT 'But_renunt1' AS but_renunt WITH ; Left = 314, ; Name = "But_renunt1", ; TabIndex = 4, ; Top = 1 *< END OBJECT: ClassLib="cmd_butoane.vcx" BaseClass="commandbutton" /> ADD OBJECT 'Ed_denumire' AS ed_tx_simplu WITH ; Height = 58, ; Left = 13, ; Name = "Ed_denumire", ; TabIndex = 1, ; Top = 48, ; Width = 347, ; _edbase1.ControlSource = "pcDenumireRaport", ; _edbase1.Format = "!", ; _edbase1.Height = 53, ; _edbase1.Left = 65, ; _edbase1.Name = "_edbase1", ; _edbase1.Top = 2, ; _edbase1.Width = 279, ; _lbbase1.Caption = "Denumire", ; _lbbase1.Left = 5, ; _lbbase1.Name = "_lbbase1", ; _lbbase1.Top = 6 *< END OBJECT: ClassLib="lb_tx.vcx" BaseClass="container" /> ADD OBJECT 'Ed_titlu' AS ed_tx_simplu WITH ; Height = 58, ; Left = 13, ; Name = "Ed_titlu", ; TabIndex = 2, ; Top = 105, ; Width = 347, ; _edbase1.ControlSource = "pcTitluRaport", ; _edbase1.Format = "!", ; _edbase1.Height = 53, ; _edbase1.Left = 65, ; _edbase1.Name = "_edbase1", ; _edbase1.Top = 2, ; _edbase1.Width = 279, ; _lbbase1.Caption = "Titlu", ; _lbbase1.Left = 5, ; _lbbase1.Name = "_lbbase1", ; _lbbase1.Top = 6 *< END OBJECT: ClassLib="lb_tx.vcx" BaseClass="container" /> PROCEDURE inainte_de_do_termin Local llReturn llReturn = .F. Do Case Case Empty(Nvl(pcDenumireRaport,[])) amessagebox("Nu ati completat denumirea raportului!",48,"Atentie") Thisform.ed_denumire.SetFocus() Case Empty(Nvl(pcTitluRaport,[])) amessagebox("Nu ati completat titlul raportului!",48,"Atentie") Thisform.ed_titlu.SetFocus() Otherwise Private pcMesajVerificare pcMesajVerificare = [] lcSql = [{call pack_rapoarte.verifica_detalii_raport(?pcDenumireRaport,?pcTitluRaport,?@pcMesajVerificare)}] lnSucces = goExecutor.oExecute(lcSql) If lnSucces < 0 amessagebox(goExecutor.cEroare,16,"Eroare") llReturn = .F. Else If Empty(Nvl(pcMesajVerificare,[])) llReturn = .T. Else amessagebox(pcMesajVerificare,48,"Atentie") If Like(Chr(13)+Chr(10)+'*',pcMesajVerificare) Thisform.ed_titlu.SetFocus() Else Thisform.ed_denumire.SetFocus() Endif llReturn = .F. Endif Endif Endcase Return llReturn ENDPROC ENDDEFINE