Superbáze Professional - díl 4.Martin Dufek
Nuž tedy, opět je tu Superbase Professional. Právě máte před sebou další část
"nekonečného" seriálu o práci v tomto databázovém programu. Předcházející díl
Vám snad docela podrobně předvedl možnosti QUERY PROCESŮ a dnes budeme
pokračovat. Ukážeme si UPDATE PROCESSy se vším co k nim patří a také se dozvíte
jakym způsobem je u SBpro vyřešeno ukládání dat a databázových souborů na disk.
Vymazání záznamu
Každý, kdo již pracoval s počítačem, určitě potřeboval něco vymazat.
Třebaže, jste to při tomto kurzu práce v Superbázi snad ještě nepotřebovali,
určitě taková situace dříve či později nastane a tak si na jednom záznamu
ukážeme jak na to - jak ho smazat!!! Někdo by si mohl domnívat, že je potřeba
nějakou osobu zrušit z našeho adresáře. Záznam s číslem 3, pan Václav P. nám
(nebo Vám) stejně nic nedluží, takže pryč s ním. Nalezněte si tento záznam a
skočte do menu "Edit - Cut" (pravá Amiga + X). Daný záznam jste "jakoby vyřízli"
z naší databáze. Pokud ale chcete vymazat více záznamů, je lepší využít "Process
Remove...", o které se dočtete trochu níže.
No a když už jsme si nějaký záznam smazali, co takhle si také jeden doplnit -
pochopitelně jen v rámci procvičení, protože to už musí každý perfektně umět.
Menu "Record - New" a zadejte jméno: HAJNY Michal, Sokolovska 85, 540 00
Trutnov. Nyní stiskněte pravou Amiga klávesu a "S" nebo to proveďte z menu.
Při jakékoliv práci s daty je potřeba občas něco zaktualizovat (změnit datumy,
připočítat úroky, zvýšit ceny, odečíst daně, opravit či doplnit zprávy...). A
právě k tomu slouží v Superbázi funkce "Process update". Jak si nejlépe předvést
její možnosti? Třeba vypočteme v našem adresáři úrok z pohledávek. Doufám, že
svůj soubor již máte dávno otevřen včetně správně zadaného hesla i pro mazání
(to bylo tuším "atlantida"). Do pole "Castka" by jsme sice mohli jednoduše
přičíst třeba 15% úrok z pohledávané sumy, ale domnívám se, že bude mnohem
zajímavější vytvořit nové pole a do něj zapsat jen úrok. Zároveň si tak můžeme
ukázat jak se provádí změna struktury databázového souboru.
Modify File
Nejprve tedy přidáme do struktury našeho adresáře numerickou položku "Urok".
V menu "Project" zvolte "Modify - File..." (pravá Amiga + M) a otevře se pro Vás
již jistě známé okno "File definition". Dole do podlouhlého okénka napravo od
slova "Field" (to by jste již měli znát od prvního dílu tohoto seriálu) napište
jméno nového pole "Urok", klikněte na gadget "Numeric" (číselný formát -
nadefinujte stejný, jako je u pole nazvaného "Castka"). Nakonec klikněte na
"Add", zkontrolujte, zda jste vše zadali správně a název nového pole je přidán
na konci seznamu, a klikněte na "OK". Superbase se Vás ještě zeptá, zda se má
definice souboru uložit - potvrďte tedy opět "OK". Takto jste pozměnili
strukturu databázového souboru a uložili ji na disk.
Pokud jste vše zadávali správně, měly by být všechny názvy polí, včetně toho
nově dodefinovaného, nyní zobrazeny. Nově vytvořené pole "Urok" by nemělo
obsahovat vůbec nic - nehledě na numerickou strukturu. A tak si ukážeme jak ho
zaktualizovat, aby tam byla alespoň nula.
Process UPDATE
Pochopitelně, že zde využijeme možností procesu "Update" (vždyť právě proto
to děláme). V menu "Process" naleznete hned pod "Query" další položku - "Update"
a zvolte "Edit..." (v budoucnosti Vám může postačit klávesová zkratka pravá
Amiga + U). Otevře se okno "Update filter" (i to je Vám již dobře známé,
filtrové okno jako každé jiné), kde máte zadat podmínku, pro které záznamy má
aktualizace proběhnout. V tomto případě chceme zaktualizovat vše, takže nic
nepište a rovnou klikněte na , "OK". Hned se objeví další okno - "Update
fields". Zde musíte udat co a jak změnit. Zadávání je podobné jako u filtrů
(nebo kdekoliv jinde; viz. předcházející díly), ale musíte vytvořit takový
vzorec. Klikněte na název našeho dodefinovávaného pole (zřejmě budete muset
použít posuvnou lištu, aby jste ho uviděli v dolní části okénka) a v dolním
podlouhlém zadávacím okénku se objeví text "Urok.ADRESAR = ". Chápejte to jako
přiřazení, v tomto případě ještě dopište číslici nula (třeba do okénka vedle
"Value") a stiskněte Enter. Počítač bude chvíli pracovat a v každém záznamu
doplní do daného pole hodnotu "0", ale protože se jedná o numerickou položku
nakonfigurovanou jako peněžní měna, bude tam rovnou tohle: "0,00 Kč".A hned
další příklad. Trochu si přivyděláme a naúčtujeme každému úrok ve výši 15% (pro
vysvětlení: tomu se říká lichvářství). Znovu vyvolejte "Process update" (pravá
Amiga + U), do filtru znovu nic nezadávejte, jen klikněte "OK" a nyní naklapejte
vzorec pro aktualizaci. Nejprve se rozpomeňte na základní školu ... jak se
počítají procenta? "Tak to se vezme základ, vydělí stem a vynásobí požadovaným
počtem procent." Pro nás to znamená, že do pole "Urok" přiřadíme pole "Castka" /
100 * 15. Klikněte tedy nejprve na jméno "Urok", poté na gadget "(" (asi bude
lepší a přehlednější zapsat podíl do závorek), dále jméno "Castka", gadget "/",
napište "100" (pochopitelně bez uvozovek), další gadgety ")", *" a nakonec ještě
napište "15" a Enter. Tak .co, zvládli jste to? Nyní tedy ještě klikněte na "OK"
a vyčkejte co se bude dít. Pokud jste opět postupovali přesně dle pokynů a
provedli je správně, vše by mělo být zaktualizováno a úrok uložen na svém místě.
Ještě si to zkontrolujte: pan Novák (10.000,- =>1.500,-), pan Breburda (5.000,-
=> 750,-) atd. Snad máte někde doma kalkulačku.
Ale dnes máte také dobrou náladu a proto se rozhodnete všem osobám, kterým jste
půjčili peníze v listopadu 1994, slevit na úroku jednotnou částku 500,- Kč.
Takže opět zvolte "Process Update", do "Update filtr" zadejte pouze listopad
1994 (i tohle by jste měli již dávno umět). Filtrovací podmínka by měla vypadat
asi takto:
Datum.ADRESAR >= "01.11.94" AND Datum.ADRESAR <= "30.11.94"
a v okně "Update fields" zase zadejte:
Urok.ADRESAR = Urok.ADRESAR - 500
No a teď se schválně podívejte co se stalo. Třeba pan Andonov Vám dlužil jen tak
nízkou částku, že úrok z ní nepřekročil oněch 500,- Kč (stejně tak i pánové
Jakoubek a Kozel), a Vy jste se tam takto dostali do minusu. To jako správní
"podnikatelé" nemůžete absolutně dopustit. Vždyť, kdyby se to vzalo logicky, tak
by jste nyní Vy dlužili jim, a to nelze, to se musí nějak odstranit. Nuž co,
vytvoříme další aktualizaci dat a všude, kde se úrok dostal do minusu ho
vynulujeme.
Do oken "Update filter" musíte zadat podmínku
Urok.ADRESAR < 0
a do "Update fields":
Urok.ADRESAR = 0
Pro oddělování jednotlivých vzorců (přiřazení) na jednom řádku se používá znak
":" (dvojtečka). Myslím, že to by už kolem aktualizací mohlo stačit, snad jste
to pochopili a víte jak se dají používat a různě kombinovat. Tak už jen
poslední, závěrečná akce, kde všechno pomažem, změníme atd. Pochopitelně si
ještě jednou a naposled zvolte "Process - Update Edit...", filtr nechte prázdný
(všechny záznamy).
A nyní co provedeme:
1. Do "Poznámky" vložit "Každý si půjčil 1.000,- Kč"
Poznamka.ADRESAR = "Každý si půjčil 1.000,- Kč"
2. Vložit dnešní datum (TODAY)
Datum.ADRESAR = TODAY
3. K částce přičíst 1.000,- Kč
Castka.ADRESAR = Castka.ADRESAR + 1000
4. Přepočítat úrok, nyní pouze 5%
Urok.ADRESAR (Castka.ADRESAR / 100) * 5
Pochopitelně, že to lze udělat postupně na čtyři kroky, nebo vše zadejte do
jednoho řádku a nezapomeňte oddělit dvojtečkou.
Stejně tak jako Query lze i vytvořené (nadefinované) Update uložit na disk.
Pokud jste si minule uložili Query Process "Výpis dlužníků a celkový součet
pohledávek", můžete ho v této chvíli použít, upravit pro současné potřeby a
porovnat změny.
Process REMOVE
Pomocí této volby můžete vybrat všechny nebo jen některé záznamy a vymazat
je. V menu "Process zvolte položku "Remove...". Objeví se okno "Remove records
filter", klasické filtrovací okno Superbáze, kam musíte definovat podmínky,
podle kterých se budou vybírat záznamy k odstranění. Opět se jedná o filtr jako
každý jiný. Jestliže nestanovíte žádnou podmínku, vymažou se všechny záznamy.
Pokud ji ovšem zvolíte, budou vymazány pouze záznamy danou podmínku splňující.
Na tomto souboru v tuto chvíli to raději nezkoušejte.
REORGANIZE
Každý databázový program se chová skoro jako člověk (a člověk je zvíře), čím
déle se někde nachází tím větší je kolem něj nepořádek. A tak je potřeba občas
uklidit. A přesně tak funguje i Superbase.
Když pracujete se záznamy, je potřeba občas nějaký vymazat, jiný přidat, další
zkopírovat atd. Co se při těchto akcích přesně děje v databázovým souborech
vysvětlím snad někdy jindy, protože to souvisí s jejich strukturou. Pro Vás je v
tuto chvíli důležité, že takto vznikají místa zaujímající zbytečně paměť a
zpomalující práci, která je nutno odstranit (uklidit). A právě proto tady je
reorganizace, která na disku vytvoří zcela nový "uklizený° soubor.
Superbáze přitom vytváří další soubor na základě informací z původního. Proto
musíte zadat i název nového souboru, který nesmí být totožný se starým (pokud
není umístěn do jiného adresáře), protože SBpro není schopna do jednoho
databázového souboru současně zapisovat a číst z něj. Druhou možností použití
Reorganizace je oprava poškozeného souboru, nekompletních datových vět atd.
Proto někdy program oznámí, že se změnil počet záznamů v souboru, protože
některý byl třeba zcela nečitelný a tak se v novém souboru vůbec neobjeví.
Zvolte položku "Reorganize" z menu "Process". Objeví se okno, která Vás
upozorňuje na to, že reorganizace celého databázového souboru bude potřebovat
určitý čas. Pokud máte harddisk nebude to trvat déle jak pár sekund (možná
minutu při megabajtovém souboru), ale na disketové mechanice si to může vyžádat
i půl hodiny či více. Pochopitelně vše závisí na velikostí souboru. Pokud jste
si jisti, že chcete nechat celou akci proběhnout klikněte na "OK". Nyní ještě
zadejte název nového přerovnaného souboru, případně i cestu pokud ho chcete
uložit jinam než do aktuálního adresáře.
Struktura souborů
Pokud jste si nechali vypsat (třeba příkazem DIR v Shellu nebo v Superbázi z
menu "Utilities Directory List") obsah adresáře, kde máte Váš databázový soubor
(Adresář) uložen, jistě jste si již všimli, že se tam nalézá hned několik
souborů, které začínají stejně, ale mají různé přípony. Superbáze totiž vytváří
několik souborů. Základní soubor je s příponou ".sbf", protože tam jsou uloženy
veškerá data. Záznamy se tam zapisují se všemi obsahy polí postupně jak byly
zadávány, tedy ve zcela nesetříděném stavu. V souboru ".sbd" naleznete informace
o struktuře celého databázového souboru, názvy a definice polí. V souborech
".sbq" naleznete definice vytvořených a uložených Query procesů, podobně jako
".sbu" pro Update procesy. Soubor s příponou ".sbt" většinou obsahuje text
vytvořený interním textovým editorem zakompilovaným do Superbáze. Zde lze
vytvářet dokumenty pro automatizaci korespondence (Mail Merge) vytvořit jednu
formu (třeba dopisu, dodacího listu, faktury atd), do které se postupně doplní
všechny nebo jen vybrané záznamy (třeba jen jejich část). S touto problematikou
se setkáme až někdy příště. Pod ".sbp" se neukrývá nic jiného než program
vytvořený pod Superbází v programovacím jazyku DML. Možnost programování dává
tomuto databázovému programu velmi silnou zbraň, protože co SBpro neumí, to si
můžete sami doprogramovat. Proto se budu programování v DML věnovat až trochu
později, ale důkladně. V neposlední řadě tu jsou ještě soubory s příponou
".sbv", která označuje formulář vytvořený programem SB Form Designer. Ještě tu
jsou definice funkčních kláves - ".sbk" a mělo by to být vše. Snad jsem na nic
nezapomněl.
Poté naleznete několik úplně stejně velkých souborů, které se odlišují pouze
příponou tvořenou maximálně dvěmi číslicemi. To jsou indexové soubory. A číslice
udává index: např. "2" je příjmení, "6" je město atd. Ty obsahují vždy pouze
jedno abecedně seřazené pole (tedy třeba všechna za sebou abecedně netříděná
příjmení či města) a jsou zde pro vyhledávání a třídění dat. Jestliže máte
aktuální index příjmení a necháte nějaké vyhledat, program prohlédne nejprve
indexový soubor, kde nalezne požadovaný řetězec a až za pomoci získaných
informací vstoupí na určité místo datového souboru, odkud zobrazí všechny
informace. Pokud nějak záznam vymažete, dojde pouze jeho odstranění z indexových
souborů, ale v hlavním datovém zůstane, pouze je označen jako vymazány. Právě na
odstraňování těchto zbytků je určená reorganizace.
Takto vypadá soubor "ADRESAR.sbd":
Cislo |
;NUM CON RDO |
IXD |
; 9999. |
;0 |
;0 |
;>SER ("Adresar") |
Prijmeni |
;TXT |
IXD |
; 20 U |
;1 |
;0 |
; |
Jmeno |
;TXT |
|
; 20 |
;2 |
;0 |
; |
Ulice |
;TXT |
|
; 40 |
;3 ; |
0 |
; |
PSC |
;TXT |
|
; 6 |
;4 ; |
0 |
; |
Mesto |
;TXT |
IXD |
; 20 |
;5 ; |
0 |
; |
Telefon |
;TXT |
|
; 20 |
;6 ; |
0 |
; |
Poznamka |
;TXT |
|
; 100 |
;7 ; |
0 |
; |
Datum |
;DAT |
IXD |
; dd.mm.yy |
;8 |
;0 |
; |
Castka |
;NUM |
IXD |
;$ 999999.00 |
;9 |
;0 |
; |
Urok |
;NUM |
|
;$ 999999.00 |
;10 |
;0 |
; |
Vytlačiť článok
Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.
Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing
none
|