_MakeFilter

(    DBType : Word;
     Index  : Word;
     Cond   : Word; 
     Data   : ...) : String

Funkce vytváří jednotlivé části SQL dotazu pro tabulku DBType, aniž by bylo potřeba znát přesné znění jmen slouců v tabulkách. Používá se ve spojení s funkcí nastavující SQL podmínku _SetFilter .

Index je číslo sloupce v tabulce.  Jedná se o konstantu běžně používanou v makrojazyku (dnpObdobi, grpVaha, atd.).

Cond je kód podmínky, kterou funkce do výrazu vloží:

filterEqual sloupec = hodnota
filterBigger sloupec > hodnota
fitlerSmaller sloupec < hodnota
filterBiggerEqual sloupec >= hodnota
filterSmallerEqual sloupec <= hodnota

Parametr Data budou vložena do výrazu jako parametr. Jestliže použijete číslo, bude vloženo číslo. Jestliže použijete řetězec, bude vložen řetězec v apostrofech.

Funkce vytvoří řetězec SQL podmínky, ve tvaru:

"[tabulka].[sloupec]    podmínka    hodnota".

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, "");