Scope dbf with SQL Express++
Posted: Sun Nov 26, 2017 6:49 am
Hi,
How can I realise scope with eXpress++ and SQL Express++ ?
Now I have two DBF files opened with ODBC VFP driver.
From old system with only DBF / CDX system I have code block for Scope :
bOLPD:={||OLPD->(DC_SetScope(0,OLP->C_PROC)), ;
OLPD->(DC_SetScope(1,OLP->C_PROC)), ;
OLPD->(DC_DbGoTop()), ;
oBrowsed:refreshAll()}
How modify it to use SQL express++ ? In eXpress manual I found only info AX_SetScope for Advantage, but nothing about SQL Express.
I do not know, if to bOLPD need use something like this
oBrowsed:refreshAll change to oCursord:refresh()
and what with field names C_PROC for example, because in browse I show it with this :
DATA SQLFieldBlock(oCursord,oCursord:FieldPos("C_PROC"))
Here is part of browsing two databases:
*************************
* BROWSE TABUĽKA PRE OLP
*************************
DCSETPARENT oBrowse
@ 0,0 DCBROWSE oBrowse ALIAS "OLP" DATA oCursor ;
SIZE 150,15 ;
PRESENTATION DC_BrowPres() ;
CURSORMODE XBPBRW_CURSOR_ROW ;
SCOPE ;
ITEMMARKED {||Eval(bOLPD), ;
DC_GetRefresh(GetList,, ;
DCGETREFRESH_TYPE_EXCLUDE,(GETLIST_BROWSE))}
/*
* automatické vygenerovanie polí , ale to nechcem, lebo chcem vlastné popisy hlavičiek
FOR i := 1 TO oCursor:fCount
DCBROWSECOL DATA SQLFieldBlock( oCursor, i ) ;
HEADER oCursor:fieldName(i) ;
SORT SQLSortBlock( oCursor, i ) ;
_DEFAULT oCursor:fieldName(i) == 'C_PROC' ;
SIZE 150,20 ;
PARENT oBrowse
NEXT
*/
* pre databázu RAUKN_OLP
DCSETPARENT oBrowse
* tu zobrazí ak je záznam zrušený
DCBROWSECOL DATA {|x|x:=deleted(),IIF(x,'X',' ')} ;
HEADER "Zru" WIDTH 5 PARENT oBrowse
DCBROWSECOL DATA SQLFieldBlock(oCursor,oCursor:FieldPos("C_PROC")) ; // ozn. registra
HEADER "C_PROC" WIDTH 10 PARENT oBrowse
DCBROWSECOL DATA SQLFieldBlock(oCursor,oCursor:FieldPos("DAT_ZAD")) ; // ozn. registra
HEADER "DAT_ZAD" WIDTH 10 PARENT oBrowse
DCBROWSECOL DATA SQLFieldBlock(oCursor,oCursor:FieldPos("CAS_ZAD")) ; // ozn. registra
HEADER "CAS_ZAD" WIDTH 20 PARENT oBrowse
DCBROWSECOL DATA SQLFieldBlock(oCursor,oCursor:FieldPos("STAV")) ; // ozn. registra
HEADER "STAV" WIDTH 20 PARENT oBrowse
DCBROWSECOL DATA SQLFieldBlock(oCursor,oCursor:FieldPos("NAZPTK")) ; // ozn. registra
HEADER "NAZPTK" WIDTH 20 PARENT oBrowse
*
*************************
* BROWSE TABUĽKA PRE OLPD
*************************
DCSETPARENT TO oBrowsed
@ 22,0 DCBROWSE oBrowsed ALIAS "OLPD" DATA oCursord ;
SIZE 150,15 ;
PRESENTATION DC_BrowPres() ;
CURSORMODE XBPBRW_CURSOR_ROW ;
SCOPE ;
/*
* automatické vygenerovanie polí , ale to nechcem, lebo chcem vlastné popisy hlavičiek
FOR i := 1 TO oCursord:fCount
DCBROWSECOL DATA SQLFieldBlock( oCursor, i ) ;
HEADER oCursord:fieldName(i) ;
SORT SQLSortBlock( oCursord, i ) ;
_DEFAULT oCursord:fieldName(i) == 'C_PROC' ;
SIZE 150,20 ;
PARENT oBrowsed
NEXT
*/
* pre databázu RAUKN_OLP_D
DCSETPARENT TO oBrowsed
* tu zobrazí ak je záznam zrušený
DCBROWSECOL DATA {|x|x:=deleted(),IIF(x,'X',' ')} ;
HEADER "Zru" WIDTH 5 PARENT oBrowsed
DCBROWSECOL DATA SQLFieldBlock(oCursord,oCursord:FieldPos("C_PROC")) ; // ozn. registra
HEADER "C_PROC" WIDTH 10 PARENT oBrowsed
DCBROWSECOL DATA SQLFieldBlock(oCursord,oCursord:FieldPos("DAT_ZAD")) ; // ozn. registra
HEADER "DAT_ZAD" WIDTH 10 PARENT oBrowsed
DCBROWSECOL DATA SQLFieldBlock(oCursord,oCursord:FieldPos("CAS_ZAD")) ; // ozn. registra
HEADER "CAS_ZAD" WIDTH 20 PARENT oBrowsed
DCBROWSECOL DATA SQLFieldBlock(oCursord,oCursord:FieldPos("STAV")) ; // ozn. registra
HEADER "STAV" WIDTH 20 PARENT oBrowsed
DCBROWSECOL DATA SQLFieldBlock(oCursord,oCursord:FieldPos("NAZPTK")) ; // ozn. registra
HEADER "NAZPTK" WIDTH 20 PARENT oBrowsed
*
DCSETPARENT oToolbarplb
***********************
* zobrazenie toolbaru
***********************
@ 0,160 DCTOOLBAR oToolbarplb SIZE 22,70 ;
ALIGN DCGUI_ALIGN_LEFT ;
BUTTONSIZE 20,1.5 ;
SPACE 2 ;
RESIZE DCGUI_RESIZE_REPOSONLY_X ;
FIT
* refresh kurzora - funguje, aj keď pridám cez RAUKN
* pre Cursor namiesto FetchData použiť Refresh, Sort tiež nepozná, musí asi server alebo statement na začiatku definovať
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'REFRESH';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
oCursor:Gotop(),; // skok na začiatok
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* skok na začiatok - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'GOTOP';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Gotop(),; // skok na začiatok
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* skok na koniec - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'GOBOTTOM';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Gobottom(),; // skok na začiatok
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* vyhľadanie čisla 20 - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'SEEK' ;
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Seek({20}),; // triedenie podľa C_PROC
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* vyhľadanie čísla 20 bez dvojitých zátvoriek - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'SEEK' ;
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Seek(20),; // triedenie podľa C_PROC
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* pridanie prázdneho riadku a zadanie údajov - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'PRIDAJ 999-A';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Append(),;
oCursor:FieldPut("C_PROC", cp++ ),; // inkrementálne pridáva vždy nasledujúce číslo procesu ale to iba test, inak musím zistiť nasledujúce inak nie recno
oCursor:FieldPut("DAT_ZAD", date() ),;
oCursor:FieldPut("CAS_ZAD", time() ),;
oCursor:FieldPut("NAZPTK", "PROTOKOL-A" ),;
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
oCursor:Gobottom(),; // skok na začiatok
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* pridanie prázdneho riadku a zadanie údajov - pridávanie s inkrementovaním por.čísla - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'PRIDAJ 999-INCR';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Gobottom(),; // skok na koniec
maxc:=oCursor:FieldGet("C_PROC"),; // zistenie posledného čísla
maxc++,; // inkrementovanie
oCursor:Append(),; // pridanie prázneho záznamu
oCursor:FieldPut("C_PROC", maxc ),; // zadanie obsahu polí
oCursor:FieldPut("DAT_ZAD", date() ),;
oCursor:FieldPut("CAS_ZAD", time() ),;
oCursor:FieldPut("NAZPTK", "PROTOKOL-A" ),;
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
oCursor:Gobottom(),; // skok na začiatok
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* pridanie prázdneho riadku a zadanie údajov - naraz všetky údaje v riadku - NEFUNGUJE , neviem presný syntax
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'PRIDAJ 999-B';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Append({55,date(),"-","-",0,.F.,date(),"-",0,.F.,.F.,.F.,0,0,"-","-","-","-",0,0,"-",0,0,date(),date(),0,0,0,"-","-",0,0,.F.,"-","-","-","-","-",.F.,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"-",0,"-","-",0}), ;
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* aktualizácia údajov v riadku - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'UPRAV STAV 0';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:FieldPut("STAV",0),; // znovunačítanie databázy, refresh datasetu
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* aktualizácia údajov v riadku - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'UPRAV STAV 1';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:FieldPut("STAV",1),; // znovunačítanie databázy, refresh datasetu
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* aktualizácia údajov v riadku - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'UPRAV STAV 2';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:FieldPut("STAV",2),; // znovunačítanie databázy, refresh datasetu
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* vymazanie riadku - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'VYMAŽ';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Delete(),; // znovunačítanie databázy, refresh datasetu
oCursor:UpdateRow(),; // toto asi musí byť
oCursor:skip(),; // ? možno nemusí byť
oCursor:Refresh(),; // refresh
oCursor:gotop(),; // skok na koniec
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* tu už samotné zobrazenie BROWSERom
DCGETOPTIONS ;
AUTORESIZE ;
BUTTONALIGN DCGUI_BUTTONALIGN_CENTER
DCREAD GUI ;
FIT ;
OPTIONS GetOptions ;
BUTTONS DCGUI_BUTTON_EXIT ;
TITLE 'Browsing with SQLexpress - použitý oCursor' ;
EVAL {|o|SetAppWindow(o) ;
}
* SetAppFocus(oBrowse:GetColumn(1));
* zatvorenie cursoru a uvoľnenie pamäti
oCursor:Close()
oCursord:Close()
How can I realise scope with eXpress++ and SQL Express++ ?
Now I have two DBF files opened with ODBC VFP driver.
From old system with only DBF / CDX system I have code block for Scope :
bOLPD:={||OLPD->(DC_SetScope(0,OLP->C_PROC)), ;
OLPD->(DC_SetScope(1,OLP->C_PROC)), ;
OLPD->(DC_DbGoTop()), ;
oBrowsed:refreshAll()}
How modify it to use SQL express++ ? In eXpress manual I found only info AX_SetScope for Advantage, but nothing about SQL Express.
I do not know, if to bOLPD need use something like this
oBrowsed:refreshAll change to oCursord:refresh()
and what with field names C_PROC for example, because in browse I show it with this :
DATA SQLFieldBlock(oCursord,oCursord:FieldPos("C_PROC"))
Here is part of browsing two databases:
*************************
* BROWSE TABUĽKA PRE OLP
*************************
DCSETPARENT oBrowse
@ 0,0 DCBROWSE oBrowse ALIAS "OLP" DATA oCursor ;
SIZE 150,15 ;
PRESENTATION DC_BrowPres() ;
CURSORMODE XBPBRW_CURSOR_ROW ;
SCOPE ;
ITEMMARKED {||Eval(bOLPD), ;
DC_GetRefresh(GetList,, ;
DCGETREFRESH_TYPE_EXCLUDE,(GETLIST_BROWSE))}
/*
* automatické vygenerovanie polí , ale to nechcem, lebo chcem vlastné popisy hlavičiek
FOR i := 1 TO oCursor:fCount
DCBROWSECOL DATA SQLFieldBlock( oCursor, i ) ;
HEADER oCursor:fieldName(i) ;
SORT SQLSortBlock( oCursor, i ) ;
_DEFAULT oCursor:fieldName(i) == 'C_PROC' ;
SIZE 150,20 ;
PARENT oBrowse
NEXT
*/
* pre databázu RAUKN_OLP
DCSETPARENT oBrowse
* tu zobrazí ak je záznam zrušený
DCBROWSECOL DATA {|x|x:=deleted(),IIF(x,'X',' ')} ;
HEADER "Zru" WIDTH 5 PARENT oBrowse
DCBROWSECOL DATA SQLFieldBlock(oCursor,oCursor:FieldPos("C_PROC")) ; // ozn. registra
HEADER "C_PROC" WIDTH 10 PARENT oBrowse
DCBROWSECOL DATA SQLFieldBlock(oCursor,oCursor:FieldPos("DAT_ZAD")) ; // ozn. registra
HEADER "DAT_ZAD" WIDTH 10 PARENT oBrowse
DCBROWSECOL DATA SQLFieldBlock(oCursor,oCursor:FieldPos("CAS_ZAD")) ; // ozn. registra
HEADER "CAS_ZAD" WIDTH 20 PARENT oBrowse
DCBROWSECOL DATA SQLFieldBlock(oCursor,oCursor:FieldPos("STAV")) ; // ozn. registra
HEADER "STAV" WIDTH 20 PARENT oBrowse
DCBROWSECOL DATA SQLFieldBlock(oCursor,oCursor:FieldPos("NAZPTK")) ; // ozn. registra
HEADER "NAZPTK" WIDTH 20 PARENT oBrowse
*
*************************
* BROWSE TABUĽKA PRE OLPD
*************************
DCSETPARENT TO oBrowsed
@ 22,0 DCBROWSE oBrowsed ALIAS "OLPD" DATA oCursord ;
SIZE 150,15 ;
PRESENTATION DC_BrowPres() ;
CURSORMODE XBPBRW_CURSOR_ROW ;
SCOPE ;
/*
* automatické vygenerovanie polí , ale to nechcem, lebo chcem vlastné popisy hlavičiek
FOR i := 1 TO oCursord:fCount
DCBROWSECOL DATA SQLFieldBlock( oCursor, i ) ;
HEADER oCursord:fieldName(i) ;
SORT SQLSortBlock( oCursord, i ) ;
_DEFAULT oCursord:fieldName(i) == 'C_PROC' ;
SIZE 150,20 ;
PARENT oBrowsed
NEXT
*/
* pre databázu RAUKN_OLP_D
DCSETPARENT TO oBrowsed
* tu zobrazí ak je záznam zrušený
DCBROWSECOL DATA {|x|x:=deleted(),IIF(x,'X',' ')} ;
HEADER "Zru" WIDTH 5 PARENT oBrowsed
DCBROWSECOL DATA SQLFieldBlock(oCursord,oCursord:FieldPos("C_PROC")) ; // ozn. registra
HEADER "C_PROC" WIDTH 10 PARENT oBrowsed
DCBROWSECOL DATA SQLFieldBlock(oCursord,oCursord:FieldPos("DAT_ZAD")) ; // ozn. registra
HEADER "DAT_ZAD" WIDTH 10 PARENT oBrowsed
DCBROWSECOL DATA SQLFieldBlock(oCursord,oCursord:FieldPos("CAS_ZAD")) ; // ozn. registra
HEADER "CAS_ZAD" WIDTH 20 PARENT oBrowsed
DCBROWSECOL DATA SQLFieldBlock(oCursord,oCursord:FieldPos("STAV")) ; // ozn. registra
HEADER "STAV" WIDTH 20 PARENT oBrowsed
DCBROWSECOL DATA SQLFieldBlock(oCursord,oCursord:FieldPos("NAZPTK")) ; // ozn. registra
HEADER "NAZPTK" WIDTH 20 PARENT oBrowsed
*
DCSETPARENT oToolbarplb
***********************
* zobrazenie toolbaru
***********************
@ 0,160 DCTOOLBAR oToolbarplb SIZE 22,70 ;
ALIGN DCGUI_ALIGN_LEFT ;
BUTTONSIZE 20,1.5 ;
SPACE 2 ;
RESIZE DCGUI_RESIZE_REPOSONLY_X ;
FIT
* refresh kurzora - funguje, aj keď pridám cez RAUKN
* pre Cursor namiesto FetchData použiť Refresh, Sort tiež nepozná, musí asi server alebo statement na začiatku definovať
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'REFRESH';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
oCursor:Gotop(),; // skok na začiatok
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* skok na začiatok - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'GOTOP';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Gotop(),; // skok na začiatok
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* skok na koniec - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'GOBOTTOM';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Gobottom(),; // skok na začiatok
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* vyhľadanie čisla 20 - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'SEEK' ;
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Seek({20}),; // triedenie podľa C_PROC
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* vyhľadanie čísla 20 bez dvojitých zátvoriek - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'SEEK' ;
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Seek(20),; // triedenie podľa C_PROC
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* pridanie prázdneho riadku a zadanie údajov - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'PRIDAJ 999-A';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Append(),;
oCursor:FieldPut("C_PROC", cp++ ),; // inkrementálne pridáva vždy nasledujúce číslo procesu ale to iba test, inak musím zistiť nasledujúce inak nie recno
oCursor:FieldPut("DAT_ZAD", date() ),;
oCursor:FieldPut("CAS_ZAD", time() ),;
oCursor:FieldPut("NAZPTK", "PROTOKOL-A" ),;
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
oCursor:Gobottom(),; // skok na začiatok
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* pridanie prázdneho riadku a zadanie údajov - pridávanie s inkrementovaním por.čísla - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'PRIDAJ 999-INCR';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Gobottom(),; // skok na koniec
maxc:=oCursor:FieldGet("C_PROC"),; // zistenie posledného čísla
maxc++,; // inkrementovanie
oCursor:Append(),; // pridanie prázneho záznamu
oCursor:FieldPut("C_PROC", maxc ),; // zadanie obsahu polí
oCursor:FieldPut("DAT_ZAD", date() ),;
oCursor:FieldPut("CAS_ZAD", time() ),;
oCursor:FieldPut("NAZPTK", "PROTOKOL-A" ),;
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
oCursor:Gobottom(),; // skok na začiatok
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* pridanie prázdneho riadku a zadanie údajov - naraz všetky údaje v riadku - NEFUNGUJE , neviem presný syntax
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'PRIDAJ 999-B';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Append({55,date(),"-","-",0,.F.,date(),"-",0,.F.,.F.,.F.,0,0,"-","-","-","-",0,0,"-",0,0,date(),date(),0,0,0,"-","-",0,0,.F.,"-","-","-","-","-",.F.,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"-",0,"-","-",0}), ;
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* aktualizácia údajov v riadku - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'UPRAV STAV 0';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:FieldPut("STAV",0),; // znovunačítanie databázy, refresh datasetu
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* aktualizácia údajov v riadku - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'UPRAV STAV 1';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:FieldPut("STAV",1),; // znovunačítanie databázy, refresh datasetu
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* aktualizácia údajov v riadku - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'UPRAV STAV 2';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:FieldPut("STAV",2),; // znovunačítanie databázy, refresh datasetu
oCursor:UpdateRow(),;
oCursor:Refresh(),; // znovunačítanie databázy, refresh datasetu
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* vymazanie riadku - funguje
DCADDBUTTON PARENT oToolbarplb ;
CAPTION 'VYMAŽ';
ACTION {|| ; // neviem čo robí, asi iba číta stavy
oCursor:Delete(),; // znovunačítanie databázy, refresh datasetu
oCursor:UpdateRow(),; // toto asi musí byť
oCursor:skip(),; // ? možno nemusí byť
oCursor:Refresh(),; // refresh
oCursor:gotop(),; // skok na koniec
DC_GETREFRESH(GETLIST),tone(200,1) } // refresh prostredia
* tu už samotné zobrazenie BROWSERom
DCGETOPTIONS ;
AUTORESIZE ;
BUTTONALIGN DCGUI_BUTTONALIGN_CENTER
DCREAD GUI ;
FIT ;
OPTIONS GetOptions ;
BUTTONS DCGUI_BUTTON_EXIT ;
TITLE 'Browsing with SQLexpress - použitý oCursor' ;
EVAL {|o|SetAppWindow(o) ;
}
* SetAppFocus(oBrowse:GetColumn(1));
* zatvorenie cursoru a uvoľnenie pamäti
oCursor:Close()
oCursord:Close()