DBFltKeys

( F       : File;
  Typ     : Byte;
  KeyNr   : Word;
  KeyMask : Word;
  Key01   : String[MaxKeyLen];
  Key02   : String[MaxKeyLen];
  Key11   : String[MaxKeyLen];
  Key12   : String[MaxKeyLen];
  Key21   : String[MaxKeyLen];
  Key22   : String[MaxKeyLen];
  Key31   : String[MaxKeyLen];
  Key32   : String[MaxKeyLen];
  Key41   : String[MaxKeyLen];
  Key42   : String[MaxKeyLen];
  Key51   : String[MaxKeyLen];
  Key52   : String[MaxKeyLen];
  Key61   : String[MaxKeyLen];
  Key62   : String[MaxKeyLen];
  Key71   : String[MaxKeyLen];
  Key72   : String[MaxKeyLen];
  Key81   : String[MaxKeyLen];
  Key82   : String[MaxKeyLen];
  Key91   : String[MaxKeyLen];
  Key92   : String[MaxKeyLen];
  Show    : Byte;
  Label )

Touto procedurou lze z uživatelské databáze 'F' vybrat věty, které odpovídají definici v parametru 'Data'. Typ filtru je určen parametrem 'Typ':

  1 = první věta, která splňuje podmínku
  2 = první věta, která nesplňuje podmínku
  3 = všechny věty, které splňují podmínku
  4 = všechny věty, které nesplňují podmínku
  5 = všechny věty, které leží uvnitř intervalu
  6 = všechny věty, které leží vně intervalu

'KeyNr' je číslo řídicího indexu, podle kterého bude probíhat krokování. 'KeyMask' je maska definující použité klíče:

  $0001 = klíč 1 (Ident)
  $0002 = klíč 2
  $0004 = klíč 3
  $0008 = klíč 4
  $0010 = klíč 5

V parametrech 'Key01' až 'Key92' jsou uloženy klíče potřebné k filtrování. Klíče musí být uloženy ve správném pořadí. Namísto nepoužitých klíčů se zapíše pouze znak prázdného řetězce "":
  DBFltKeys(PohDBF, 3, 6, $0020,
      "",                        "",
      "",                        "",
      "",                        "",
      "",                        "",
      "",                        "",
      KeyStr,                    "",
      "",                        "",
      "",                        "",
      "",                        "",
      "",                        "",
      True, ValidRec);

Jestliže 'Typ' = 5 nebo 6, zapisuje se do dat spodní a horní mez filtru pro každý klíč:
  DBFltKeys(DBF, 5, 3, $0004,
      "",                        "",
      "",                        "",
      KeyStrLo,                  KeyStrHi,
      "",                        "",
      "",                        "",
      "",                        "",
      "",                        "",
      "",                        "",
      "",                        "",
      "",                        "",
      True, ValidRec);

Bude-li parametr 'Show' = True(1), bude zobrazena časová osa práce programu. 'Label' je podprogram, který bude volán v případě platnosti věty. Před jeho zavoláním uloží program procedurou SetResult nalezenou větu, procedurou SetIResult(1) atribut věty, procedurou SetLIResult(1) Ident věty, a procedurou SetLIResult(2) uloží fyzické umístění věty na disku (RefNr).

Podívejte se na:Uživatelské databáze

Příklad:

dim F : File;
dim W : Word;
dim Record : String;
dim S10 : String[10;

Vytvoření testovací databáze --
DBRewrite(F, "TEST."+dtaExt, 1,10)
if _DBResult // 0 then Exit endif
for W := 1 to 50 do
  S10 := "TEST"+_Str(W:3);
 StrPut(Record, S10, W, S10)
 DBAdd(F, Record)
end
WInit(10, 1,1,80,22, "", winMove, 0); WOpen(10);
Zobraz všechny věty mající klíč v rozsahu 'TEST 4'..'TEST 9'
DBFltKeys(DBF, 5, 2, $0004,
  "",             "",
  "TEST 4",       "TEST 9",
  "",             "",
  "",             "",
  "",             "",
  "",             "",
  "",             "",
  "",             "",
  "",             "", 
  "",             "",
  True, Filter);
Wait
Exit
Filter:
  PrintLn(_GetResult)
return