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