Translate

Internφ programovacφ jazykC/C++Pascal

function Translate(var curs : tcursnum; crec : trecnum; tbord : short; var trec : trecnum) : Boolean;
BOOL [cd_]Translate([cdp_t cdp], tcursnum curs, trecnum crec, int tbord, trecnum * trec);
function [cd_]Translate([cdp : cdp_t]; var curs : tcursnum; crec : trecnum; tbord : integer; var trec : trecnum) : Boolean;

Parametry

curs otev°en² pevn² nebo prom∞nn² kurzor - viz podrobnosti
crec absolutnφ Φφslo zßznamu v kurzoru curs
tbord po°adovΘ Φφslo tabulky v kurzoru curs (poΦφtßno od 0)
trec vracφ absolutnφ Φφslo zßznamu v tabulce, z n∞ho₧ vznikl zßznam crec
[cdp kontextovß prom∞nnß klienta]

Popis

Funkce konvertuje Φφslo crec zßznamu z otev°enΘho editovatelnΘho kurzoru curs na absolutnφ Φφslo tΘho₧ zßznamu v tabulce, z nφ₧ jsou zßznamy do kurzoru vybrßny; tbord je po°adovΘ Φφslo tabulky v kurzoru (v klauzuli FROM). Tabulky se Φφslujφ od nuly.

Je-li curs Φφslo tabulky (m∙₧e se stßt, je-li pro zφskßnφ Φφsla curs pou₧ita funkce Get_fcursor, kterß vracφ Φφslo tabulky nebo kurzoru), funkce Translate oznßmφ chybu èpatnΘ Φφslo kurzoru.

Funkci Translate mß smysl a lze pou₧φvat pouze na editovatelnΘ kurzory.

Hodnota funkce

Funkce vracφ hodnotu FALSE, pokud se akci poda°ilo ·sp∞Ün∞ provΘst. V opaΦnΘm p°φpad∞ vracφ TRUE a povahu chyby lze zjistit volßnφm funkce Signalize.

P°φklad 1:

procedure Detail(idf : window_id; rec : integer);
{*******************************************}
{tlaΦφtko ve formulß°i PrehledSch - programovΘ otev°enφ dalÜφho formulß°e na stejn² zßznam - volßno s parametry Detail(!!,@);
1. zjiÜt∞nφ Φφsla zdroje dat v prvnφm formulß°i
2. p°epoΦet Φφsla aktußlnφho zßznamu na na Φφslo zßznamu ve zdrojovΘ tabulce
3. otev°φt druh² formulß° (kter² vede do tabulky) na tomto zßznamu }
var
  cx : cursor;
begin
  if Get_fcursor(idf,cx,nil) then     //form. idf vede do kurzoru, lze p°epoΦφtat
    if not Translate(cx,rec,1,cislof) then begin // p°epoΦet 
      if id=0 then Open_view('*Pfirma',no_redir,0,-cislof,0,id) //otev°φt form. vedoucφ do tabulky na tomto zßznamu
      else begin
        Set_ext_pos(id, cislof, -1); //je-li ji₧ formulß° ji₧ otev°en, pouze nastavit pozici
        Pick_window(id);
      end;  
    end;
end;

P°φklad 2:

{zjist∞te Φφslo zßznamu v tabulce, kter² vyhovuje podmφnce "atr=55"}
var cislo : trecnum;
    c1    : cursor;
begin
 if Open_sql_cursor(c1, 'select atr1 from tab1 where atr=55') then Signalize
else
  if Translate(c1, 0, 0, cislo) then Signalize
  else Info_box('╚φslo v tab1', int2str(cislo));
end.

Viz