SystΘmovΘ tabulky - pou₧itφ

V systΘmu jsou r∙znΘ slu₧ebnφ tabulky v nich₧ jsou ulo₧eny definice vÜech tabulek, definice vÜech objekt∙, definovanφ u₧ivatelΘ a dalÜφ d∙le₧itΘ ·daje.

NedoporuΦujeme pracovat p°φmo s t∞mito tabulkami. Pro vytvß°enφ resp. mazßnφ objekt∙ pou₧φvejte v²vojovΘ prost°edφ nebo p°φsluÜnΘ funkce jazyka nebo SQL p°φkazy.

V urΦit²ch konkrΘtnφch p°φpadech vÜak lze n∞kterΘ systΘmovΘ tabulky pou₧φt.

OBJTAB tabulka objekt∙ vÜech aplikacφ (pohledy, dotazy role apod.) - pro Φtenφ i zßpis
TABTAB tabulka tabulek vÜech aplikacφ - pouze pro Φtenφ
USERTAB tabulka u₧ivatel∙ a skupin - pouze pro Φtenφ

N∞kterΘ sloupce systΘmov²ch tabulek, kterΘ lze pou₧φt

JmΘno OBJTAB TABTAB USERTAB Typ V²znam
TAB_NAME -- ano -- CSIString dΘlky 31 znak∙ jmΘno tabulky
OBJ_NAME ano -- -- CSIString dΘlky 31 znak∙ jmΘno objektu
LOGNAME -- -- ano CSIString dΘlky 31 znak∙ jmΘno u₧ivatele nebo skupiny
CATEGORY ano ano ano Char kategorie objektu
APL_UUID ano ano -- Binary dΘlky 12 znak∙ identifikace aplikace
USR_UUID -- -- ano Binary dΘlky 12 znak∙ identifikace u₧ivatele (skupiny)
DEFIN ano ano -- Nospec (OLE) textovß definice objektu

P°φklad: zjistit jmΘna u₧ivatel∙ databßze

╪eÜenφ: polo₧te dotaz

SELECT logname
FROM Usertab
WHERE (Usertab.category=Chr(CATEG_USER))

P°φklad: vybrat objekty pat°φcφ aplikaci "APLIKACE1"

╪eÜenφ: polo₧te postupn∞ dva dotazy

SELECT T2.obj_name,Ord(T2.category)
FROM Objtab T1, Objtab T2
WHERE T1.apl_uuid=T2.apl_uuid
 AND (T1.obj_name="APLIKACE1" AND Ord(T1.category)=CATEG_APPL)

a

SELECT Tabtab.tab_name
FROM Objtab, Tabtab
WHERE Objtab. apl_uuid =Tabtab. apl_uuid
 AND Objtab.obj_name="APLIKACE1"

P°φklad: zjistit ID p°ihlßÜenΘho u₧ivatele

╪eÜenφ:

jmeno := Who_am_I;
if jmeno = "" then jmeno := "ANONYMOUS";
if Find_object(jmeno,CATEG_USER, usernum) then Signalize;
userid := Usertab[usernum].usr_uuid;

P°φklad: naΦφst do aplikace obrßzek

╪eÜenφ:

procedure CopyFile(tb:ttablenum; rec, atr, index, handle:integer; recode:integer);
external "WBPREZEN.DLL" name "old_copy_from_file";

function Open(var filename:string; par : integer) : integer;
external "KERNEL32" name "_lopen";
function CloseF(par : integer) : integer;
external "KERNEL32" name "_lclose";

table
  OBJTAB;
const
  def_atr = 6;   // WinBase od verze 5.0

var
  hfile : integer;
  ss : string[200];
  objnum : short;
begin
  ss := "*.bmp";
  if select_file(0,ss) then begin
    hfile := Open(ss,0);
    if not Find_object("newpicture",CATEG_PICT,objnum) then 
     if Delete(objtab,objnum) then Signalize;
    if Insert_object("newpict2",CATEG_PICT,objnum) then Signalize else begin
       CopyFile(Objtab,objnum,def_atr,-1,hfile,0);
       Relist_objects;
    end;
    CloseF(hfile);
  end;
end.
Viz takΘ: Vnit°nφ programovacφ jazyk