_SetFilter

(    DBType : Byte;
     Filter : String) : String

Nastaví podmínku Filter pro tabulku DBType. Filter je textový řetězec, odpovídající SQL klauzuli WHERE . Funkce vrací předchozí nastavený filter.

Nastavení předchozího filteru při ukončení makra se NEPROVÁDÍ. Nastavením filtru se provede výběr vět z databáze všem, kdo s databází pracují.

Funkce _SetFilter se obvykle používá ve spojení s funkcí _MakeFilter, která vytvoří jednotlivé části SQL dotazu, aniž by bylo potřeba znát přesné znění jmen slouců v tabulkách.

Používání funkce _SetFilter pro procházení omezené množiny řádků nejaké tabulky je nejefektivnější metodou.

Jestliže chcete použít DB browser a v něm vidět pouze omezený počet vět, je funkce _SetFilter jedinou možností, jak to udělat.

Jak efektivně používat SQL dotazy v makrojazyku

Podívejte se na: Databázové makrofunkce

Příklad:

StepIdx(dbtGrp, grpVaha);
_SetFilter(dbtGrp, _MakeFilter(dbtGrp, grpSkup, filterEqual, 900));
if _StartDB(dbtGrp) then
  repeat
    Trace(_Grp[grpText]);
  until _StepRec(dbtGrp, 1) = False;
endif
_SetFilter(dbtGrp, "");  { Vložíme default filter }

Příklad:

dim ActPeriod : LongInt;

ActPeriod := _Shl(Rok,16) lor Mes;

StepIdx(dbtDNP, dnpDatStart);
_SetFilter(dbtDNP, 
           _MakeFilter(dbtDNP, dnpObdobi, filterEqual, ActPeriod) + " AND " +
           _MakeFilter(dbtDNP, dnpPrac, filterEqual, O[dbIdent]) + " AND " +
           _MakeFilter(dbtDNP, dnpTyp, filterEqual, cDNP_DB_TYPE_PodDOb));
if _StartDB(dbtDNP) then
  repeat
    ...
  until _StepRec(dbtDNP, 1) = false;
endif
_SetFilter(dbtDNP, "");