Ako urobiť percentuálne výpočty v Base

base.png Potrebujete urobiť zo zadaných údajov v tabuľke Base percentuálne výpočty, ktoré by sa zobrazovali priamo v module Base bez potreby exportu do modulu Calc? Vytvorte si pohľad nad tabuľkou.  

Pri používaní databázy sa každý snaží navrhnúť tabuľku tak, aby automatické výpočty urobil tento modul sám. Môže ísť napríklad o výpočet DPH, percentuálneho podielu napríklad zmätkov pri výrobe, podielu reklamácií na celkový počet výrobkov a pod.

Definícia tabuľky pre sledovanie zmätkov a oprávDefinícia tabuľky pre sledovanie zmätkov a opráv

Na všetky (ale nielen takéto veci) môžete použiť tzv. pohľad nad tabuľkou. Pri jeho definovaní stačí, ak sa cez tlačidlo Pohled návrhu zap/vyp prepnete do režimu priameho zadania SQL príkazu a tam zadefinujete príslušné matematické operácie a funkcie. Pretože na internete sa dá zohnať viacero dobrých príručiek jazyka SQL, nebudeme sa tomuto popisu podrobnejšie venovať, ale ukážeme si iba jednoduchý príklad, pri ktorom spoznáte základný syntax SQL príkazu SELECT, pretože potrebné úkony musíte zadefinovať v ňom.

Prepnutie do režimu priameho zadania SQL príkazuPrepnutie do režimu priameho zadania SQL príkazu

Predpokladajme, že máte vytvorenú tabuľku "Tabulka1", v ktorej máte definované nasledovné údaje: identifikačné číslo ("ID"), názov dodávateľa ("Dodávateľ"), evidenčné číslo materiálu ("Č. materiálu"), počet dodaných kusov ("KS"), počet zmätkov ("Zmätky ks") a počet opravených kusov ("Opravy ks"). Z týchto údajov chcete vypočítať percento zmätkov a percento opráv. Vytvoríte si nový pohľad, vyberiete tie údaje, ktoré nemusíte počítať (načo ich zbytočne písať, keď to za nás urobí OpenOffice.org), cez tlačidlo Pohled návrhu zap/vyp sa prepnete do režimu priameho zápisu SQL príkazu a tam zmodifikujete už zapísaný príkaz SELECT nasledovným spôsobom:

Zadanie vzorcov do SQL príkazuZadanie vzorcov do SQL príkazu

SELECT "ID", "Dátum", "Dodávateľ", "Č. materiálu", "KS", "Zmätky ks", "Opravy ks", 100 * "Zmätky ks" / "KS" AS "% zmätkov", 100 * "Opravy ks" / "KS" AS "% opráv" FROM "Tabulka1" AS "Tabulka1"

Definícia pohľadu po vložení vzorcov do SQL príkazuDefinícia pohľadu po vložení vzorcov do SQL príkazu

Ako vidíte, priamo vo výbere je zadaný vzorec pre výpočet percenta zmätkov a opráv. Aby ste v pohľade nemali následne názov záhlavia tento vzorec, cez kľúčové slovo AS ste tieto údaje zároveň pomenovali alternatívnymi („alias“) názvami, čiže vzorec pre výpočet zmätkov (100 * "Zmätky ks" / "KS") je nazvaný "% zmätkov" a vzorec pre výpočet opráv (100 * "Opravy ks" / "KS") je nazvaný "% opráv". Pretože názvy obsahujú medzery, je potrebné ich uzavierať do úvodzoviek.

Zadanie vstupných údajov do tabuľkyZadanie vstupných údajov do tabuľky

Po zadaní príkazu sa cez tlačidlo Pohled návrhu zap/vyp prepnete nazad do štandardného režimu návrhu, kde uvidíte dva nové stĺpce s príslušnými výpočtami. Zadané vzorce uvidíte v prvom riadku (Pole) a alternatívne názvy v riadku druhom (Alias). Pravdaže, pokiaľ chcete, môžete teraz takto vypočítané údaje použiť pri definovaní nových a nových pohľadov, pričom sa na ne budete odvolávať práve cez „alias“ názvy.

Zobrazené percentuálne výsledky v definovanom pohľadeZobrazené percentuálne výsledky v definovanom pohľade

Teraz sa pozrime na to, ako dosiahnuť, aby sa percentuálny výsledok zobrazoval ako reálne číslo. Toto sa dá dosiahnuť viacerými spôsobmi. Pokiaľ ste pri definícii tabuľky zadefinovali údaje o kusoch ako reálne čísla (pravdaže, nemusíte tak urobiť buď pre všetky tieto údaje, stačí aj jeden z nich – v našom príklade by bol vhodný údaj "KS"), potom OpenOffice.org výpočet automaticky urobí ako reálne číslo.

Príklad definovania celočíselných údajovPríklad definovania celočíselných údajov

Zobrazené celočíselné percentuálne výsledkyZobrazené celočíselné percentuálne výsledky

Naopak, pokiaľ zadefinujete tieto údaje ako celočíselné, bude aj výsledok automaticky zaokrúhlený na celé číslo. To, akú definíciu použijete závisí od toho, aké výsledky chcete dosiahnuť. Čo však urobiť v tom prípade, ak potrebujete aj celočíselný aj neceločíselný výsledok, prípadne nemôžete definíciu v pôvodnej tabuľke už zmeniť? Je to jednoduché – vo vzorci v príkaze SELECT nezadajte číslo 100 ako celé, ako ako reálne (pozor, desatinné miesto sa neoddeľuje čiarkou ale bodkou):

Zadefinovanie neceločíselných vzorcov do príkazu SELECTZadefinovanie neceločíselných vzorcov do príkazu SELECT

SELECT "ID", "Dátum", "Dodávateľ", "Č. materiálu", "KS", "Zmätky ks", "Opravy ks", 100.00 * "Zmätky ks" / "KS" AS "% zmätkov", 100.00 * "Opravy ks" / "KS" AS "% opráv" FROM "Tabulka1" AS "Tabulka1"

V tomto prípade naozaj nezáleží na tom, ako máte vstupné údaje zadané, výsledok sa zobrazí ako číslo reálne.

Formátovanie buniek vo výstupnej zostaveFormátovanie buniek vo výstupnej zostave

Na záver ešte uveďme, že databáza je databáza a preto zobrazuje údaje tak, ako sú zadané a vypočítané. Pokiaľ požadujete, aby sa výsledok zobrazoval povedzme na dve desatinné miesta, potom buď použijete tabuľku ako zdroj údajov pre modul Calc, kde si môžete nastaviť ľubovoľné formátovanie, alebo si vygenerujete výstupnú zostavu, kde tak isto môžete previesť formátovanie číselných údajov rovnakým spôsobom, ako v module Calc.

Výstupná zostava po úprave formátovaniaVýstupná zostava po úprave formátovania

(Jako ve škole) Průměr: 1,18 | Hodnotilo: 11
 

Komentáře

user avatar student
Odpovědět
Ako urobiť percentuálne výpočty v Base
20. 04. 2009, 09:26:17
Super. Jednoduchý a veľmi užitočný návod. Už dlhšie som riešil probném ako zadávať vzorce v Base, ale pokúšal som sa to robiť ako v Accesse.
user avatar Radim
Odpovědět
Ako urobiť percentuálne výpočty v Base
26. 08. 2013, 12:41:59
Dborý den,
děkuji za velice užitečný návod, nicméně řeším teď problém s výpočtem doby trvání. V databázi mám čas začátku a konce (datový formát TIME) a z toho bych chtěl vypočítat dobu trvání. Zkusil jsem zadat:
SELECT "Projekt", "Od", "Do", TIMEDIFF("Do", "Od" ) AS "Čas" FROM "Pracovní doba" WHERE "Projekt" = 1312
ale stále to hází chybu že se nepodařilo načíst datový obsah. Zadání příkazu TIMEDIFF jsem zkoušel všelijak modifikovat, nicméně výsledek je stále týž. V čem by mohl být problém. Lze tento příkaz vůbec v modulu Base použít?
Děkuji předem

Přidat názor

 

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích najdete v nápovědě. Diskuzi můžete sledovat pomocí RSS kanálu.

 
Július Pastierik

Július Pastierik

 
 
 
woo jaw demo hz