DCADDBUTTON ACTION code block

This forum is for eXpress++ general support.
Post Reply
Message
Author
Victorio
Posts: 532
Joined: Sun Jan 18, 2015 11:43 am
Location: Slovakia

DCADDBUTTON ACTION code block

#1 Post by Victorio »

Hi everybody,

I lost half day when search mistakes with my function.
I have TOOLBARS and in ACTION I have some code block. Today I want create some tool button with codeblock with more rows and Xbase compiler still freezes.
I absolutely do not know why, everythink looks to some limitations in ACTION code.

Can be some problem with this ?

Here is block which not work, when compile program, xbase workbench freeze. When use less rows, xbase compile without problems.
Sorry I do not know why board discompose my formatted text source file, maybe because I used tabs

Code: Select all

        DCADDBUTTON CAPTION "LV+CHRONO STOT/NESTOT OD DÁTUMU" PARENT oToolbar3 ;
        TOOLTIP "Tlač Listu vlastníctva - formát WISKN, chronológia v texte LV" ;
	SIZE 38*znakpixc[1],2.2*fontnv ;
	ACTION {|aslv|eval(bslvtest),eval(bslvtest2),;		// 9.12.2019 pridané aslv pole
		aslv:=ZADAJDATCH(),;				// 9.12.2019 pridané zadanie dátumu od - do a uloženie do pomocného poľa aslv
		iif (slvtest[1]=.T. .or. (slvtest[1]=.F. .and. slvtest2[1]=.F. .and. slvtest[4]=.F.),;				// ak stotožnené alebo nestotožnené
		{;
		ladenie("LV STOTOŽNENÉ alebo NESTOTOŽNENÉ"),;
		slvtest[2]:=aslv[2],;				// 9.12.2019 prepíšem dátum od ktorého sa má spracovať na zadaný dátum
		iif(naozaj2rlvch(SLV->CLV,"0"),;
		{;
		pwbezpotvrdenia:=1,;									// aby nezobrazoval okno pre výber intervalu, lebo iba od stotožnenia, a tiež zbytočne zdržuje
		(autoref:=.F.),;
		povsel1:=select(),povrec1:=recno(),pomslvclv:=SLV->CLV, ;				// vypnutie refreshu, zapamätanie pozície tu v databáze VLASTNICI
		refreshstop(),;
		relvyp(),;										// vypínam relácie
		eval(bSLVTEST),;
		slvtest[2]:=aslv[2],;				// 9.12.2019 znova prepíšem dátum od ktorého sa má spracovať na zadaný dátum
		typlvsch(2),;
		lvpluschrono:=.T.,;		// prepnutie na typ LV s chrono v texte
		iif(pwnajprvchrono=0,;
	      	    {pzvolenelv:=flv(4,30,pomslvclv,slvtest)},;						// generovanie LV ak pôvodné poradie LV a potom chrono
		    {pzvolenelv:=pomslvclv,pomtfclv:=pomslvclv}),;					// ošetrenie, ak najprv robím chrono a potom PV, takže premenné musím nadefinovať
		iif(pzvolenelv!=0, ;									// ošetrenie na prerušenie v dialógu
		    { ;
		    iif(pomslvclv!=pomtfclv,;
			{pomslvclv:=pomtfclv,DbSeek(pomslvclv),povrec1:=recno()},;
			nil), ;	
		    iif(lvpluschrono=.T., ;									
			{tlaczdroj:=vybertlaczdroj(1), ;						// nastavenie umiestnenia protokolu
			typredukcie:=vybertypredukcie(2), ;						// nastavenie typu redukcie protokolu
			iif(mcislolv=0 .or. (lopch=.F. .and. lopch2=.F.),pomhvzch:=HVZCH(1,1,1,0,0,1,1,0,0,pomslvclv,cku,30),pomhvzch:=999999)},;	// nastavenie typu redukcie protokolu
			{pomhvzch:=1}), ;				// generovanie chronológie
		    select(povsel1), ;
		    dbselectarea(41),;				// doplnené 8.10.2018 !!!
		    Eval(bSLVOLP), ;									// prepnutie do OLP
		    DbGoto(pomhvzch), ;									// skok na záznam v OLP kde je odkaz na protokol z HVZCH
		    iif(pomhvzch=0,{lvpluschrono:=.F.},nil), ;						// znulovanie príznaku ak preruším hľadanie
		    iif(lvpluschrono=.T., ;	
			{iif((tlaczdroj[2]!=0 .and. typredukcie!=0),;
			     {iif((lopch=.F. .and. lopch2=.F.),zlucptk(OLP->nazptk,tlaczdroj[2],.T.),NIL),;
			     iif(typredukcie=2,;							// ak zvolená redukcia protokolu
			         {iif((pwnajprvchrono=0),;
				      {chronodbffile:=redukciaptkch(tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptk",tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptkch",1,1),extred:="ch"},;
				      {iif(mcislolv=0 .or. (lopch=.F. .and. lopch2=.F.),chronodbffile:=redukciaptkch2dbf(tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptk",tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptk",1,1),NIL),extred:=""});	// 7.5.2018 tu vyradené ptkch a ch, lebo nižšie pri konfex havarovalo, pov.zapis je nižšie
				 },;
			         {extred:=""}), ;							// neredukovaný protokol bez extred ch
				 iif((pwnajprvchrono=1),;						// ak opačné poradie, tu ošetrené na znovuotvorenie databáz atď. parametre	
				     {otvordbfpreslv(30),;
				     pomslvclv:=pzvolenelv,;
				     pomtfclv:=pzvolenelv,;
				     pzvolenelv:=flv(4,30,pomslvclv,slvtest,pwchronovlv);		// až tu skúsim generovať LV	
				     },;
				     nil),;
			iif((pwnajprvchrono=1 .and. pzvolenelv!=0) .or. (pzvolenelv!=0 .and. konfex(tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptk"+extred)=.T.),;	// tu by som asi mal iba ak to nie je lv s chrono ? či pozn 17.9.2019
	   		    {PTK2PDF_DCPS(tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptk"+extred)},;
			    {nil})},;
			nil), ;
		     },nil), ;										// prepnutie znova na SLV ale neviem či ok
		},nil), ;										// koniec ošetrenia na nezadanie LV v dialógu
		otvordbfpreslv(30),select(povsel1),;							// znovuotvorenie všetkých databáz a otvorenie pôvodnej databázy
		relzap(),DbGoTo(povrec1),refreshstart(),(autoref:=.T.),Eval(bSLVOLP), ;			// zapnutie relácie scope, skok na pôvodné miesto
		oBrowseslv:RefreshAll(),oBrowseo:RefreshAll(),;										// refresh databáz
		typlvsch(1),;		// vrátenie pôvodného nastavenia
		lvpluschrono:=.F.,;	// vypnutie LV s chrono v texte, lebo hore fixne zapínam
		pwbezpotvrdenia:=0;									// vrátenie pôvodnej hodnoty
		},nil);			// tj. ak užívateľ nepotvrdí LV s chronológiou
		},iif(slvtest2[1]=.F.,oznam("LV nie je stotožnené, tlač LV s chronológiou nie je povolená !"),oznam("LV je stotožnené ale zrušené, tlač LV s chronológiou nie je povolená !"))),;
		iif((slvtest[1]=.F. .and. slvtest2[1]=.T.) .or. (slvtest[1]=.F. .and. slvtest2[1]=.F. .and. slvtest[4]=.T.),;
		{;
ladenie("tu dám celú funkciu ak platí druhá podmienka pre zrušené LVčka"),;
		iif (slvtest2[1]=.T.,;			// tu vyhodnotím parameter stotožnené a zrušené
		     {;
		      llvstzr:=.T.,;					// nastavenie že sa bude spracovávať zrušené stotožnené LV
		      dlvstzr:=dtoc(stod(substr(SLV->CAS,1,8))),;	// zistenie dátumu stotožnenia už tu, lebo musí z databázy ST
		      dlvstzr:=dtoc(slvtest[2]),;			// 13.2.2018 skúšam prepísať dátumom z deleted záznamu v LV
		      drlvstzr:=dtoc(SLV->DATB),;			// zistenie dátumu zrušenia LV tu, lebo musí z databázy ST		
		      iif(naozaj2rlvch(SLV->CLV,"0"),;
		          {;
		           pwbezpotvrdenia:=1,;									// aby nezobrazoval okno pre výber intervalu, lebo iba od stotožnenia, a tiež zbytočne zdržuje
		          (autoref:=.F.),;
		          povsel1:=select(),povrec1:=recno(),pomslvclv:=SLV->CLV, ;				// vypnutie refreshu, zapamätanie pozície tu v databáze VLASTNICI
		          refreshstop(),;
		          relvyp(),;											// vypínam relácie
		          eval(bSLVTEST),;										// zisťujem či je LV stotožnené
		          typlvsch(2),;
		          lvpluschrono:=.T.,;		// prepnutie na typ LV s chrono v texte
		          iif(pwnajprvchrono=0,;
	      	              {pzvolenelv:=flv(4,30,pomslvclv,slvtest)},;							// generovanie LV ak pôvodné poradie LV a potom chrono
		              {pzvolenelv:=pomslvclv,pomtfclv:=pomslvclv}),;						// ošetrenie, ak najprv robím chrono a potom PV, takže premenné musím nadefinovať
		          iif(pzvolenelv!=0, ;										// ošetrenie na prerušenie v dialógu
		              { ;
		               iif(pomslvclv!=pomtfclv,;
			           {pomslvclv:=pomtfclv,DbSeek(pomslvclv),povrec1:=recno()},;
			           nil), ;	
		               iif(lvpluschrono=.T., ;
			           {tlaczdroj:=vybertlaczdroj(1), ;								// nastavenie umiestnenia protokolu
			            typredukcie:=vybertypredukcie(2), ;								// nastavenie typu redukcie protokolu
			            iif(mcislolv=0 .or. (lopch=.F. .and. lopch2=.F.),pomhvzch:=HVZCH(1,1,1,0,0,1,1,0,0,pomslvclv,cku,30),pomhvzch:=999999)},;							// nastavenie typu redukcie protokolu
			           {pomhvzch:=1}), ;				// generovanie chronológie
		                   select(povsel1), ;
		                   dbselectarea(41),;				// doplnené 8.10.2018 !!!
		                   Eval(bSLVOLP), ;											// prepnutie do OLP
		                   DbGoto(pomhvzch), ;									// skok na záznam v OLP kde je odkaz na protokol z HVZCH
		                   iif(pomhvzch=0,{lvpluschrono:=.F.},nil), ;						// znulovanie príznaku ak preruším hľadanie
		                   iif(lvpluschrono=.T., ;	
			               {iif((tlaczdroj[2]!=0 .and. typredukcie!=0),;
			                    {iif((lopch=.F. .and. lopch2=.F.),zlucptk(OLP->nazptk,tlaczdroj[2],.T.),NIL),;
			                     iif(typredukcie=2,;						// ak zvolená redukcia protokolu
			                         {iif((pwnajprvchrono=0),;
				                      {chronodbffile:=redukciaptkch(tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptk",tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptkch",1,1),extred:="ch"},;
				                      {iif(mcislolv=0 .or. (lopch=.F. .and. lopch2=.F.),chronodbffile:=redukciaptkch2dbf(tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptk",tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptk",1,1),NIL),extred:=""});	// 7.5.2018 tu vyradené ptkch a ch, lebo nižšie pri konfex havarovalo, pov.zapis je nižšie
				                 },;
			                         {extred:=""}), ;						// neredukovaný protokol bez extred ch
				             iif((pwnajprvchrono=1),;						// ak opačné poradie, tu ošetrené na znovuotvorenie databáz atď. parametre	
				                 {otvordbfpreslv(30),;
				                  pomslvclv:=pzvolenelv,;
				                  pomtfclv:=pzvolenelv,;
				                  pzvolenelv:=flv(4,30,pomslvclv,slvtest,pwchronovlv);				// až tu skúsim generovať LV	
				                 },;
				                 nil),;
			                     iif((pwnajprvchrono=1 .and. pzvolenelv!=0) .or. (pzvolenelv!=0 .and. konfex(tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptk"+extred)=.T.),;	// tu by som asi mal iba ak to nie je lv s chrono ? či pozn 17.9.2019
	   		                         {PTK2PDF_DCPS(tlaczdroj[1]+alltrim(OLP->NAZPTK)+".ptk"+extred)},;
			                         {nil});
					    },;
					    nil;
					   ), ;
		     		       },nil;
				      ), ;											// prepnutie znova na SLV ale neviem či ok
				    },nil), ;											// koniec ošetrenia na nezadanie LV v dialógu
				otvordbfpreslv(30),select(povsel1),;								// znovuotvorenie všetkých databáz a otvorenie pôvodnej databázy
				relzap(),DbGoTo(povrec1),refreshstart(),(autoref:=.T.),Eval(bSLVOLP), ;		// zapnutie relácie scope, skok na pôvodné miesto
				oBrowseslv:RefreshAll(),oBrowseo:RefreshAll(),;										// refresh databáz
				typlvsch(1),;		// vrátenie pôvodného nastavenia
				lvpluschrono:=.F.,;	// vypnutie LV s chrono v texte, lebo hore fixne zapínam
				pwbezpotvrdenia:=0;									// vrátenie pôvodnej hodnoty
			    },nil);			// tj. ak užívateľ nepotvrdí LV s chronológiou
		        },;
			iif(slvtest2[1]=.F.,oznam("LV nie je stotožnené, tlač LV s chronológiou nie je povolená !"),oznam("LV je stotožnené ale zrušené, tlač LV s chronológiou nie je povolená !"));
		      ),;
		    llvstzr:=.F.,;					// nastavenie že sa bude spracovávať zrušené stotožnené LV
		    dlvstzd:=dtoc(date()),;				// tu iba pre istotu zmeniť na aktuálny dátum, aby niekde nechýbala hodnota		
		    drlvstzd:=dtoc(date());				// tu iba pre istotu zmeniť na aktuálny dátum, aby niekde nechýbala hodnota		
		},;
		{;
		NIL;
		};
		);		// koniec podmienky
		} ;		// koniec celého action bloku
        HIDE {||zoompor=.T.,lanalyzy=.F.} ;
        CONFIG oConfig1

Post Reply