13. Seznßmenφ s datov²mi mno╛inami podporujφcφmi BDE

Tato kapitola popisuje spoleΦnΘ slu╛by komponent datov²ch mno╛in, kterΘ pou╛φvajφ BDE pro p°φstup k dat∙m. Podpora BDE je zabudovßna do komponenty TBDEDataSet, kterß je p°φm²m potomkem TDataSet. Dal╣φ slu╛by °φzenφ databßze a sezenφ jsou p°idßny v TDBDataSet, kter² je p°φm²m potomkem TBDEDataSet.

Tato kapitola nßs seznßmφ se slu╛bami datov²ch mno╛in poskytnut²ch TBDEDataSet a TDBDataSet. P°edpoklßdßme p°i tom, ╛e jsme se ji╛ seznßmili s TDataSet. I kdy╛ funkΦnost poskytnutou TBDEDataSet a TDBDataSet musφme pochopit, abychom mohli vyvφjet svΘ vlastnφ datovΘ mno╛iny podporujφcφ BDE, nikdy TBDEDataSet a TDBDataSet nepou╛φvßme ve sv²ch aplikacφch p°φmo. P°φmo pou╛φvßme jejφch p°φmΘ potomky TQuery, TStoredProc a TTable.

┌vod do podpory BDE

Komponenta TBDEDataSet implementuje abstraktnφ metody TDataSet, kterΘ °φdφ navigaci zßznam∙, indexaci a zßlo╛kovßnφ. Je takΘ reimplementovßno mnoho virtußlnφch metod a udßlostφ TDataSet k p°evzetφ v²hod BDE.
P°idßvanΘ specifickΘ slu╛by BDE, spoleΦnΘ pro v╣echny databßze, v TBDEDataSet zavßd∞jφ novΘ vlastnosti, udßlosti a metody pro zpracovßnφ BLOB, odlo╛en²ch aktualizacφ, komunikacφ se vzdßlen²m databßzov²m serverem. TDBDataSet zavßdφ metodu a vlastnosti pro zpracovßnφ databßzov²ch p°ipojenφ a p°i°azovßnφ datov²ch mno╛in k sezenφ BDE. Nßsledujφcφ body popisujφ tyto slu╛by:
Zpracovßnφ p°ipojenφ databßze a sezenφ
Komponenta TDBDataSet zavßdφ nßsledujφcφ vlastnosti a funkce pro prßci s p°ipojenφm databßze a sezenφ.
 
Funkce nebo vlastnost V²znam
Funkce CheckOpen UrΦuje zda databßze je otev°enß. Vracφ true, pokud p°ipojenφ je aktivnφ a false v opaΦnΘm p°φpad∞.
Database Identifikuje komponentu databßze, ke kterΘ je p°i°azenß datovß mno╛ina.
DBHandle Specifikuje madlo databßze BDE pro komponentu databßze specifikovanΘ ve vlastnosti Database. Pou╛φvßme pouze tehdy, kdy╛ p°φmo volßme API BDE.
DBLocale Specifikuje informace o mφst∞ BDE pro komponentu databßze specifikovanΘ ve vlastnosti Database. Pou╛φvßme pouze tehdy, kdy╛ p°φmo volßme API BDE.
DBSession Specifikuje madlo sezenφ BDE pro komponentu sezenφ specifikovanou vlastnostφ SessionName. Pou╛φvßme pouze tehdy, kdy╛ p°φmo volßme API BDE.
DatabaseName Specifikuje p°ezdφvku BDE nebo jmΘno komponenty databßze pro databßzi pou╛itou touto datovou mno╛inou. Pokud datovou mno╛inou je tabulka Paradoxu nebo dBASE, pak DatabaseName m∙╛e b²t ·plnß specifikace souboru tabulky.
SessionName Specifikuje sezenφ ke kterΘmu tato komponenta datovΘ mno╛iny je p°i°azena. Pokud pou╛ijeme komponentu databßze i komponentu sezenφ s datovou mno╛inou, pak nastavenφ SessionName musφ b²t stejnΘ jako vlastnost SessionName komponenty databßze.

Z vlastnostφ databßze a sezenφ TDBDataSet nejΦast∞ji se pou╛φvß DatabaseName a SessionName. Pokud pracujeme s databßzemi na vzdßlenΘm databßzovΘm serveru, jako je Sybase, Oracle nebo InterBase, pak na╣e aplikace obvykle udr╛uje toto p°ipojenφ prost°ednictvφm komponenty TDatabase. Pak nastavφme vlastnost DatabaseName ka╛dΘ datovΘ mno╛iny na jmΘno komponenty databßze, kterß z°izuje databßzovΘ p°ipojenφ pou╛φvanΘ datov²mi mno╛inami. Pokud komponentu databßze nepou╛ijeme, pak DatabaseName musφme nastavit na p°ezdφvku BDE (p°φpadn∞ ·plnou specifikaci souboru pro dBASE nebo Paradox).
SessionName indikuje sezenφ BDE ke kterΘmu je p°i°azena datovß mno╛ina. Pokud ve svΘ aplikaci nepou╛φvßme explicitnφ komponenty sezenφ, pak pro tuto vlastnost nezadßvßme hodnotu. Pokud na╣e aplikace pou╛φvß vφce ne╛ jedno sezenφ, pak nastavφme vlastnost SessionName datovΘ mno╛iny na hodnotu SessionName p°φslu╣nΘ komponenty sezenφ v na╣i aplikaci. Pokud na╣e aplikace pou╛φvß vφce komponent sezenφ a jednu nebo vφce komponent databßze, pak SessionName datovΘ mno╛iny musφ odpovφdat vlastnosti SessionName komponenty databßze ke kterΘ je datovß mno╛ina p°i°azena.
Pokud nßm nevyhovuje zabudovanß funkΦnost BDE v komponentßch datov²ch mno╛in, pak m∙╛eme p°φmo volat API BDE. K tomu pou╛φvßme vlastnosti DBHandle, DBLocale a DBSession. Tyto vlastnosti jsou urΦeny pouze pro Φtenφ a jejich hodnoty jsou automaticky p°i°azeny, kdy╛ datovß mno╛ina je p°ipojena k databßzovΘmu serveru prost°ednictvφm BDE. Tyto vlastnosti jsou poskytnuty jako zdroje pro v²vojß°e aplikacφ kte°φ pot°ebujφ volat funkce BDE p°ebφrajφcφ madla jako parametry. Vφce informacφ o API BDE bude uvedeno v nßsledujφcφ kapitole.

Prßce s komponentou poskytovatele

Pro komponenty datov²ch mno╛in, kterΘ jsou Φßstφ aplikaΦnφho serveru ve vφcevrstvovΘ databßzovΘ aplikaci, TDBDataSet obsahuje vlastnost Proveder. Provider je vlastnost urΦenß pouze pro Φtenφ, kterß ukazuje na rozhranφ IProvider pou╛itΘ klientskou aplikacφ ke komunikaci s datov²mi mno╛inami na aplikaΦnφm serveru. Kdy╛ komponenta poskytovatele specifikuje datovou mno╛inu na aplikaΦnφm serveru ze kterΘho jsou po╛adovßna data a na kter² jsou zasφlßny klientskΘ aktualizace, pak vlastnost Provider datovΘ mno╛iny je automaticky nastavena na rozhranφ IProvider poskytovatele. Komponenty poskytovatele jsou poskytnuty pouze ve verzi Client/Server (TProvider) a Enterprise (TProvider a TEnteraProvider).

Prßce s odlo╛en²mi aktualizacemi

Odlo╛enΘ aktualizace umo╛≥ujφ zφskat data z databßze, ulo╛it a editovat je lokßln∞ a potom aplikovat odlo╛enΘ aktualizace na databßzi jako celek. Kdy╛ jsou povoleny odlo╛enΘ aktualizace, pak aktualizace datovΘ mno╛iny (jako je zasφlßnφ zm∞n nebo ru╣enφ zßznam∙) jsou uklßdßny v internφ vyrovnßvacφ pam∞ti mφsto p°φmΘho zßpisu do p°ipojenΘ tabulky datovΘ mno╛iny. Kdy╛ zm∞ny jsou kompletnφ, pak na╣e aplikace volß metodu, kterß zapφ╣e odlo╛enΘ aktualizace do databßze a vyprßzdnφ vyrovnßvacφ pam∞╗.
Odlo╛enΘ aktualizace jsou implementovßny v TBDEDataSet. Nßsledujφcφ tabulka uvßdφ p°ehled vlastnostφ, udßlostφ a metod pro odlo╛enΘ aktualizace.
 
Vlastnost, udßlost nebo metoda V²znam
Vlastnost CachedUpdates UrΦuje zda pro datovou mno╛inu jsou povoleny odlo╛enΘ aktualizace. P°i true jsou odlo╛enΘ aktualizace povoleny.
Vlastnost UpdateObject Indikuje jmΘno komponenty TUpdateSQL pou╛itΘ k aktualizaci datov²ch mno╛in zalo╛en²ch na dotazech.
Vlastnost UpdatesPending Indikuje zda lokßlnφ vyrovnßvacφ pam∞╗ obsahuje zßznamy, kterΘ je nutno aplikovat na databßzi. true indikuje, ╛e jsou zßznamy k aktualizaci.
Vlastnost UpdateRecordTypes Indikuje typ aktualizovan²ch zßznam∙ v pr∙b∞hu odlo╛en²ch aktualizacφ.
Metoda UpdateStatus Indikuje, zda zßznam je nezm∞n∞n, modifikovßn, vlo╛en nebo zru╣en.
Udßlost OnUpdateError V²vojß°em vytvo°enß procedura, kterß zpracovßvß chyby aktualizace zßznam po zßznamu.
Udßlost OnUpdateRecord V²vojß°em vytvo°enß procedura, kterß zpracovßvß aktualizace zßznam po zßznamu.
Metoda ApplyUpdates Aplikuje zßznamy v lokßlnφ vyrovnßvacφ pam∞ti na databßzi.
Metoda CancelUpdates Odstra≥uje v╣echny nevy°φzenΘ aktualizace z lokßlnφ vyrovnßvacφ pam∞ti bez jejich aplikovßnφ na databßzi.
Metoda CommitUpdates Vyprazd≥uje vyrovnßvacφ pam∞╗ aktualizacφ po ·sp∞╣nΘm aplikovßnφ aktualizacφ.
Metoda FetchAll Kopφruje v╣echny zßznamy databßze do lokßlnφ vyrovnßvacφ pam∞ti pro editovßnφ a aktualizovßnφ.
Metoda RevertRecord Ru╣φ aktualizace souΦasnΘho zßznamu, pokud aktualizace nenφ aplikovßna na serverovΘ stran∞.

Pou╛φvßnφ odlo╛en²ch aktualizacφ a jejich koordinace s ostatnφmi aplikacemi, kterΘ p°istupujφ k dat∙m ve vφceu╛ivatelskΘm prost°edφ, bude popsßna pozd∞ji.

Odklßdßnφ BLOB

TBDEDataSet poskytuje vlastnost CacheBlobs k °φzenφ zda polo╛ky BLOB jsou odklßdßny lokßln∞ BDE, kdy╛ aplikace Φte zßznamy BLOB. Implicitn∞ CacheBlobs je true, co╛ znamenß, ╛e BDE uklßdß lokßlnφ kopii polo╛ek BLOB. Odklßdßnφ BLOB zvy╣uje v²konnost aplikace umo╛n∞nφm BDE uklßdat lokßlnφ kopie BLOB namφsto jejφho opakovanΘho zφskßvßnφ z databßzovΘho serveru podle u╛ivatelova prochßzenφ zßznamy.
V aplikacφch a prost°edφch kde BLOB jsou Φasto aktualizovßny nebo nahrazovßny a Φerstv² pohled na data je d∙le╛it∞j╣φ ne╛ v²kon aplikace, m∙╛eme nastavit CacheBlobs na false k zaji╣t∞nφ toho, aby na╣e aplikace v╛dy vid∞la poslednφ verzi polo╛ky BLOB.
 
13. Seznßmenφ s datov²mi mno╛inami podporujφcφmi BDE