1. Připojení a otevření databázové tabulky
Připojením databáze je připojena databáze specifikovaná v konfigurátoru "
Databáze (soubor, složka, zdroj dat)". Připojit databázi lze po spuštění aplikace (konfigurátor "
Při startu" je nastaven na
"Připojit databázi a otevřít tabulku (stejně jako metoda Open)" nebo
"Připojit databázi a NEotevřít tabulku (stejně jako metoda Connect)") nebo kdykoli později voláním metody
PmaDatabase.Connect. Tato operace je rychlejší, než otevření tabulky.
Otevřením tabulky je provedeno výše uvedené připojení databáze a navíc je otevřená tabulka specifikovaná v konfigurátoru "
Tabulka (soubor)". Otevřít tabulku lze po spuštění aplikace (konfigurátor "
Při startu" je nastaven na volbu 'připojit databázi a otevřít tabulku') nebo kdykoli později voláním metody
PmaDatabase.Open. Tato operace je pomalejší, než připojení databáze. Tabulku lze otevřít v módech "pro čtení i zápis", "jen pro čtení", atd., viz například konfigurátor "
Jak otevřít tabulku" (toto ovlivňuje rychlost otevření).
Pomocí konfigurátorů karty "
Databáze" lze definovat tabulku a způsob jejího otevření. Konfigurátor "
Otevřít tabulku pomocí SQL příkazu SELECT" určuje, zda je tabulka otevřena podle zadaného SQL příkazu typu
SELECT, v jiném případě je otevřena přímo podle konfigurátoru "
Tabulka (soubor)".
Způsob zadávání
SQL příkazů závisí na nastavení konfigurátoru "
Technologie":
- pokud je nastaven na
Přístup přes ODBC, pak se zadávají případné
SQL příkazy v syntaxi jazyka SQL té databáze, ke které je objekt
PmaDatabase připojen.
- pokud je nastaven na Přímý přístup k tabulce - DAO, pak je nutno zadat SQL příkazy v syntaxi Microsoft podporované v systému PROMOTIC; odlišnosti jsou minimální - viz dále.
Upozornění!!! - podporovaná implementace SQL se liší od ANSI SQL v syntaxi příkazu Like následovně:
ANSI SQL |
podporovaná implementace SQL |
_ |
? |
% |
* |
a v syntaxi příkazu WHERE v zadávání datumu a času následovně:
ANSI SQL |
podporovaná implementace SQL |
WHERE ... '25 10 2002 12:22:30' ... |
WHERE ... #10 25 2002 12:22:30# ... |
Příklad1:
(Microsoft syntaxe v systému PROMOTIC) výběr všech sloupců v tabulce s názvem "Table", kde hodnoty ve sloupci "column1" jsou v rozsahu 10 - 100.
SELECT * FROM Table WHERE column1 BETWEEN 10 AND 100
Příklad2:
(Microsoft syntaxe v systému PROMOTIC) výběr sloupců "column1" a "column2" v tabulce s názvem "Table", kde hodnoty ve sloupci "column1" jsou větší než 10.
SELECT column1, column2 FROM Table WHERE column1 > 10
Příklad3:
(Microsoft syntaxe v systému PROMOTIC) výběr všech sloupců v tabulce s názvem "Table", kde hodnoty ve sloupci "Time" jsou v daných mezích. Čas je zadán ve formátu: #měsíc den rok hodina:minuta:sekunda#.
SELECT * FROM Table WHERE Time BETWEEN #12 25 2024 23:53:30# AND #12 25 2024 23:55:30#
Příklad4:
(Microsoft syntaxe v systému PROMOTIC) výběr sloupců "column1" a "column2" v tabulce s názvem "Table", kde hodnoty ve sloupci "column1", který je typu String, začínají znakem "A" až "D".
SELECT column1, column2 FROM Table WHERE column1 LIKE '[A-D]*'
Příklad5:
(Microsoft syntaxe v systému PROMOTIC) výběr všech sloupců v tabulce s názvem "Table", kde hodnoty ve sloupci "Time" jsou v daných mezích a jsou setříděny podle tohoto sloupce. Čas je zadán ve formátu: #měsíc den rok hodina:minuta:sekunda#.
SELECT * FROM Table WHERE Time BETWEEN #12 25 2024 23:53:30# AND #12 25 2024 23:55:30# ORDER BY Time
2. Práce s tabulkou
Pokud databáze je jen připojena, pak lze s připojenou databází pracovat pomocí příkazů jazyka SQL (metody
PmaDatabase.Execute,
PmaDatabase.ExecuteSQL) a lze použít metody
ExistTable,
DeleteTable,
Create,
CreateField,
CreateIndex,
CreateEnd. Ostatní metody nejsou funkční, protože tabulka není otevřena.
Pokud tabulka je otevřena, pak lze s připojenou databází pracovat pomocí SQL příkazů a navíc jsou funkční všechny ostatní metody.
Ukazovátko (aktuální pozice) jednoznačně určuje záznam tabulky, se kterým budou pracovat metody objektu
PmaDatabase.
Pokud není nastaveno, pak metody pracující nad záznamem tabulky skončí chybou.
Pokud je například potřeba do určitého záznamu zapsat hodnotu, pak je nutno nejprve přesunout ukazovátko na daný záznam a poté lze do tohoto záznamu zapsat.
Upozornění! - po otevření tabulky není ukazovátko inicializováno (pokud není ukazovátko platné, pak metody pro čtení i zápis selžou).
Ukazovátko tabulky je přesunováno voláním metody
PmaDatabase.Move,
PmaDatabase.MoveTo, atd. nebo
PmaDatabase.FindFirst, atd.
Testy, zda ukazovátko je na začátku nebo na konci tabulky, lze provádět pomocí metod
PmaDatabase.IsBOF,
PmaDatabase.IsEOF.
Číst hodnotu z tabulky lze metodou
ReadFieldValue. Zapisovat hodnotu do tabulky lze metodou
WriteFieldValue nebo metodou
PmaDatabase.SetRecordValueNull. Pokud je nutno zapsat do záznamu pouze jednu hodnotu, pak se zavolá přímo metoda
PmaDatabase.WriteFieldValue (
PmaDatabase.SetRecordValueNull). Pokud je nutno do záznamu tabulky zapisovat více hodnot, pak je lepší a rychlejší zvolit následující postup:
Přidat prázdnou větu lze metodou
PmaDatabase.AddNew. K přidání inicializovaného záznamu lze použít metodu
PmaDatabase.Add:
K smazání záznamu lze použít metodu
PmaDatabase.Delete. K vyhledávání záznamu v tabulce lze použít metodu
PmaDatabase.FindFirst, … (tyto metody nejsou funkční, pokud konfigurátor "
Technologie" je nastaven na
Přístup přes ODBC).
Také se může s tabulkou pracovat pomocí
transakčního zpracování. Transakční zpracování je dávkové zpracování (dávka příkazu je provedena buď celá nebo není provedena vůbec). Princip je následující. Nejprve se zavolá metoda
PmaDatabase.BeginTrans. Od tohoto okamžiku jsou hlídány všechny operace modifikující danou databázi a tabulku. Teprve po volání metody
PmaDatabase.Commit jsou všechny změny, provedené od předchozího volání metody
PmaDatabase.BeginTrans, zplatněny. Pokud k volání metody
PmaDatabase.Commit nedojde (např. z důvodu ukončení běžící aplikace, výpadku napětí - reset nebo zavolání metody
PmaDatabase.Close), pak všechny změny provedené po předchozím
PmaDatabase.BeginTrans nebudou provedeny. Při transakčním zpracování lze použít metodu
PmaDatabase.RollBack. Tato metoda vrací veškeré modifikace tabulky do stavu při předchozím volání metody
PmaDatabase.BeginTrans. Pokud je tedy volána metoda
PmaDatabase.BeginTrans pro transakční zpracování, následně budou prováděny libovolné modifikace (byly by zplatněny až po zavolání metody
PmaDatabase.Commit) a zavolá se metoda
PmaDatabase.RollBack, pak k žádné modifikaci databázové tabulky nedojde.
Upozornění: Transakční zpracování nemusí být některými databázemi podporováno, například databáze
Excel,
dBase,
PARADOX, základní verze databáze
MySQL, atd.
Pro hromadné zpracování tabulek lze použít metody
PmaDatabase.Execute a
PmaDatabase.ExecuteSQL.
K zjištění informací o struktuře tabulky lze použít metody
PmaDatabase.GetFieldCount a
PmaDatabase.GetFieldInfo.