3. Příkazy A–Z
APPEND BLANK
Syntaxe: APPEND BLANK
Přidá nový prázdný záznam do aktuálně vybrané tabulky.
USE zakaznici IN 0 ALIAS zakaznici
SELECT zakaznici
APPEND BLANK
REPLACE jmeno WITH "Jan Novák", mesto WITH "Kolín"
BROWSE
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
BROWSE
Syntaxe: BROWSE [FIELDS seznam] [FOR podmínka]
Otevře interaktivní tabulkové zobrazení aktuálního aliasu.
USE zakaznici
BROWSE FIELDS id, jmeno, mesto FOR aktivni = .T.
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
DELETE
Syntaxe: DELETE [FOR podmínka]
Označí záznamy jako smazané. Fyzické odstranění provádí PACK.
USE zakaznici EXCLUSIVE
DELETE FOR aktivni = .F.
SET DELETED ON
* PACK fyzicky odstraní označené záznamy
PACK
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
GO / GOTO
Syntaxe: GO TOP | GO BOTTOM | GO n
Přesune ukazatel záznamu.
USE zakaznici
GO TOP
? RECNO(), jmeno
GO BOTTOM
? RECNO(), jmeno
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
INDEX ON
Syntaxe: INDEX ON výraz TAG jméno
Vytvoří indexový tag v CDX souboru.
USE zakaznici EXCLUSIVE
INDEX ON UPPER(jmeno) TAG jmeno
SET ORDER TO TAG jmeno
SEEK "NOVÁK"
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
LOCATE
Syntaxe: LOCATE FOR podmínka
Vyhledá první záznam splňující podmínku; další lze hledat CONTINUE.
USE zakaznici
LOCATE FOR UPPER(mesto) == "KOLÍN"
IF FOUND()
? jmeno
ENDIF
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
REPLACE
Syntaxe: REPLACE pole WITH výraz [FOR podmínka]
Změní hodnotu jednoho nebo více polí.
USE zakaznici
REPLACE aktivni WITH .F. FOR posledni_nakup < DATE()-365
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
SCAN
Syntaxe: SCAN [FOR podmínka] ... ENDSCAN
Prochází záznamy aktuální tabulky.
USE objednavky
SCAN FOR stav == "NOVÁ"
? id, datum, castka
ENDSCAN
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
SELECT
Syntaxe: SELECT alias | SELECT n
Změní aktuální pracovní oblast nebo alias.
USE zakaznici IN 0 ALIAS zak
USE objednavky IN 0 ALIAS obj
SELECT zak
? ALIAS()
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
SEEK
Syntaxe: SEEK výraz
Rychle hledá hodnotu v aktivním indexu.
USE zakaznici
SET ORDER TO TAG prijmeni
IF SEEK("NOVÁK")
? jmeno, prijmeni
ENDIF
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
SET DELETED
Syntaxe: SET DELETED ON | OFF
Určuje, zda mají být záznamy označené jako smazané skryté.
SET DELETED ON
USE zakaznici
BROWSE
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
SET EXACT
Syntaxe: SET EXACT ON | OFF
Řídí některá porovnání řetězců. Pro přesné porovnání je často vhodnější operátor ==.
SET EXACT OFF
? "ABC" = "AB" && může záviset na nastavení
? "ABC" == "AB" && .F.
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
SET ORDER
Syntaxe: SET ORDER TO [TAG název]
Volí aktivní indexové pořadí.
USE zakaznici
SET ORDER TO TAG mesto
GO TOP
BROWSE
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
USE
Syntaxe: USE tabulka [IN oblast] [ALIAS alias] [EXCLUSIVE | SHARED]
Otevře DBF tabulku.
USE data\zakaznici.dbf IN 0 SHARED ALIAS zak
SELECT zak
? RECCOUNT()
Doporučení: Před hromadnou změnou dat pracujte se zálohou a ověřte aktuální alias pomocí ALIAS().
4. Funkce A–Z
ALLTRIM()
Syntaxe: ALLTRIM(cText)
Odstraní mezery z levého i pravého okraje řetězce.
lcJmeno = " Pavel Říha "
? ALLTRIM(lcJmeno)
AT()
Syntaxe: AT(cHledat, cText [, nVýskyt])
Vrátí pozici hledaného textu; rozlišuje velikost písmen.
? AT("@", "info@example.cz") && 5
ATC()
Syntaxe: ATC(cHledat, cText [, nVýskyt])
Jako AT(), ale bez rozlišení velikosti písmen.
? ATC("fox", "Visual FOXPro")
BETWEEN()
Syntaxe: BETWEEN(eVýraz, eDolní, eHorní)
Testuje, zda hodnota leží včetně mezí v intervalu.
lnVek = 45
? BETWEEN(lnVek, 18, 65)
CTOD()
Syntaxe: CTOD(cDatum)
Převede znakový řetězec na datum podle aktuálního SET DATE.
SET DATE GERMAN
ldDatum = CTOD("08.08.2026")
? ldDatum
DATE()
Syntaxe: DATE()
Vrátí aktuální systémové datum.
? DATE()
? DATE() + 7
DATETIME()
Syntaxe: DATETIME()
Vrátí aktuální datum a čas.
ltNow = DATETIME()
? ltNow
DTOC()
Syntaxe: DTOC(dDatum [, 1])
Převede datum na znakový řetězec.
? DTOC(DATE())
DTOS()
Syntaxe: DTOS(dDatum)
Převede datum na řetězec YYYYMMDD; vhodné například pro indexy.
? DTOS(DATE())
EMPTY()
Syntaxe: EMPTY(eVýraz)
Testuje prázdnou nebo nulovou hodnotu podle datového typu.
lcText = ""
? EMPTY(lcText)
FILE()
Syntaxe: FILE(cSoubor)
Zjistí, zda soubor existuje.
IF FILE("data\zakaznici.dbf")
USE data\zakaznici
ENDIF
FOUND()
Syntaxe: FOUND([nOblast | cAlias])
Vrátí, zda poslední LOCATE/SEEK nalezl záznam.
LOCATE FOR id = 100
IF FOUND()
? "Nalezeno"
ENDIF
IIF()
Syntaxe: IIF(lPodmínka, eAno, eNe)
Vrátí jednu ze dvou hodnot podle podmínky.
lnCena = 1200
? IIF(lnCena > 1000, "dražší", "levnější")
LEN()
Syntaxe: LEN(cText)
Vrátí délku řetězce.
? LEN("FoxPro") && 6
LOWER()
Syntaxe: LOWER(cText)
Převede text na malá písmena.
? LOWER("FOXPRO 9")
RECNO()
Syntaxe: RECNO([alias])
Vrátí číslo aktuálního záznamu.
USE zakaznici
GO TOP
? RECNO()
RECCOUNT()
Syntaxe: RECCOUNT([alias])
Vrátí počet fyzických záznamů tabulky.
USE zakaznici
? RECCOUNT()
STR()
Syntaxe: STR(nČíslo [, nDélka [, nDesetinných]])
Převede číslo na řetězec.
lnCena = 1234.5
? STR(lnCena, 10, 2)
SUBSTR()
Syntaxe: SUBSTR(cText, nStart [, nPočet])
Vrátí část řetězce.
? SUBSTR("Visual FoxPro", 8, 6) && FoxPro
TRANSFORM()
Syntaxe: TRANSFORM(eVýraz [, cFormát])
Převede hodnotu na text, volitelně podle formátovací masky.
lnCena = 1234.5
? TRANSFORM(lnCena, "9 999.99")
TYPE()
Syntaxe: TYPE(cVýraz)
Vrací znak popisující typ vyhodnoceného výrazu.
lnX = 10
? TYPE("lnX") && N
UPPER()
Syntaxe: UPPER(cText)
Převede text na velká písmena.
? UPPER("Visual FoxPro")
VAL()
Syntaxe: VAL(cText)
Převede číselný text na číslo.
? VAL("123.45") + 1
5. DBF, CDX a FPT
DBF obsahuje tabulková data, CDX indexy a FPT memo/bloková pole.
Vytvoření tabulky
CREATE TABLE zakaznici ;
(id I AUTOINC NEXTVALUE 1 STEP 1, ;
jmeno C(50), ;
email C(100), ;
datum_reg D, ;
aktivni L)
INDEX ON UPPER(jmeno) TAG jmeno
INDEX ON id TAG id CANDIDATE
Vložení dat
INSERT INTO zakaznici (jmeno, email, datum_reg, aktivni) ;
VALUES ("Jan Novák", "jan@example.cz", DATE(), .T.)
Bezpečná aktualizace
BEGIN TRANSACTION
TRY
UPDATE zakaznici SET aktivni = .F. ;
WHERE datum_reg < DATE()-730
END TRANSACTION
CATCH TO loEx
ROLLBACK
MESSAGEBOX(loEx.Message, 16, "Chyba")
ENDTRY
Pozor: DELETE pouze označuje záznamy. PACK je fyzicky odstraní a obvykle vyžaduje výhradní otevření tabulky.
6. SQL ve Visual FoxPro
SELECT
SELECT id, jmeno, email ;
FROM zakaznici ;
WHERE aktivni = .T. ;
ORDER BY jmeno ;
INTO CURSOR curAktivni READWRITE
BROWSE
JOIN
SELECT z.jmeno, o.id AS objednavka, o.castka ;
FROM zakaznici z ;
JOIN objednavky o ON o.zakaznik_id = z.id ;
WHERE o.castka > 1000 ;
INTO CURSOR curPrehled
GROUP BY
SELECT zakaznik_id, COUNT(*) AS pocet, SUM(castka) AS suma ;
FROM objednavky ;
GROUP BY zakaznik_id ;
INTO CURSOR curSouhrn
INSERT / UPDATE / DELETE
INSERT INTO zakaznici (jmeno, aktivni) VALUES ("Eva Malá", .T.)
UPDATE zakaznici SET aktivni = .F. WHERE id = 15
DELETE FROM zakaznici WHERE id = 15
13. Kompletní praktický příklad – jednoduchá evidence
CLEAR
CLOSE DATABASES ALL
SET DELETED ON
SET SAFETY OFF
IF !FILE("zakaznici.dbf")
CREATE TABLE zakaznici ;
(id I AUTOINC NEXTVALUE 1 STEP 1, ;
jmeno C(50), ;
email C(100), ;
mesto C(40), ;
aktivni L)
INDEX ON UPPER(jmeno) TAG jmeno
ENDIF
USE zakaznici IN 0 SHARED ALIAS zak
SELECT zak
IF RECCOUNT() = 0
INSERT INTO zak (jmeno,email,mesto,aktivni) ;
VALUES ("Jan Novák","jan@example.cz","Kolín",.T.)
INSERT INTO zak (jmeno,email,mesto,aktivni) ;
VALUES ("Eva Malá","eva@example.cz","Praha",.T.)
ENDIF
SELECT id, jmeno, email, mesto ;
FROM zak ;
WHERE aktivni ;
ORDER BY jmeno ;
INTO CURSOR curSeznam
BROWSE NORMAL NOWAIT
RETURN
Co příklad ukazuje
- kontrolu existence tabulky,
- vytvoření DBF a indexu,
- INSERT INTO,
- SELECT ... INTO CURSOR,
- práci s aliasem,
- zobrazení dat pomocí BROWSE.