Select_records

Internφ programovacφ jazykC/C++Pascal

function Select_records(var viewdef : string; base : tcursnum; flags : short; limit : short; var bindl; hParent : window_id; var hView : window_id) : window_id;
window_id Select_records(const char *viewdef, tcursnum base, uns32 flags, int limit, trecnum *bindl, void *reserved, window_id hParent, window_id *hView);
function Select_records(viewdef : PChar; base : tcursnum; flags : uns32; limit : integer; var bindl; var reserved; hParent : window_id; var hView : window_id) : window_id;

Parametry

viewdef specifikace formulß°e, kter² mß b²t otev°en
base otev°en² kurzor nebo konstanta NO_REDIR
flags viz Parametry otev°enφ formulß°e
limit maximßlnφ poΦet vybran²ch zßznam∙ (Φφslo v∞tÜφ nebo rovno 1)
bindl pole slo₧ek typu trecnum (viz popis nφ₧e)
reserved procedura vyhrazenß pro budoucφ pou₧itφ, zadejte NULL resp. NIL;
hParent identifikace (handle) formulß°e, kter² mß b²t v₧dy pod otevφran²m formulß°em, nebo nula
hView vracφ identifikaci (handle) otev°enΘho formulß°e

Popis

Funkce Select_records slou₧φ k v²b∞ru zßznamu nebo mno₧iny zßznam∙ z tabulky nebo kurzoru. Procedura otev°e na obrazovce formulß° specifikovan² parametrem viewdef p°φpadn∞ p°esm∞rovan² na kurzor zadan² parametrem base (pokud tento nenφ roven NO_REDIR) a umo₧nφ u₧ivateli, aby vybral urΦitΘ zßznamy. Zßznamy se vybφrajφ stejn²m zp∙sobem jako p°i p°ivazovßnφ zßznam∙ k ukazateli (tj. stiskem tlaΦφtka, kterΘ se objevφ v levΘ Φßsti formulß°e). Program se pak m∙₧e dozv∞d∞t absolutnφ Φφsla t∞chto vybran²ch zßznam∙.

VybranΘ zßznamy se zaznamenajφ v poli bindl. PoΦet slo₧ek pole bindl musφ b²t bezpodmφneΦn∞ alespo≥ o 1 v∞tÜφ, ne₧ je hodnota parametru limit. Prvnφ slo₧ka pole bindl obsahuje poΦet vybran²ch zßznam∙, dalÜφ slo₧ky pak obsahujφ Φφsla vybran²ch zßznam∙. ╚φsla vybran²ch zßznam∙ v poli bindl jsou absolutnφmi Φφsly zßznam∙ v kurzoru (tabulce), do n∞ho₧ formulß° vede. P°φpadn² QBE dotaz p°i vybφrßnφ zßznam∙ nemß vliv na hodnotu v poli bindl. ╚φsla zßznam∙ se v tomto p°φpad∞ automaticky p°epoΦφtajφ na p∙vodnφ kurzor.

Obsah pole bindl mß v²znam nejen po, ale i p°ed volßnφm Select_records. Program m∙₧e do pole bindl zapsat Φφsla n∞jak²ch öp°edemö vybran²ch zßznam∙, a musφ do prvnφ slo₧ky pole zapsat jejich poΦet. Pokud ₧ßdnΘ zßznamy nemajφ b²t vybrßny p°edem, je nutno p°ed volßnφm Select_records do prvnφ slo₧ky pole bindl zapsat nulu.

Parametr hParent mß hodnotu jinou ne₧ nula pouze tehdy, pokud si p°ejeme, aby se otevφran² formulß° nemohl ocitnout nikdy pod (d°φve otev°en²m) formulß°em hParent.

Parametrem hView m∙₧e b²t bu∩ konstanta NULL (NIL ve vnit°nφm jazyce, NULL_WINDOW_ID v Pascalu), nebo prom∞nnß. V druhΘm p°φpad∞ funkce zapφÜe do tΘto prom∞nnΘ identifikaci otev°enΘho formulß°e a tuto prom∞nnou si zapamatuje. Jakmile bude formulß° uzav°en, WinBase602 zapφÜe do tΘto prom∞nnΘ nulu. Dφky tomu m∙₧e program snadno zjistit, ₧e u₧ivatel uzav°el n∞kter² formulß°.

Hodnota funkce

Pokud se poda°φ formulß° otev°φt, funkce vracφ jeho identifikaci nebo hodnotu 1, jde-li o modßlnφ formulß°. P°i chyb∞ vracφ nulu.

P°φklad

var
  pole : array[0..10] of trecnum;
  id : window_id;
  i : short;
cursor
  CURS;
begin
Open_cursor(CURS);
pole[0]:=0;
if Select_records('*FORM1', CURS,
    NO_INSERT+NO_DELETE, 10, pole,
    0, id) <> 0 then
  while (id!=0) do Peek_message(MSG) ;
{ Φekßnφ, a₧ u₧ivatel sßm zav°e formulß° }
  for i := 1 to pole[0] do
    CURS[pole[i]].plat := CURS[pole[i]].plat + 1000;
{ ruΦn∞ vybran²m zam∞stnanc∙m se zv²Üφ plat }
Close_cursor(CURS);
end.