Универзитет у Крагујевцу
Факултет техничких наука
Проф. др Алемпије Вељовић Милош Папић, M.Sc.
Microsoft Access 2010 ®
– Приручник –
Чачак, 2012.
Предговор Приручник је првенствено намењен студентима смера Предузетнички менаџмент, Факултета техничких наука у Чачку, као додатна литература за вежбе на предмету Увод у базе података. Приручник могу користити и сви они који желе да провере свој ниво знања или стекну основно знање из области база података на примеру софтверског пакета Microsoft Access верзије 2010. Свесни смо чињенице да у приручнику има недостатака и пропуста, па ће нам свака примедба корисника добро доћи за његово побољшање. Све примедбе и сугестије примићемо са захвалношћу.
У Чачку, октобра 2012. године
Aутори
КРАТАК САДРЖАЈ:
1. УВОД .................................................................................................... 9 2. КРЕИРАЊЕ НОВЕ БАЗЕ ПОДАТАКА .................................................... 17 3. ТАБЕЛЕ ............................................................................................... 20 4. ВЕЗЕ ................................................................................................... 50 5. УВОЗ И ИЗВОЗ ПОДАТАКА ................................................................. 61 6. УПИТИ ................................................................................................ 69 7. ФОРМЕ ............................................................................................. 107 8. ИЗВЕШТАЈИ ...................................................................................... 147 9. МАКРОИ .......................................................................................... 169 10. МОДУЛИ И VBA ............................................................................. 185 11. КОРИСНЕ АЛАТКЕ И ОПЦИЈЕ .......................................................... 235 ЛИТЕРАТУРА ........................................................................................ 247
САДРЖАЈ: 1. УВОД .................................................................................................... 9 2. КРЕИРАЊЕ НОВЕ БАЗЕ ПОДАТАКА .................................................... 17 3. ТАБЕЛЕ ............................................................................................... 20 3.1 ТИПОВИ ПОДАТАКА ................................................................................... 22 3.2 СВОЈСТВА ТИПОВА ПОДАТАКА ..................................................................... 24 3.3 LOOKUP WIZARD ....................................................................................... 28 3.4 INPUT MASK ............................................................................................. 31 3.5 VALIDATION RULE ...................................................................................... 34 3.6 CALCULATED FIELD ..................................................................................... 35 3.7 ПРИМАРНИ КЉУЧ ..................................................................................... 37 3.8 УНОШЕЊЕ ПОДАТАКА У ТАБЕЛУ ................................................................... 38 3.9 СОРТИРАЊЕ ............................................................................................. 40 3.10 БРИСАЊЕ ЗАПИСА ................................................................................... 41 3.11 ИЗМЕНЕ ПОДАТАКА У ОКВИРУ ЗАПИСА ....................................................... 43 3.12 ПРОНАЛАЖЕЊЕ ЗАПИСА ........................................................................... 43 3.13 ПРОНАЛАЖЕЊЕ И ЗАМЕНА ВРЕДНОСТИ У ЋЕЛИЈАМА .................................... 45 3.14 ФИЛТРИРАЊЕ ПОДАТАКА ......................................................................... 46 3.15 ИНДЕКСИРАЊЕ ....................................................................................... 49 4. ВЕЗЕ ................................................................................................... 50 4.1 ПОСТУПАК ПОВЕЗИВАЊА ТАБЕЛА................................................................. 53 4.2 ИЗМЕНЕ И БРИСАЊЕ ВЕЗА........................................................................... 56 4.3 РЕФЕРЕНЦИЈАЛНИ ИНТЕГРИТЕТ.................................................................... 56 4.4 КОРИШЋЕЊЕ LOOKUP-A КОД ПОВЕЗАНИХ ТАБЕЛА .......................................... 57 4.5 ПРЕГЛЕД И ИЗМЕНА ПОДАТАКА КРОЗ ПОДТАБЕЛЕ ........................................... 60 4.6 РЕДОСЛЕД УНОСА ПОДАТАКА У ТАБЕЛЕ И МОГУЋИ ПРОБЛЕМИ ......................... 60 5. УВОЗ И ИЗВОЗ ПОДАТАКА ................................................................. 61 5.1 УВОЗ ПОДАТАКА У АCCESS ИЗ EXCELA ........................................................... 61 5.2 УВОЗ ПОДАТАКА У ACCESS ИЗ ACCESS-A ........................................................ 65 5.3 УВОЗ ПОДАТАКА У ACCESS ИЗ ТЕКСТУАЛНИХ ДАТОТЕКА ................................... 67 5.4 ИЗВОЗ ПОДАТАКА ИЗ ACCESS-A ................................................................... 68
6. УПИТИ ................................................................................................ 69 6.1 КРЕИРАЊЕ И ЧУВАЊЕ УПИТА ....................................................................... 69 6.2 ИЗМЕНЕ УПИТА ......................................................................................... 73 6.2.1 Додавање критеријума за филтрирање ................................. 74 6.2.2 Џокерски знаци код филтрирања ............................................. 77 6.2.3 Проналажење празних ћелија – NULL вредности .................... 79 6.2.4 Оператор ОR ................................................................................ 79 6.2.5 Оператор AND ............................................................................. 81 6.2.6 Сортирање резултата упита .................................................. 82 6.2.7 Сакривање колона из резултата упита .................................. 83 6.2.8 Калкулације помоћу упита ......................................................... 83 6.2.9 Агрегатне функције .................................................................... 85 6.2.10 Проналажење дупликата помоћу упита ............................... 87 6.3 УПИТИ НАД ПОДАЦИМА ИЗ ВИШЕ ТАБЕЛА ..................................................... 91 6.3.1 Врсте спајања код упита ........................................................... 92 6.4 ПАРАМЕТАРСКИ УПИТИ .............................................................................. 95 6.5 CROSSTAB УПИТИ ...................................................................................... 98 6.6 АКЦИОНИ УПИТИ .................................................................................... 101 6.6.1 Make Table упити ......................................................................101 6.6.2 Update упити.............................................................................. 103 6.6.3 Append упити ............................................................................. 104 6.6.4 Delete упити ............................................................................... 105 7. ФОРМЕ ............................................................................................. 107 7.1 КРЕИРАЊЕ ФОРМЕ ПОМОЋУ ЧАРОБЊАКА ................................................... 108 7.2 ИЗМЕНЕ ПОДАТАКА ................................................................................. 110 7.3 УНОС НОВОГ ЗАПИСА ............................................................................... 111 7.4 ПРОНАЛАЖЕЊЕ ЗАПИСА ........................................................................... 111 7.5 БРИСАЊЕ ЗАПИСА ................................................................................... 111 7.6 СОРТИРАЊЕ ........................................................................................... 112 7.7 ФИЛТРИРАЊЕ ......................................................................................... 112 7.8 МОДИФИКОВАЊЕ ДИЗАЈНА ФОРМЕ ........................................................... 113 7.8.1 Додавање поља на форму ........................................................ 115 7.8.2 Поравнавање и фино намештање објеката на форми .......117 7.8.3 Измена редоследа заустављања табулатора ..................... 118 7.8.4 Додавање логоа и слика............................................................ 118 7.8.5 Додавање тренутног датума и времена .............................. 120 7.8.7 Додавање фотографија ........................................................... 122 7.9 ПОЉА ЗА КАЛКУЛАЦИЈЕ – CALCULATED FIELD ............................................... 123 7.10 ДОДАВАЊЕ COMBO BOX-A .....................................................................126
7.10.1 Употреба Combo Box-a за проналажење записа ................. 128 7.11 КРЕИРАЊЕ ФОРМЕ ОД УПИТА ..................................................................130 7.12 КРЕИРАЊЕ ФОРМЕ СА ПОДФОРМОМ ........................................................ 131 7.12.1 Креирање форме са подформом помоћу чаробњака .......... 133 7.13 РУЧНО КРЕИРАЊЕ ПОДФОРМЕ И ДОДАВАЊЕ НА ГЛАВНУ ФОРМУ .................. 134 7.14 ФОРМЕ СА ВИШЕ ПРОЗОРА .....................................................................135 7.15 NAVIGATION FORM ................................................................................ 138 7.16 ПРАВЉЕЊЕ МЕНИЈА ОД ПРАЗНЕ ФОРМЕ И STARTUP ОПЦИЈЕ ........................ 140 7.17 MODAL DIALOG ФОРМА ......................................................................... 145 8. ИЗВЕШТАЈИ ...................................................................................... 147 8.1 КРЕИРАЊЕ ИЗВЕШТАЈА ПОМОЋУ ЧАРОБЊАКА .............................................. 147 8.1.1 Груписање код извештаја помоћу чаробњака ....................... 149 8.2 ИЗВЕШТАЈИ НА ОСНОВУ УПИТА ..................................................................153 8.3 КРЕИРАЊЕ ИЗВЕШТАЈА НАД ПОДАЦИМА ИЗ ВИШЕ ТАБЕЛА ............................. 154 8.4 БРЗО КРЕИРАЊЕ ИЗВЕШТАЈА .....................................................................155 8.5 ИЗМЕНЕ ИЗГЛЕДА ИЗВЕШТАЈА ...................................................................155 8.6 РУЧНО КРЕИРАЊЕ ИЗВЕШТАЈА ...................................................................157 8.7 СОРТИРАЊЕ И ГРУПИСАЊЕ .......................................................................158 8.8 ДОДАВАЊЕ ПОЉА ЗА КАЛКУЛАЦИЈЕ ........................................................... 162 8.9 ПОДИЗВЕШТАЈИ ...................................................................................... 162 8.10 КРЕИРАЊЕ ГРАФИКОНА НА ИЗВЕШТАЈИМА ................................................ 165 8.11 ШТАМПАЊЕ ИЗВЕШТАЈА ........................................................................ 167 8.12 ПРАВЉЕЊЕ PDF ФАЈЛА ОД ИЗВЕШТАЈА .................................................... 168 9. МАКРОИ .......................................................................................... 169 9.1 КРЕИРАЊЕ МАКРОА ................................................................................ 171 9.1.1 Креирање макроа за отварање објеката .............................. 172 9.2 КРЕИРАЊЕ ОКИДАЧА ЗА МАКРОЕ ............................................................... 172 9.3 УГРАЂЕНИ МАКРОИ ................................................................................. 173 9.3.1 Опција Event-Timer Interval ........................................................ 173 9.4 ДОДАВАЊЕ КОМЕНТАРА МАКРОУ .............................................................. 175 9.5 ПОД МАКРОИ ........................................................................................ 176 9.6 ПРЕЧИЦЕ ЗА ПОКРЕТАЊЕ МАКРОА ............................................................. 178 9.6.1 Покретање макроа са Ribbona и Quick Access Toolbar-a .......178 9.6.2 Покретање макроа помоћу пречица са тастатуре ............ 179 9.7 AUTOEXEC МАКРО ................................................................................... 181 9.8 SHORTCUT MENU МАКРО.......................................................................... 181 9.9 DATA МАКРОИ ........................................................................................ 183
10. МОДУЛИ И VBA ............................................................................. 185 10.1 ПОТПРОГРАМИ ..................................................................................... 186 10.2 ФУНКЦИЈЕ............................................................................................ 188 10.2.1 Датумске фунцкије .................................................................190 10.2.2 Фунцкије за рад са текстом .................................................. 190 10.2.3 Математичке и конверзионе фунцкије ............................... 191 10.2.4 Функције у оквиру VBA ............................................................. 192 10.3 ПРОМЕНЉИВЕ, КОНСТАНТЕ И КАЛКУЛАЦИЈЕ.............................................. 193 10.3.1 Декларисање променљивих .................................................... 193 10.3.2 Типови података .....................................................................194 10.3.3 Глобалне променљиве ............................................................. 195 10.3.4 Константе и статичке променљиве ...................................196 10.3.5 Математички оператори ..................................................... 197 10.3.6 Прозор са поруком ...................................................................198 10.3.7 Низови ....................................................................................... 200 10.3.8 Објектне променљиве ............................................................ 201 10.4 УРЕЂИВАЊЕ КОДА ................................................................................. 202 10.4.1 Коментари ............................................................................... 202 10.4.2 Отклањање грешака .............................................................. 203 10.4.3 Кретање кроз код корак по корак ......................................... 204 10.4.4 Тачка прелома .......................................................................... 205 10.4.5 Позиционирање прозора са поруком .....................................207 10.4.6 Праћење варијабле/израза ..................................................... 208 10.5 УСЛОВИ И ПЕТЉЕ .................................................................................. 209 10.5.1 For Next петља ......................................................................... 209 10.5.2 For Each петља......................................................................... 210 10.5.3 Do While петља........................................................................ 211 10.5.4 Do Until петља ......................................................................... 212 10.5.5 If наредба .................................................................................. 213 10.5.6 Case наредба............................................................................. 215 10.6 МАНИПУЛАЦИЈА ОБЈЕКТИМА У БАЗИ ПОМОЋУ DOCMD VBA КОМАНДЕ ........ 216 10.6.1 Отварање форме ....................................................................216 10.6.2 Отварање извештаја ............................................................. 218 10.6.3 Отварање табеле...................................................................218 10.6.4 Отварање упита .....................................................................219 10.6.5 Затварање објекта ................................................................ 219 10.6.6 Затварање базе и излаз из Access-а ......................................219 10.6.7 Звучни сигнал и пешчаник....................................................... 220 10.6.8 RunCommand сегмент............................................................. 220 10.6.9 Штампање ............................................................................... 220
10.6.10 Упозорења .............................................................................. 220 10.6.11 Бројач ...................................................................................... 221 10.7 МАНИПУЛАЦИЈА ПОДАЦИМА У ТАБЕЛАМА ПУТЕМ VBA КОДА...................... 222 10.7.1 Приказивање свих записа из табеле путем више прозора са поруком ................................................................................................ 222 10.7.2 Додавање новог записа ........................................................... 222 10.7.3 Едитовање података ............................................................. 223 10.7.4 Измена система трансакције за потврђивање промена..225 10.7.5 Приказ својстава колона ........................................................ 227 10.7.6 Затварање Recordset-a ........................................................... 228 10.7.7 Брисање записа ........................................................................ 228 10.7.8 Опције за проналажење записа ............................................. 229 10.7.9 Кретање кроз табелу ............................................................. 230 10.7.10 Пребрајање записа ................................................................ 231 10.7.11 D функције .............................................................................. 232 10.8 КОНТРОЛА ФОРМИ И ИЗВЕШТАЈА ПУТЕМ ME КОМАНДЕ .............................. 232 10.8.1 Забрана додавања, брисања и измена на форми ................ 232 10.8.2 Филтери и видљивост ............................................................ 233 10.8.3 Натписи, слике и Scroll Bar-ови .............................................. 234 10.8.4 Requery и Repaint ......................................................................234 10.8.5 Извор података .......................................................................234 11. КОРИСНЕ АЛАТКЕ И ОПЦИЈЕ .......................................................... 235 11.1 COMPACT & REPAIR DATABASE ................................................................ 235 11.2 ЧУВАЊЕ ДОКУМЕНТА ЗА РАНИЈЕ ВЕРЗИЈЕ ACCESS-A ....................................235 11.3 BACKUP БАЗЕ ПОДАТАКА ........................................................................ 236 11.4 OBJECT DEPENDENCIES ........................................................................... 236 11.5 ЕНКРИПЦИЈА БАЗЕ ПОДАТАКА .................................................................237 11.6 ДЕЉЕЊЕ БАЗЕ ПОДАТАКА .......................................................................240 11.7 КРЕИРАЊЕ ACCDE ФАЈЛА ......................................................................244 11.8 КОРИСНЕ ПРЕЧИЦЕ ................................................................................ 245 11.8.1 Windows пречице......................................................................245 11.8.2 Microsoft Office пречице........................................................... 245 11.8.3 Microsoft Access пречице ......................................................... 245 ЛИТЕРАТУРА ........................................................................................ 247
Microsoft Access 2010
1. Увод Шта је податак, а шта информација? Податак је чињеница која може бити представљена звуком, сликом, текстом или бројем. Податак, сам по себи, не мора бити релевантан, али ако се обради и стави у неки контекст, он поприма значење и постаје информација. Информација је тај контекст, односно значење придодано податку. Као пример податка узмимо звук за узбуњивање: када бисте га слушали ван контекста, он би био само неугодан и продоран звук. У трену када му је човек доделио значење „непосредна опасност“, он је постао (свима позната) информација. Шта је база података? База података је скуп логички повезаних података организованих за брзо претраживање и приступ. Она заједно са системом за администрацију, организовање и меморисање тих података, чини систем базе података. Постоји велики број примера простих односно такозваних „папирних“ база података у нашем окружењу: календари (где су подаци сортирани према датуму), регистри (у којима подаци могу бити сортирани по датуму, називу компаније, имену запосленог...), телефонски именици (сортирани по презименима, а потом именима), кувари (сортирани по типу јела), итд. Упоредимо сада папирне са дигиталним базама података. Код папирних база: Вам није потребан рачунар нити познавање рада на истом; Структура је фиксирана (не можете извршити сортирање по неком другом критеријуму); Познат вам је распоред и није га могуће мењати; Не постоји начин за брисање података. Дигиталне базе података су: Брже за коришћење; Много мање захтевне што се тиче простора; Поседују могућност промене, брисања, сортирања и груписања података. Access, вам као алат за рад са дигитализованим базама података, омогућава да дизајнирате и креирате структуру по жељи за вашу организовану колекцију података. Потом, можете сортирати и груписати ваше податке како бисте из њих добили одређене информације и у сваком тренутку се можете предомислити и извршити сортирање по неком другом критеријуму. У сваком случају, ви одређујете како ће ваша организована колекција података изгледати. [9]
Microsoft Access 2010
Компоненте базе података Најзначајнији део једне базе података јесу табеле. Табеле су место у коме су смештени сви подаци. Свака табела се састоји од одређеног броја редова и колона. Колонама се додељују називи. Редови се у терминологији база података називају још и записи. Сваки запис представља групу јединствених вредности о одређеном ентитету, где тај ентитет може бити особа, ствар, догађај, итд. Сваки запис мора имати исти број колона. У пресеку реда и колоне налази се поље. Поља су у суштини места где се подаци уносе. Да ли ћете ви у свако поље једног реда односно записа унети податке, остаје на вама и о томе ће касније бити више речи. Овакав систем представља суштину организације сваке базе података. Поред табела, које су основне градивне јединице базе података, и без којих једна база не би могла да функционише, постоје упити, форме, извештаји и макрои.
Упити вам омогућавају манипулацију над подацима, као и да их анализирате филтрирајући их и сортирајући на различите начине. Формама се подаци приказују у пријемчљивијем облику и намењене су лакшем уносу податка у базу. Извештајима добијате сортиране и филтриране податке у форми погодној за штампу на папиру. Макроима се одређени догађаји аутоматизују.
Ток података кроз набројане објекте је приказан на слици 1.1
Слика 1.1 – Ток података кроз објекте у Access-у
[10]
Microsoft Access 2010
Шта је релациона база података? Релациона база података садржи више од једне табеле и између тих табела различите везе (релације). Неке табеле се називају родитељи а неке деца, односне неке су надређене а неке подређене са аспекта повезивања. Између родитеља и деце постоје везе 1:М (један према више) које означавају да један родитељ може имати више деце односно једном запису табеле од које полази веза (родитељ), одговара више записа у табели где се веза завршава (дете). База података која садржи само једну табелу назива се „равна“ база података и она самим тим није релациона. Овакве „базе података“ ћете најчешће сретати у Excel-у. Такође, у случају да табеле у вашој бази података није потребно повезивати, највероватније вам и није потребан Access или неки други систем за управљање релационим базама података јер бисте исте ствари могли да урадите управо у Excel-у. Најчешће неће бити потребе да повежете табеле сваку са сваком али ће у највећем броју случајева свака табела бити повезана са макар једном табелом. Чување података у само једној табели није добро јер: Захтева њено константно реструктуирање; Табела садржи велики број празних, сувишних поља; Табелу чини гломазном и непрегледном. Илуструјмо то на једном примеру Креирајте табелу која ће садржати податке о имену и презимену родитеља, њиховом идентификационом броју, имену и датуму рођења њиховог детета (слика 1.2).
Слика 1.2 – Лоше структурирана табела
Шта би се десило када би неки од родитеља имао и друго дете (слика 1.3)?
Слика 1.3 – Проширивање лоше структуриране табеле [11]
Microsoft Access 2010
У табели би остале празне ћелије на местима где родитељи немају друго дете. Шта би се десило када би Милан Милановић имао и треће дете??? Табела би постајала све већа и већа! Проблем се решава дељењем ове табеле на две мање као на слици 1.4.
Слика 1.4 – Добро структуриране табеле
На слици 4 видите две табеле: Табелу Roditelj са подацимо о родитељу и табелу Dete са подацима о детету и пољем RoditeljID преко кога су ове две табеле сада повезане. За свако дете видите ко му је родитељ на основу вредности у пољу RoditeljID, а с обзиром да дете не може бити јединствено одређено само на основу ID броја родитеља, додаје се и колона RbrDeteta, где уносите редни број детета за сваког родитеља. Уколико би се сада рецимо Милан Милановић одлучио за треће дете, то дете би било унето у табелу са осталом децом, добило редни број 3 а у поље RoditeljID би био унет ID број његовог родитеља (Милана Милановића) односно број 1. Ово значи да нема потребе за реструктуирањем табела већ само уносом наредног записа. Други разлог за коришћење релационих база података погледајте на следећем примеру: Имате списак запослених у табели Radnik у којој је заведено и одељење у ком радник ради (слика 1.5).
Слика 1.5 – Радници и називи одељења у којима раде
У овом случају бисте ради брже екстракције података, могли да сваком одељењу доделите одговарајући број (шифру одељења) и да податке о томе чувате у посебној табели. Та табела би била табела Odeljenje а у табели Radnik бисте се само преко броја позивали на одређено одељење (слика 1.6). [12]
Microsoft Access 2010
Слика 1.6 – Радници и бројеви одељења у којима раде
Веза један према више се остварује преко колоне OdeljenjeID из табеле Odeljenje (примарни кључ) и колоне OdeljenjeID (пренесени кључ) табеле Radnik. У овом случају, табела Odeljenje представља родитеља, а табела Radnik представља дете. Битно је напоменути да се у табели Odeljenje једно одељење појављује само једном, док се у табели Radnik може појавити једном, више пута или се не мора уоште појавити. Видите да се одељење Prodaja у табели Radnik уоште не појављује што значи да у том одељењу за сада нема радника, док се одељење Marketing појављује више пута. У даљем тексту ћете видети како ћете када будете дизајнирали форме, уместо бројева, видети називе одељења тако да нема потребе бринути се о томе како ћете запамтити које одељење је који број. Али, што се самог рачунара тиче, одрађено је све што треба како би база функционисала брзо и тачно. С обзиром да смо већ поменули термине примарни и пренесени кључ потребно је да их детаљније објаснимо. Примарни кључ представља јединствени идентификатор за сваки запис односно ред у једној табели. За табелу Odeljenje из претходног примера то је колона ОdeljenjeID односно колона која садржи бројеве одељења. У табели видите да су бројеви одељења различити и то је суштина примарног кључа. Примарни кључ не сме и не може бити исти за два реда у једној табели. Он у ретким случајевима може бити сложен тако да се састоји од две колоне. Примарни кључ једне табеле се може користити као референца у другим табелама. Пренесени кључ се поставља у подређеној табели односно табели ка којој је успостављена релација. Он се у табели може понављати што значи да једном запису из надређене табеле може одговарати више записа из подређене табеле. Примарни и пренесени кључ морају бити истог типа података и морају садржати исте вредности! Дакле, да бисте искористили максимум од своје базе потребно је да: Осигурате да сваки запис односно ред у табели има примарни кључ; Велике табеле делите у више малих (нормализујете табеле); Повежете табеле преко примарног и пренесеног кључа. [13]
Microsoft Access 2010
Пројектовање базе података Пре него што почнете са креирањем базе у Access-у пожељно је да у својој глави имате, а потом и скицирате шта бисте то желели да направите. Никако се не препоручује директан почетак рада у Access-у осим код неких изузетно простих задатака. Ово је најважнији сегмент креирања сваке базе података. Уколико овај део одрадите како треба, у даљем раду тешко да ћете имати неких већих проблема. Почните од описа проблема којим ћете се бавити. Поставите себи следећа питања: Зашто уопште креирате базу података? Који су то улазни подаци? Какве излазне податке планирате да добијете? Која су очекивана побољшања од примене такве базе података? ...? Након овог корака дефинишите све колоне које вам падају на памет. Када дефинишете колоне, групишите их у табеле. У овом процесу је веома битна нормализација. Када дизајнирате базу података, увек покушајте да сваку чињеницу запишете само једном. Ако је потребно да исту информацију понављате на више места, сместите ту информацију у одвојену табелу. Нормализација је процес којим осигуравате да је ваша база података оптимизована за успешно постављање упита, да нема никаквих аномалија или проблема који могу угрозити њен интегритет. Постоји укупно пет фаза нормализације али се табеле најчешће доводе до треће нормалне форме (3NF). Прва нормална форма (1NF) подразумева да у сваком пресеку реда и колоне у табели постоји једна вредност, а никада листа вредности. На пример, не можете имати колону под називом Cena у коју ћете сместити више цена. Ако сваки пресек редова и колона замислите као ћелију, свака ћелија може да садржи само једну вредност. Друга нормална форма (2NF) захтева да свака колона потпуно зависи од целог примарног кључа, а не само неког његовог дела. Ово правило се примењује када имате примарни кључ који се састоји од више колона. На пример, претпоставимо да имате табелу која садржи колоне PorudzbinaID, ProizvodID и NazivProizvoda, при чему колоне PorudzbinaID и ProizvodID формирају примарни кључ. Овакав дизајн крши правило друге нормалне форме, јер колона NazivProizvoda зависи само од колоне ProizvodID, а не и од колоне PorudzbinaID, тако да не зависи од целог примарног кључа. Потребно је да из табеле уклоните колону NazivProizvoda. Она припада дугој табели (табели PROIZVOD).
[14]
Microsoft Access 2010
Трећа нормална форма (3NF) не захтева само да свака колона која није кључ буде зависна од целог примарног кључа, већ и да колоне које не чине кључ не зависе једна од друге. Другим речима, свака колона која није кључ мора да зависи од примарног кључа и ни од чега другог. На пример, претпоставимо да имате табелу PROIZVOD која садржи следеће колоне: ProizvodID (примарни кључ), Naziv, Cena и Popust. Претпоставимо да колона попуст зависи од цене. Ова табела нарушава трећу нормалну форму јер колона Popust, која није кључ, зависи од колоне Cena а ова колона такође није кључ. Независност колоне значи да би требало да будете у могућности да промените сваку колону која није кључ не утичући на друге колоне. Ако промените вредност у колони Cena, колона Popust ће се променити у складу са тим и на тај начин прекршити то правило. Када схватите концепт релационих база података, нормализација ће вам већ деловати природно, тако да ћете у принципу ваше табеле од почетка и правити у трећој нормалној форми. Ипак, пре него што табеле доведете до треће нормалне форме, проверите да ли су оне израђене према следећим смерницама: 1. Поделите колоне на најмање могуће делове који имају неко значење. На пример, колону која садржи имена и презимена радника запослених у некој установи бисте поделили на две колоне: колону Име и колону Презиме. Напомена: Иако колоне као што су Датум, Број телефона, итд. можете поделити тако да датум буде подељен на три колоне: дан, месец и година, а телефон на две: позивни број и број телефона, ово се никако не препоручује. 2. Свака табела треба да поседује примарни кључ. Уколико не постоји податак о нечему који би јединствено идентификовао сваку инстанцу тога нечега, односно сваки запис (ред) у табели, додајте колону типа Autonumber. Овим ћете осигурати да сваки запис има јединствени идентификатор. 3. Уколико у табели имате велики број текстуалних података који се понављају, креирајте нову табелу у коју ћете сместити само по један од тих података и повежите је са претходном табелом у којој ћете се на нову табелу позвати преко броја који означава тај податак. Овакве табеле се називају ШИФАРНИЦИ. На пример, имате табелу у којој чувате податке о својим познаницима и дефинисали сте између осталог и колону пол (Постоје имена на основу којих не можете одредити пол типа Страхиња, Саша...). Да не бисте за сваки запис куцали да ли је пол мушки односно женски, направићете нову табелу од две [15]
Microsoft Access 2010
колоне у којој ће у првој бити ID пола а у другој назив пола. Ова табела ће имати само два записа тако да ће само по једном бити написано мушки односно женски. Потом ћете преко пренесеног кључа у табели Особа повезати ове две табеле (слика 1.7). Сада ће у табели Особа у колони пол писати само бројеви 1 или 2 који означавају мушки односно женски пол.
Слика 1.7 – Повезивање преко пренесеног кључа
4. Сваки податак који будете накнадно уносили НЕ СМЕ изазвати реструктуирање табеле. Уколико бисте желели да нпр. у вашу табелу са особама додате ко од ваших познаника има дете, не бисте га додавали у постојећу, већ бисте креирали нову табелу са којом бисте повезали постојећу (пример родитељи и деца приказан на слици 4). 5. У табеле никада не укључујте израчунате податке. Резултат рачунских операција не би требало да складиштите у табеле јер Access уместо тога може да извршава рачунске операције када ви желите да видите одговарајући резултат. Постоје одређени програми из групе CASE алата (Computer Aided Software Engineering) који вам у многоме могу олакшати дизајн и пројектовање база података. Један од њих је ERwin (Entity Relationship for Windows) којим се аутори детаљније баве у приручнику „CASE алати за функционално и информационо моделирање“. Он се користи за креирање логичког погледа на систем, који се у наредној фази дефинисањем типова података претвара у физички. На крају се на основу физичког ER модела генерише шема базе података у Систему за Управљање Базама Података (СУБП) који ви одаберете. СУБП служи као посредник између различитих апликационих програма (апликација) и саме базе података. Access је један од бројних система за управљање базама података на тржишту, а сходно томе да се у њему креирају релационе базе података, он је релациони систем за управљање базама података односно РСУБП. Дакле, Access је РСУБП а фајлови које помоћу њега креирате су базе података. [16]
Microsoft Access 2010
2. Креирање нове базе података MS Access 2010, за разлику од верзија 2003 и ранијих, фајловима додељује екстензију .accdb (претходна је била .mdb). То можете видети на слици 8 на којој је приказан уводни прозор Access-а 2010. Поступак за креирање нове базе је прост клик на тастер Create. Пре тога је потребно доделити назив новој бази и одабрати место у коме ће бити сачувана. Да бисте променили локацију ваше нове базе кликните на иконицу фасцикле десно од простора у коме уписујете назив фајла. Тиме ће се отворити стандардни Windows прозор за чување фајлова и он је приказан на слици 2.1.
Слика 2.1 – Уводни прозор Access-а 2010
Уколико већ у овој фази желите да база буде доступна за рад са верзијама Access-а 2000 или 2002-2003 из падајућег менија прозора приказаног на слици 2.2, одаберите жељену верзију. Треба напоменути да су велике шансе да у старијим верзијама, нове функције Access-а неће радити како треба или чак уопште.
[17]
Microsoft Access 2010
Слика 2.2 – Прозор за одабир локације и верзије новог фајла
Као и код осталих апликација из MS Office пакета, постоји велики број шаблона (Templates) који у ствари представљају готове базе података које можете модификовати и у њима чувати ваше податке, међутим таквим базама података се у овом приручнику нећемо бавити. По уносу потребних података и притиском на тастер Create, креирали сте нову, празну базу података која садржи једну несачувану табелу отворену у режиму за унос података (слика 2.3). Препоручујемо да ову табелу затворите и кренете у процес креирања табела из почетка. Затварањем ове табеле она ће нестати јер, као што рекосмо, није сачувана.
[18]
Microsoft Access 2010
Слика 2.3 – Нови празан фајл
[19]
Microsoft Access 2010
3. Табеле Већ смо напоменули да бисте пре него што кренете у реализацију задатка у самом програму, требали да осмислите вашу будућу базу. Почните од креирања једне „равне“ базе података тј. базе која садржи само једну табелу. Креирајте базу података ваших познаника у којој ћете чувати њихова имена, презимена, адресе, телефоне итд. Дизајн такве табеле је приказан на слици 3.1.
Слика 3.1 – Дизајн табеле OSOBA
На слици 3.1 видите да би назив табеле био OSOBA, а од колона бисте имали: Ime, Prezime, Adresа, Grad... Да бисте овакву табелу направили у Access-у креирајте нови фајл и назовите га Adresar. На Create рибону кликните на тастер Table Design (слика 3.2) и добићете прозор који је потребно да попуните као на слици 3.3 да бисте направили табелу коју сте у претходном кораку дизајнирали.
Слика 3.2 – Create рибон
У овом прозору дефинишете називе колона (Field Name), типове података за те колоне (Data Type), опис колоне који није обавезан (Description) и нека додатна својства у картицама General i Lookup. Називе колона које се састоје од више речи увек пишите састављено са великим почетним словима речи јер размаци нису пожељни приликом неких напреднијих ствари које ћете евентуално касније радити у вашој бази. Називе табела увек пишите великим словима у једнини. Ако је више речи у називу одвајајте их доњом цртом. [20]
Microsoft Access 2010
Слика 3.3 – Креирање табеле (Table Design прозор)
Напослетку је потребно да сачувате табелу кликом на иконицу Save или комбинацијом тастера Ctrl+S и у прозору упишете назив нове табеле (слика 3.4).
Слика 3.4 – Чување табеле
Када сте сачували табелу она се појављује у левом делу прозора тзв. Navigation Pane-у (слика 3.5). Navigation Pane сада представља оно што је у ранијим верзијама био Database Window, и у њему објекте можете груписати према различитим критеријумима, чак можете направити сопствене одељке у које ћете убацити објекте по жељи.
[21]
Microsoft Access 2010
Слика 3.5 – Navigation Pane
На слици 3.3 сте видели изглед табеле у фази израде односно дизајна. Како ова табела изгледа када се покрене у режиму за унос података, видите на слици 3.6.
Слика 3.6 – Табела особа у режиму за унос података
На слици 3.6 видите празну табелу особа спремну за унос података. Уколико бисте желели да се вратите у дизајн режим да нешто измените кликнули бисте десним тастером миша на табелу особа у Navigation Pane делу и одабрали опцију Design View или клик на иконицу Design View која се налази на Views одељку Home траке са алатима.
3.1 Типови података Вратимо се на слику 3.3 и погледајмо типове података (колона Data Type) за дефинисане колоне. Тренутно су за све колоне типови података подешени да буду текст (Text). Под текстуалним типом податка подразумева се било које слово, број или карактер који можете унети. Овај тип податка је подразумевани и генерално гледано најчешће коришћени тип у раду са базама података. Ограничење му је то што можете унети максимално 255 карактера. Сви типови података које у Access-у можете користити приказани су на слици 3.7.
[22]
Microsoft Access 2010
Слика 3.7 – Типови података у Access-у
Мемо – текстуални тип податка с тим што нема ограничења што се тиче броја карактера. Погодан за писање напомена, забелешки, итд. Number – уколико ћете у колону уносити само бројеве без текста можете одабрати овај тип податка. Date/Time – за уношење времена и датума Currency – за уношење новчаних вредности (валута зависи од регионалног подешавања вашег рачунара) AutoNumber – бројчани тип који се аутоматски исписује Yes/No – код овог типа података постоје две опције: Yes/No, Тrue/False или On/Off. Ово је логички односно тзв. Булов (Boolean) тип податка. OLE Object (Оbject Linking and Embedding) – ако желите да у базу убаците објекте који се налазе ван ње као што су Excel или Word документи, фотографије, итд. Hyperlink – за податке који су у виду хиперлинка (сајтови, мејлови...) Attachment – прикључује објекте ван базе слично као OLE Оbject Calculated – поље које се само израчунава на основу формуле коју за њега дефинишете и унетих података у колоне на које се формула односи. Када сте дефинисали основне типове података, погледајте које би од њих одабрали за одговарајуће колоне табеле OSOBA (слика 3.8). [23]
Microsoft Access 2010
Слика 3.8 – Типови података за колоне табеле OSOBA
Примећујете да су колоне Ime, Prezime, Adresa, Grad, итд текстуалног типа што је и логично с обзиром да смо рекли да се у поља овог типа могу унети сви знакови са тастатуре. Чак су и колоне Telefon, Mobilni и Fax текстуалног типа јер ће евентуално садржати заграде, цртице, итд. што не бисте могли унети да је поље типа Number. Поља Sajt, Facebook и Mejl су хиперлинк типа јер ће у њих бити унети подаци у виду линка. DatumRodjenja је наравно Date/Time типа и колона Beleske је Мемо типа јер се очекује да у њу буде уношено више карактера него што би текстуални тип могао подржати. Примећујете да смо табели додали колоне BrojDece и Zaposlenje да бисмо имали нумерички односно Булов тип података и да бисмо и њих објаснили.
3.2 Својства типова података Сваки од наведених типова података поседује додатна подешавања која се налазе у доњем делу Table Design прозора (слика 3.9). Подешавања се разликују од типа до типа а на слици су приказана подешавања за текстуални тип податка.
Слика 3.9 – Field Properties одељак [24]
Microsoft Access 2010
У десном делу овог одељка имате објашњење за сваку од наведених опција додатног подешавања за типове података. Field Size – контролише колико ће карактера поље прихватати. Подразумевано је 255 карактера и то је у ствари максимални број. Ви ћете сами одређивати колико ће вам карактера бити потребно за сваку колону у коју ћете уносити текстуалне податке али имајте на уму да би ваљало да за сваку тектуалну колону подесите максималан број карактера на онај колико се очекује да ће се уносити а не да остављате 255 јер ће то беспотребно заузимати простор и фајл ће бити велики. На пример, за колону Ime ставићете 25 јер тешко да ћете наћи име које има преко 25 карактера. Колоне Prezime, Adresa и Grad такође. Код колона са бројевима фиксног односно мобилног телефона и факса треба водити рачуна да се и евентуалне цртице односно заграде рачунају као карактери. Format – форматирање текста које се у принципу не препоручује у овој фази из разлога што би код база са великим бројем записа удвостручило величину фајла. Форматирање оставите за касније кораке када будете израђивали форме и извештаје. Input Mask – контролише како ће текст моћи да се унесе и обрадићемо их посебно у неком од наредних поглавља. Caption – натпис који ће бити исписан уместо назива колоне у табели и у формама и извештајима. Већ смо напоменули да код назива колона не треба уносити размаке али је то наравно дозвољено баш у овом делу. Тако на пример, ако колони DatumRodjenja додате натпис Datum rodjenja osobe, тај натпис ће се налазити у заглављу колоне и у свим осталим формама и извештајима а база ће то поље памтити у изворном облику односно DatumRodjenja. Default Value – ако ће већина ћелија одређене колоне имати исту вредност, ту вредност можете унети у ово поље и она ће бити исписана за сваки запис тако да је нећете морати уности ручно већ ћете је само изменити код записа код којих се вредност у овом пољу разликује. Ова опција би била корисна рецимо ако већина ваших познаника станује у Чачку. Опције Validation Rule и Validation Теxt ћемо такође обрадити посебно. Required – односи се на то да ли је ово поље потребно попунити или не. Ако већ правите базу особа сматраћете да су вам сва поља односно сви подаци о једноj особи потребни. Ово је наравно тачно међутим, десиће се да за одређене особе нећете у старту знати њихово презиме или датум рођења. Остављајући ову опцију на No програм ће вам дозволити да та поља [25]
Microsoft Access 2010
прескочите и попуните остала а да се касније, уколико у међувремену дознате те податке, вратите и да их попуните. Стога ову опцију користите само за она поља која ће по вашем мишљењу морати да буду попуњена за сваки запис. Allow Zero Lenght – ова опција ће бити корисна касније када се будемо бавили програмирањем али се у овом стадијуму што се самог Access-а тиче ништа неће десити било да изаберете Yes или No. Indexed – код овог поља имате три опције: No, Yes (Duplicates OK), Yes (No Duplicates). Појам индексирања ћемо објаснити кроз каснија поглавља. Unicode Compression – односи се на то како Access врши компресију, а с обзиром да је сваки вид компресије добар, препоручљиво је оставити на Yes. IME Mode и IME Sentence Mode – такође је препоручљиво оставити на подразумеваним вредностима. Ове опције говоре Access-у како да третира јапанске и карактере језика далеког истока. Smart Tags – последња опција су тагови које користите у осталим Office апликација и можете их повезати са овим пољем. Ово су додатна подешавања за текстуални тип података. Остали типови података углавном имају слична подешавања али се у некима и разликују. Узмимо за пример нумеричко поље BrojDece (слика 3.10).
Слика 3.10 – Додатна подешавања за нумеричке типове података
Прва уочљива разлика је у томе што код текстуалних поља за Field Size уносите број карактера а код нумеричких физичку величину броја и простор који ће заузимати. Из падајуће листе ћете моћи да изаберете следеће величине (слика 3.11). [26]
Microsoft Access 2010
Слика 3.11 – Подтипови нумеричког типа података
Aко одаберете Integer или Long Integer моћи ћете да уносите само целе бројеве. Byte – можете уносити бројеве у распону од 1 до 255. Single/Double – можете уносити бројеве са децималним местима. Integer и Single могу покрити бројеве од – 32.768 до 32.767, а Long Integer и Double бројеве од – 2.147.483.648 до 2.147.483.647 Decimal – могу се исписивати децимални бројеви као и код Single/Double подтипа само са нешто већим опсегом. Format део се односи на формат броја који ћете унети а листа формата приказана је на слици 3.12.
Слика 3.12 – формати нумеричког типа података
Decimal places – односи се на број децималних места али ће функционисати само ако претходно одаберете подтип који може да подржи децималне бројеве и одговарајући формат броја. Такође, ако одаберете подтип Decimal, поред опције Decimal Places, биће активне опције Precision и Scale. Precision означава максималну дужину броја која ће моћи да се сачува у бази података, рачунајући и целобројни и децимални део броја. Scale се односи само на максималну дужину децималног дела броја, а Decimal Places означава колико ће се бројева приказивати иза децималног зареза. Важно је уочити однос између Scale и Decimal Places. Уколико се за Scale упише 2, а за Decimal [27]
Microsoft Access 2010
Places 3, када се унесе број 100,456 база података ће запамтити 100,450 јер се памте само 2 броја иза децималног зареза, а приказују се 3, па је зато трећи број нула. Да би се сачувао и трећи број иза децималног зареза, потребно је и вредност за Scale поставити на 3. Међутим, уколико би вредност Scale била 4, а вредност Decimal Places 3, приликом уписивања броја 100,4567 била би запамћена вредност 100,457 јер би четврти број иза зареза утицао на заокруживање броја, а да је Scale вредност 3, онда четврти број не би утицао на заокруживање. Додатна подешавања за Мемо тип су готово иста као и код текста осим што у овом случају немате опцију да одаберете број карактера јер су поља овог типа намењена за унос нешто дужег текста. Изузетак опције ограничења броја карактера се односи и на поља типа Hyperlink. Булов тип податка (Boolean) је тип који има најмање додатних подешавања (слика 3.13).
Слика 3.13 – додатна подешавања Буловог типа података
Коју год варијанту да одаберете Yes/No, Тrue/False или On/Off Access ће генерисати квадратић за чекирање који ће бити празан ако одаберете No, False или Off, oдносно чекиран ако одаберете Yes, Тrue или On.
3.3 Lookup Wizard Једна од ставки која се налази на листи типова података а коју до сада нисмо поменули је Lookup Wizard... Овај чаробњак вам омогућава да за поље креирате падајућу листу из које ћете извршити избор од ставки које сами дефинишете. Да бисте ово видели на примеру, додајте табели особа још једну колону у којој ћете из падајуће листе бирати брачни статус особе. Прво што треба да урадите је да из падајуће листе за тип податка нове колоне BracniStatus одаберете Lookup Wizard. Потом добијате прозор као на слици 3.14.
[28]
Microsoft Access 2010
Слика 3.14 – Прозор Lookup Wizard
С обзиром да база Adresar још увек нема друге табеле нити упите одаберите другу опцију (I will type in the values that i want) која вам пружа могућност уноса вредности које ће се појавити у падајућој листи. Кликом на тастер Next прелазите на следећи корак и у овом прозору (слика 3.15) уписујете податке.
Слика 3.15 – Унос вредности у прозор Lookup Wizard
Примећујете да су унесени подаци у мушком и женском роду јер је у српском језику незгодно једном речју објединити брачни статус за мушкарце односно жене. У наредном кораку (слика 3.16) уписујете натпис који желите да буде приказан уместо назива колона (ако вам назив колоне како сте га сами дефинисали одговара, није потребно ништа мењати). Поље Limit To List треба чекирати јер тиме ограничавате унос података тако да се ништа друго не може унети у поље осим онога што се налази на падајућој листи. Поље Allow Multiple Values вам омогућава да изаберете више од једне ставке са падајуће [29]
Microsoft Access 2010
листе, рецимо да брачни статус буде и Neozenjen и Razveden што у овом случају нема смисла.
Слика 3.16 – Завршни корак Lookup Wizard-а
Кликом на тастер Finish завршавате чаробњак. Што се дизајна табеле тиче, тамо и даље пише да је колона брачни статус текстуалног типа. Међутим, ако кликнете на картицу Lookup (слика 3.17) приметићете да су се ту ствари измениле.
Слика 3.17 – Изглед Lookup картице по завршетку чаробњака
Падајућу листу над пољима колоне брачни статус (слика 3.18) сте могли да креирате ручно ако бисте унели све податке као на слици 3.17. Display Control опција je подешена на Combo Box што у ствари представља падајућу листу и ова опција је најпогоднија за Lookup тастере. Поред ове, постоје још и опције List Box – целокупна листа би била исписана а избор би се [30]
Microsoft Access 2010
вршио маркирањем жељене опције (ово се види тек на формама) и Теxт Box што нас практично враћа на обично текстуално поље. Row Source Type – oзначава одакле ће падајућа листа узимати вредности. Ако су вредности сачуване у некој другој табели или упиту одабраћете опцију Table/Query. Уколико сте их, као у претходном случају сами унели, одабраћете опцију Value List, a вредности откуцати у поље Row Source које се налази одмах испод у стилу као што је приказано на слици 3.17 – под наводницима и одвојене тачка зарезом. Bound Column и Column Count се користе у случају када су вредности сачуване у некој другој табели или упиту и представљају редни број колоне у другој табели у којој су вредности на које се позивате односно број колона друге табеле које ће бити приказане. Column Heads – такође за случај када су вредности сачуване у некој другој табели или упиту. Уколико одаберете Yes биће приказани називи колона (заглавља) када кликнете на језичак падајуће листе. Column Widths – ширина падајуће листе. List Rows – број редова који ће бити приказани (ова листа има 6 редова). List Width – уколико листа има више колона овде одређујете укупну ширину. Limit to List и Allow Multiple Values смо већ прокоментарисали код чаробњака, а Allow Value List Edits вам омогућава да мењате и допуњујете листу.
Слика 3.18 – Падајућа листа колоне брачни статус
3.4 Input Mask Као пример маске за унос података, користићемо базу података Adresar, а колону DatumRodjenja. Маску за унос можете направити искључиво за колоне текстуалног и датумског типа. Маску додајете у пољу Input Mask, Table Design [31]
Microsoft Access 2010
прозора. Маску можете унети ручно придржавајући се правила која ћемо касније навести или помоћу чаробњака ако кликнете на три тачке (слика 3.19).
Слика 3.19 – Додавање маске за унос података
Кликом на три тачкице позивате чаробњак (слика 3.20) прилагођен типу податка колоне, у овом случају Date/Time типу.
Слика 3.20 – Избор маске за унос података
У делу прозора Try It: можете пробати да унесете податке за конкретну маску. Избором одговарајуће маске прелазите у наредни прозор (слика 3.21) где бирате врсту карактера који ће се налазити у пољу кад кренете да уносите податке.
[32]
Microsoft Access 2010
Слика 3.21 – Избор карактера
Једна од предности маске за унос код датума је то што не морате уносити косе црте – оне ће бити унете ручно а ви само уносите дан, месец и годину у формату који одаберете. Уколико бисте маску креирали ручно, у простор за додавање маске, откуцали бисте вредности као на слици 3.22.
Слика 3.22 – Ручни унос маске
На слици видите да су дан, месец и година раздвојени косом цртом, иза њих стоје две тачке запете, па потом карактер који сте одабрали да се налази у пољу приликом уноса података. Разлика између бројева 9 и 0 је та што су места где стоје нуле обавезна за попуњавање, док места где стоје деветке нису. Иначе, и нуле и деветке означавају да се ради о нумеричким вредностима података. У табели 1 су представљени сви симболи и њихова значења која се могу искористити код маски за унос. [33]
Microsoft Access 2010
Табела 1. Симболи и значење
3.5 Validation Rule Валидационо правило представља формулу која се уноси у дизајн прозору табеле над одређеном колоном. Приликом уноса података у табелу, када будете уносили податке у ту колону, Access ће проверити да ли су испуњени услови из формуле и ако јесу дозволиће унос, у супротном приказаће обавештење односно валидациони текст (Validation Text) да подаци које сте покушали да унесете нису погодни за поље из одређеног разлога. Разлог због кога подаци нису погодни за поље ћете образложити у поменутом Validation Text пољу Field Properties прозора. За пример ћемо поново узети колону датум рођења. Желите да онемогућите унос датума у будућности јер би ово значило да имате особе које ће се тек родити. Уколико се пак покуша унос датума који није мањи од тренутног, желите да Access прикаже поруку Датум рођења МОРА бити у прошлости! Оно што треба да урадите је да у поље Validation Rule унесете следећу функцију <=Date(). Ово jе једна од многобројних предефинисаних функција Access-а, а користи се за исписивање тренутног датума. У поље Validation Text унесите наведену поруку (слика 3.23).
[34]
Microsoft Access 2010
Слика 3.23 – Унос валидационог правила и текста
Када сачувате измене у табели и отворите је у радном режиму, у поље колоне датум рођења унесите датум који је у будућности, рецимо 12/12/2212. Оно што ће бити приказано ако покушате да пређете на следеће поље је прозор са поруком (слика 3.24).
Слика 3.24 – Валидациони текст
3.6 Calculated Field Нова опција Access-а која није постојала у претходним верзијама је израчунато поље као тип податка. Ово вам омогућава да нова колона коју додате у табелу добија своје вредности на основу вредности неких других колона. За пример, у табелу особа додајте нову колону PunoIme а за тип податка одаберите Calculated. По одабиру овог типа податка добијате прозор Expression Builder (слика 3.25) у коме треба да испишете израз којим се рачуна вредност новог поља.
[35]
Microsoft Access 2010
Слика 3.25 – Прозор Expression Builder
С обзиром да желите да у новој колони имате исписано и име и презиме особа, оно што треба уписати је следеће: [Ime] & " " & [Prezime] На вама је да одаберете да ли ћете називе колона писати ручно или их просто двокликом селектовати из Expression Categories дела прозора. Између назива колона пише се знак & који означава спајање али у овом примеру имате и два одвојена знака навода. То је зато што желите да име и презиме буду исписани тако да имају размак између. Значи “ “ се рачуна као један размак и он, поред колона име и презиме, представља трећи део формуле па се из тог разлога и иза њега додаје &. Као што све у Access-у можете урадити ручно, тако и ако отворите табелу особа у дизајн режиму, можете у додатним својствима нове колоне видети израз који сте написали у претходном прозору (слика 3.26).
Слика 3.26 – Додатна својства израчунатог поља
Постоје бројни примери примене израчунатог поља. Покажимо сада како бисте на основу датума рођења, у новој колони Godine, приказали старост [36]
Microsoft Access 2010
особа. Када бисте то иначе рачунали обично бисте од текуће године одузели годину рођења. Међутим, тако бисте можда направили грешку јер ако је неко рођен у априлу 1992, а данас је март 2012, он још нема 20 година колико би било приказано према претходној формули. Најпрецизнији начин би био израчунати број дана разлике и поделити резултат са бројем дана у години. Проблем преступних година се решава тако што се дода 0.25 на број дана (365.25). Сада би се јавио проблем година са бројем иза децималног зареза који би се у Access-у решио коришћењем функције Int која враћа целобројну вредност децималног броја. Поштујући претходно наведено синтакса функције нове израчунате колоне би била: Int((Date()-[DatumRodjenja])/365.25) С обзиром да Calculated тип податка не може да функционише са вредностима које се мењају (Date()) јавио би се проблем који се решава фиксирањем тренутног датума у нову колону Danas. Просто у новој колони Danas у Default Value упишете функцију која исписује тренутни датум Date(). Сада би формула функционисала без проблема и изгледала овако: Int(([Danas]-[DatumRodjenja])/365.25) Резултат видите на слици 3.27.
Слика 3.27 – Израчунато поље за број година
За датум рођења 12/12/1986 видите да је број година у колони Godine једнак 25. Овај податак ће се за непуних шест месеци променити и тада ће износити 26 јер ће датум у колони Danas прећи 12/12/2012.
3.7 Примарни кључ Примарни кључ јединствено идентификује сваки запис у једној табели. Свака табела у бази података МОРА имати примарни кључ. Он може бити сложен и састојати се из више колона. Како да одредите примарни кључ за табелу Osoba? Да ли можете користити колону име? Не, јер се може јавити и по неколико записа са истим именом. Презиме? Не, јер можете имати више особа са презименом Петровић на пример. Адреса, Град? Ни једна од постојећих колона се не може узети за примарни кључ јер не може јединствено идентификовати особе. Када се ради са подацима о људима, обично се додељује посебан број (ID) који се користи за примарни кључ и који је јединствен за сваку особу. Вашој табели додајте једну колону на врху, назовите је OsobaID, за тип податка одаберите Autonumber и доделите јој улогу примарног кључа. Није обавезно [37]
Microsoft Access 2010
да примарни кључ буде на врху али је због прегледности пожељно. Колону додајете тако што кликнете на колону изнад које желите да се она налази и притиснете тастер Insert Rows (слика 3.28).
Слика 3.28 – Design трака са алатима
Улогу примарног кључа колони додељујете тако што означите колону и кликнете на иконицу Primary Key (слика 38) која ће потом бити наглашена. Након ових корака, као и након сваке измене, сачувајте промене кликом на иконицу Save или комбинацијом тастера Ctrl+S. Оно што ћете приметити у својствима колоне је да је опција Indexed промењена на Yes (No Duplicates). Самим тим што сте колону означили за примарни кључ, она постаје индексирана и не дозвољавају се дупликати (слика 3.29).
Слика 3.29 – Изглед дизајн прозора након додавања примарног кључа
3.8 Уношење података у табелу Податке у табелу можете уносити искључиво у радном режиму (Datasheet View). Потребно је да двокликом отворите жељену табелу у Navigation Pane [38]
Microsoft Access 2010
делу. Изглед празне табеле у радном режиму сте већ видели на слици 37. Ако сте икада попуњавали табелу у Excel-у, па и Word-у, умећете то да урадите и у Access-у. Оно што је у овом случају различито је да табелу не можете попуњавати вертикално већ само хоризонтално, односно уноси се запис по запис (ред по ред). Прелазак у наредну ћелију вршите притиском на тастере Tab, десну стрелицу или Enter. Прелазак у претходну ћелију вршите притиском на Shift+Tab. Уколико у неко поље односно ћелију унесете податак који за њу није предвиђен, програм ће вас на то упозорити и можете или унети исправан податак или прекинути унос притиском на тастер Escape. Ако притиснете исти тастер још једном прекинућете унос текућег записа и сви подаци које сте до тада унели у тај ред ће се поништити. Када завршите унос података за један запис и притиснете неки од тастера за прелазак у наредну ћелију, програм ће вас аутоматски пребацити на почетак новог реда, тако да можете прећи на унос података наредног записа. Оно што треба напоменути је да у поља типа AutoNumber податке не уносите ви већ их програм аутоматски генерише као што смо већ објаснили у поглављу о типовима података. Па тако, када се нађете у овом пољу, просто пређете на наредно и подаци ће аутоматски бити унети. Десиће се да у табели имате велики број записа и да сте управо завршили измену одређеног податка за неки од њих. Сада бисте желели да на најбржи могући начин пређете на унос података о новом запису. Да не бисте листали до краја табеле преко Scroll Bar-a или точкића на мишу, можете кликнути на иконицу New која се налази на Home рибону (слика 3.30). Пречица на тастатури којом ово можете урадити је Ctrl++ (држећи тастер Ctrl притиснете плус).
Слика 3.30 – Home трака са алатима
На слици 3.30 је приказан изглед Home рибона (траке са алатима) када је табела отворена у радном режиму. На слици видите и Formatting секцију у којој можете извршити скоро сва основна форматирања текста као у осталим апликацијама Microsoft Office пакета. На слици 3.31 су приказани тастери за навигацију записима (Record Navigation Buttons) којима се редом: враћате на први запис у табели, враћате на претходни, прелазите на наредни, скачете на последњи и на крају тастер за креирање новог записа којим се постиже исти ефекат као претходно поменутим тастером са Home траке са алатима. Овај скуп тастера се налази у [39]
Microsoft Access 2010
на доњем оквиру табеле, а са истим тастерима ћете се сретати и код форми. Бројеви у средини (11 of 133) означавају да сте тренутно на једанаестом запису, а табела их укупно има 133.
Слика 3.31 – Тастери за навигацију
На крају рецимо и то да измене у табели у смислу додатог новог записа, измене или брисања није потребно снимати – оне су снимљене аутоматски.
3.9 Сортирање У оквиру табеле у којој се налазе ваши записи, можете извршити сортирање по било којој колони. Табела је подразумевано сортирана по колони примарног кључа али можете рецимо пожелети да сортирате записе по презимену. Кликнућете на било коју ћелију у оквиру колоне Prezime (не морате селектовати целу колону), а затим на иконицу Sort Ascending, која се налази у Sort & Filter одељку Home траке са алатима (слика 3.32), јер сте сортирање желели да извршите у растућем редоследу. Да је било обрнуто, кликнули бисте на Sort Descending.
Слика 3.32 – Sort & Filter одељак
Сортирање можете извршити и по више колона, с тим што је примарна колона она на коју кликнете последњу. На пример, табелу особа сте сортирали у опадајућем редоследу по презимену, а потом по имену (слика 3.33).
[40]
Microsoft Access 2010
Слика 3.33 – Сортирање по две колоне
Сортирана презимена долазе до изражаја када имате записе са истим именом (Zoran и Sonja). Примећујете да колоне које су сортиране, у називу са десне стране имају приказану стрелицу. Да бисте уклонили сва сортирања потребно је да кликнете на иконицу Remove Sort (слика 3.32) и записи ће поново бити сортирани као на почетку – по примарном кључу.
3.10 Брисање записа Доћи ће време када вам одређени записи више неће бити потребни и желећете да их обришете. Постоје бројни начини брисања записа. Први начин је да кликнете у неку од ћелија записа који желите да обришете а потом на стрелицу поред иконице Delete која се налази на Records одељку Home траке са алатима. Иконица делује као да на њу није могуће кликнути међутим потребно је кликнути на стрелицу поред ње којом се отвара падајући мени (слика 3.34).
Слика 3.34 – Records одељак
[41]
Microsoft Access 2010
Тренутно су вам отворене две опције: да обришете запис (Delete Record) или колону (Delete Column) што није препоручљиво јер бисте овим поступком обрисали целу колону и не бисте могли да је вратите. Када кликнете на тастер Delete Record добићете прозор са обавештењем (слика 3.35), у коме је потребно потврдити Yes.
Слика 3.35 – Прозор са обавештењем о брисању записа
Други начин је да селектујете запис или више њих кликом на тзв. Record Selector део прозора (слика 3.36) и притиснете тастер Delete на тастатури или иконицу Delete (слика 3.34).
Слика 3.36 – Брисање више записа одједном
Трећи и последњи начин је да начините десни клик на Record Selector и кликнете на Delete Record (слика 3.37).
[42]
Microsoft Access 2010
Слика 3.37 – Опције манипулације записом
3.11 Измене података у оквиру записа До сада сте видели на који начин се нови записи додају у табелу и како се могу обрисати. У одређеним приликама десиће се да ће бити потребно изменити неки од записа који су већ унети. Рецимо, ваша познаница се удала и потребно је да јој промените презиме; неко је променио свој број телефона или адресу на којој станује... Све што треба да урадите да бисте изменили запис односно одређени податак у оквиру њега је да се позиционирате у ћелију у којој се податак налази и уместо тренутне, откуцате нову вредност податка. Све док сте у реду у коме мењате неки од података, на Record Selector делу прозора ће бити приказана иконица оловке (слика 3.38), која означава да је процес измене у току. Када завршите шта сте имали на уму, потребно је да пређете на наредни или било који други запис како би оловка нестала и измене биле сачуване. Ако пак желите да измените само део податка, потребно је да притиснете тастер F2 или да још једном кликнете негде у оквиру дате ћелије, као у Excel-у.
Слика 3.38 – Процес измене у току
Прекид измена података вршите притиском на тастер Escape. Вредност ће тада бити враћена на претходну.
3.12 Проналажење записа За сада у табели особа имате 99 записа. Замислите да имате 9999 записа у једној табели. Проналажење одређеног записа у оваквој гомили не би био ни мало лак посао. Наравно, Access вам за ову сврху нуди једноставан алат којим је проналажење записа изузетно олакшано. [43]
Microsoft Access 2010
Рецимо да тражите особу са презименом Stisovic. Потребно је да кликнете у било коју ћелију колоне Презиме, а потом на иконицу Find која се налази на Home траци са алатима у Find одељку (слика 3.39). Исти одзив добијате и комбинацијом тастера Ctrl+F.
Слика 3.39 – Find одељак
Овим поступком отварате прозор (слика 3.40) у коме је потребно да откуцамо критеријум претраге, на пример презиме Stisovic. Кликом на тастер Find Next програм ће вас одвести на запис са наведеним презименом (или неће ако презиме не постоји). Уколико има више записа са наведеним презименом потребно је да више пута кликнете на Find Next и сваки пут ће вас програм водити до записа који у себи садрже дато презиме.
Слика 3.40 – Прозор Find and Replace
У оквиру прозора Find and Replace имате различите опције претраге: 1. Look In – Можете претраживати у целој табели или у колони у коју сте претходно кликнули. 2. Match – Да ли оно што откуцате мора да се поклапа са оним у ћелији или може бити само део онога што се у њој налази. 3. Ако сте у Look In одабрали да претражујете само у колони дате табеле, у опцији Search можете изабрати да ли ћете претраживати у целој колони, од тачке у којој се налазите на доле или од дате тачке на горе. 4. Можете наметнути да се поклапа да ли су слова мала или велика ако чекирате Match Case.
[44]
Microsoft Access 2010
Када пронађете запис који тражите искључите Find and Replace прозор кликом на тастер Cancel. Ако бисте сада на пример желели да пронађете запис чији број телефона почиње цифрама 032, у прозор Find and Replace бисте унели следеће податке (слика 3.41):
Слика 3.41 – Критеријум претраге за телефон који почиње на 032
3.13 Проналажење и замена вредности у ћелијама Видели сте како функционише проналажење одређених записа на основу података у њима. Сада ћемо кренути корак даље и видећете како одређене податке у оквиру записа аутоматски заменити другим. Картица за замену вредности ћелија се налази у истом прозору – Find and Replace (слике 3.40 и 3.41). Можете позвати Find and Replace прозор претходним поступком или кликнути на иконицу Replace која се такође налази на Home траци са алатима у Find одељку (слика 3.39). Исти одзив добијате комбинацијом тастера Ctrl+H. Поступак замене је приказан на слици 3.42. У поље Find What куцате оно што желите да Access пронађе, а у поље Replace With, оно чиме желите да замените пронађено. Додатне опције су исте као и код варијанте за проналажење података. По завршетку уноса можете кликнути на Find Next чиме ће Access пронаћи ћелију у којој пише Јоvo; потом, клик на Replace да замените Јоvo са Jovan. Поступак понављате уколико има више особа са именом Јоvo. Уколико сте пак сигурни да желите да одједном замените имена особама са именом Јоvo у Jovan, кликнућете на Replace All. Ову операцију нећете моћи да поништите када је једном извршите о чему ће вас Access обавестити.
[45]
Microsoft Access 2010
Слика 3.42 – Replace картица
Replace функцију не морате користити само да замените целокупну вредност ћелије. Наиме, можете заменити само један њен део. На пример можете заменити све позивне бројеве 031 из колоне телефон бројевима 034. Потребно је само да у пољу Match одаберете Start of Field. Овим поступком ће цифре иза позивног броја остати исте а позивни бројеви ће бити замењени. Већ знате да ако се позиционирате у одређену колону па потом позовете Find and Replace прозор, Access ће вредности које откуцате тражити само у тој колони. Ако пак осенчите оно што хоћете да тражите, у нашем случају позивни број 031 и онда позовете Find and Replace прозор, вредност коју сте осенчили биће већ исписана у Find What одељку.
3.14 Филтрирање података Опција филтрирања података је веома корисна и веома моћна опција Access-а. Постоји неколико варијанти филтрирања и најбоље их је показати на примерима. Рецимо да треба да прикажете све особе са презименом Simic. За ово можете искористити најпростији филтер а то је Filter By Selection. Потребно је кликнути у једну од ћелија са презименом Simic па на иконицу Filter By Selection која се налази у Sort & Filter одељку Home траке са алатима (Slika 3.43).
Слика 3.43 – Sort & Filter одељак
Кликом на наведену иконицу отвара се падајући мени у коме имате опције да Access прикаже све записе са презименом Simic – Еquals “Simic“; све записе код којих презиме није Simic – Does Not Equal “Simic“; све записе који у [46]
Microsoft Access 2010
презимену садрже Simic – Contains “Simic“; и све записе који у презимену не садрже Simic – Does Not Contain “Simic“. Иконица Toggle Filter служи за уклањање филтера када је примењен или за поновно активирање последње коришћеног филтера. Ознака да је извршено филтрирање по одређеној колони је иконица у десном делу назива колоне или осенчено Filtered у доњем делу прозора табеле (слика 3.44).
Слика 3.44 – Filter By Selection за презиме Simic
То би било све што можете да урадите са Selection филтером. За напредније задатке имате на располагању велику иконицу Filter (слика 3.43), а исти одзив добијате и кликом на стрелицу у десном делу назива колоне. Рецимо да сада хоћете да вам буду приказане особе рођене након датума који наведете. Позваћете мени за филтрирање на један од два претходно наведена начина. У овом менију имате опције да чекирате све наведене датуме (Select All), да чекирате посебно вама интересантне датуме или да отворите Date Filters подмени и помоћу додатних опција (слика 3.45) дођете до жељеног резултата.
Слика 3.45 – Филтер и додатне опције за датумске колоне
[47]
Microsoft Access 2010
Да бисте прилазали особе рођене након одређеног датума одабраћете опцију After... Одабиром ове опције позивате прозор (слика 3.46) у коме је потребно да напишете тај датум.
Слика 3.46 – Прозор за филтер над датумским пољима
Кликом на ОК биће вам приказане све особе којe су рођене након 08/12/1980. Филтере, као и сортирања, можете комбиновати. Особе које сте филтрирали по датуму рођења, можете додатно филтрирати тако да буду приказани само они који имају децу. Поступак за ово би био да над колоном број деце примените филтер и у додатним опцијама одаберете Greather Than... (слика 3.47) Три тачкице, као и у претходном примеру, значе да ће бити отворен додатни прозор у коме је потребно уписати број 1 јер тражите ко од особа има једно или више деце. Додатне опције код филтрирања се разликују у зависности од типа податка колоне.
Слика 3.47 – Филтер и додатне опције за бројчано поље
Примењено филтрирање искључујете на поменути Toggle Filter тастер, у том случају ће филтрирање остати запамћено и моћи ћете поново да га примените кликом на исти тастер или кликом на Advanced иконицу (слика 3.43) па Clear All Filters, у том случају ће сви филтери бити поништени и Access их неће више [48]
Microsoft Access 2010
памтити. Ако желите да искључите филтер над само једном од филтрираних колона, кликните у оквиру те колоне, кликните на иконицу Filter, а потом на опцију Clear filter from (слике 3.45 и 3.47).
3.15 Индексирање Индексирања смо се минимално дотакли у поглављу о својствима типова података (3.2). Ако се сећате, тамо смо навели да поље Indexed има три опције: No, Yes (Duplicates OK) и Yes (No Duplicates). Индексирање је врста сортирања података. Оно је потребно да би база података брже и боље функционисала у смислу претраге и проналажења одређених података. Када користите упите, много ћете брже доћи до резултата ако сте круцијалне колоне индексирали. Сви примарни кључеви су индексирани и то на начин Yes (No Duplicates) што значи да не могу постојати два иста податка у тој колони. Колоне које не представљају примарни кључ индексирате са опцијом Yes (Duplicates OK). Када индексирате неку колону, креира се посебна табела која је сакривена и која у великој мери може помоћи Access-у да сузи и тиме убрза претрагу код упита. Али, у овоме лежи и мана индексирања – креира се додатна табела што значи да се подаци из индекисране колоне налазе на још једном месту и тиме заузимају додатни простор. Ово успорава и унос записа јер кад год унесте нови запис, Access мора да унесе податке и у индексирану колону у скривену табелу а поред ње и колону примарног кључа. Након овога мора опет да изврши сортирање индексиране колоне. Из овог разлога не треба претеривати са индексирањем. Користите га само за колоне по којима често сортирате или филтрирате податке код упита. Када бисте рецимо индексирали колону Pol табеле Osoba скривена табела би изгледала овако (слика 3.48):
[49]
Microsoft Access 2010
Слика 3.48 – Део скривене индекс табеле
На слици је приказан само део скривене табеле али довољан да приметите да је табела сортирана по колони Pol у растућем редоследу, а не по колони OsobaID. Access би сада приликом претраге особа мушког пола који задовољавају неки услов на пример, прегледао само оне особе код којих је пол једнак 1 а остале занемарио. Да колона није индексирана Access би тражио међу свим особама па тек онда пронашао особа који задовољава дати услов претраге.
4. Везе Пошто смо покрили основе о табелама, сада је потребно да проширимо ствари и појаснимо како стоје ствари код база података које се састоје од више табела. Базе података од једне табеле (равне базе) су врло ретке и готово да их никада нећете правити, тако да у суштини тек сада крећемо са озбиљнијим радом. Знање из претходних поглавља ће вам сада бити и те како корисно и практично ћете га сада само надоградити. Дизајн базе података је основа када говоримо о базама података са више табела. Без коректног дизајна, база података неће функционисати како треба. Стога је потребно да управо овом кораку посветите највише времена и то ће вам се на крају свакако исплатити. Неке просте задатке можете одрадити директно у Access-у али за сложеније базе података се препоручује да их прво дизајнирате на папиру или у неком од програма који има ову намену. Један од таквих програма је поменути алат ERwin у коме можете нацртати све табеле са колонама и одредити везе између табела. Наравно да никада у старту нећете моћи овај корак извршити беспрекорно и да дизајн подлеже променама па би се могло рећи да је поступак итеративан. [50]
Microsoft Access 2010
На основу претходно изреченог, базу података особа, бисте коришћењем ERwin-а, дизајнирали као на слици 4.1. Ово је логички модел базе података.
Слика 4.1 – Логички модел базе података у ERwin-у
Циљ ове базе података би био: чување информација као што су имена, адресе, бројеви телефона и остали подаци о познаницима и пријатељима. Поштујући основне смернице за дизајн и нормализацију релационих база података, табела Особа је „растерећена“ креирањем двеју мањих табела тзв. „шифарника“. Шифарницима се називају табеле које углавном садрже ID односно идентификациони број (примарни кључ) и назив нечега. У овом случају то су табеле Pol и BracniStatus и оне су преко пренесених кључева повезане са табелом Osoba. Креирана је и табелa Dete са подацима о деци ваших познаника из табеле Особа. У ERwin-у можете одредити и типове података за колоне ваше будуће базе. Ово радите на физичком нивоу и он је приказан на слици 4.2.
[51]
Microsoft Access 2010
Слика 4.2 – Физички модел базе података у ERwin-у
На крају, од физичког ERwin модела, можете методом која се назива Forward Engineering (директно моделирање) креирати шему базе података и такву базу генерисати у Access-у чиме ће се аутоматски бити креиране табеле и релације између њих. Везе које се у ERwin-у најчешће користе су идентификујуће (веза OSOBA – DETE) и неидентификујуће (везе POL – OSOBA и BRACNI_STATUS – OSOBA). Ове везе се још називају јаке односно слабе везе. Јака (идентификујућа) веза се користи када постоји слаб односно зависан ентитет (табела). То је у овом случају табела Dete јер она не би постојала да не постоји табела Osoba. Кроз јаку везу табела Dete је добила и примарни кључ свог родитеља односно табеле Osoba. Поред ове колоне у примарном кључу табеле Dete учествује и колона Rbr (редни број). Ово је класичан пример сложеног примарног кључа. Дакле, дете је јединствено идентификовано тако што му се зна родитељ преко колоне OsobaID и што се зна које је то дете дотичног родитеља преко колоне Rbr. На пример, ако би особа 1 имала двоје деце, примарни кључ првог би био 1-1, док би примарни кључ другог детета био 1-2 (први број се односи на колону OsobaID, док се други број односи на колону Rbr). Слабе (неидентификујуће) везе се користе између независних ентитета (табела) чиме примарни кључ надређене постаје пренесени кључ подређене табеле. Код ових веза постоји опција No Nulls/Nulls Аllowed којој одговара опцији Required у Access-у. Означава да ли је унос обавезан или не. У овом случају веза BRACNI_STATUS – OSOBA нема обавезан унос што можете видети по кружићу на страни табеле BRACNI_STATUS. Значи да у табели OSOBA, не морате уносити брачни статус, док је унос пола обавезан. [52]
Microsoft Access 2010
Из претходног би се могло закључити да независни ентитети имају прост примарни кључ (само једна колона је примарни кључ), док зависни ентитети имају сложен примарни кључ (више колона у примарном кључу).
4.1 Поступак повезивања табела Након креирања дизајнираних табела, уколико сте исте креирали ручно у Access-у, потребно их је повезати. Табеле повезујете преко Relationship Managera који отварате кликом на иконицу Relationships лоцирану на Database Tools траци са алатима (слика 4.3).
Слика 4.3 – Database Tools трака са алатима
Када први пут отварате Relationship прозор добићете под прозор у коме бирате табеле које ћете повезивати. У овом случају, двокликом на сваку, додајте све четири табеле. Прозор за додавање табела је готово исти као код упита и можете га у сваком тренутку поново активирати ако сте неку од њих заборавили. Просто кликнете на иконицу Show Table лоцирану на Design траци са алатима (слика 4.4) која је активна док сте у Relationship прозору.
Слика 4.4 – Design трака са алатима
Табеле у Relationship прозору су приказане на слици 4.5.
[53]
Microsoft Access 2010
Слика 4.5 – Табеле у Relationship прозору
У свакој табели је иконицом представљен њен примарни кључ. Потребно је да табеле повежете као на слици 4.1 као када сте везе дизајнирали на папиру. То постижете кликом и превлачењем примарног кључа ка спољном кључу у другој табели. Примарни кључ постоји независно док пренесени кључ постаје то што јесте тек када узме учешће у вези. За колоне примарног и пренесеног кључа морате дефинисати исте типове података и подаци се морају поклапати. BracniStatusID из табеле BracniStatus превлачите до BracniStatus у табели Osoba који за ову табелу представља пренесени кључ. Исто важи за PolID који превлачите до Pol у табели Osoba. Код везе између табела Osoba и Dete ствар је мало другачија јер су сада Osoba надређена табеле и од ње полази веза ка подређеној табели Dete. Овде везу остварујете преко поља OsobaID ка пољу DeteRoditelj. Значи у пољу DeteRoditelj табеле Dete ће бити исписан идентификациони број особe која је родитељ том детету. Када превучете колону једне табеле (примарни кључ) ка колони друге табеле (пренесени кључ) и пустите леви тастер миша, искочиће Edit Relationships прозор као на слици 4.6.
[54]
Microsoft Access 2010
Слика 4.6 – Прозор Edit Relationships
На слици видите да се веза One-To-Many остварује између колона BracniStatusID табеле BracniStatus и BracniStatus табеле Osoba. Веза један према више (One-To-Many) означава да се BracniStatusID у табели BracniStatus може појавити само једном, а у табели Osoba више пута (биће више особа са истим брачним статусом). Сада је потребно само да кликнете на тастер Create да бисте креирали везу. Табеле након повезивања су приказане на слици 4.7.
Слика 4.7 – Повезане табеле у Relationship прозору
По завршетку повезивања табеле потребно је сачувати измене чиме ће везе и распоред табела остати запамћени. [55]
Microsoft Access 2010
4.2 Измене и брисање веза Повремено ће се указати потреба и за овим активностима. Да бисте позвали Edit Relationships прозор (слика 4.6) кликните десним тастером на везу и одаберите Edit Relationship. Исти ефекат постижете и двокликом на везу. Везу бришете тако што кликнете на њу и притиснете тастер Delete на тастатури или десни клик на везу па опција Delete. Када кликнете на везу линија ће бити подебљана у односу на остале.
4.3 Референцијални интегритет Све што бисте тренутно могли да знате о референцијалном интегритету је да код Edit Relationships прозора на слици 4.6 постоји опција Enforce Referential Integrity. Ово је опција коју би увек требало да чекирате и односи се на примену референцијалног интегритета на везу. Дакле, прво што бисте сада требали да урадите је да на све три везе примените референцијални интегритет. Тада везе попримају нешто другачији изглед (слика 4.8).
Слика 4.8 – Везе са референцијалним интегритетом
Наиме, по ознакама 1 и (више) сада можете видети која је табела надређена а која подређена. Примарни кључ је дефинисан иконицом и на његовој страни стоји 1, а на страни пренесеног кључа стоји . По овим ознакама такође видите да је веза типа 1:М (један према више). Тип везе се још назива и кардиналитет, а поред овог, у Access-у такође постоје везе кардиналитета 1:1 (један према један) и М:М (више према више). Везе 1:1 се врло ретко користе а везе М:М се решавају преко две везе 1:М увођењем асоцијативног ентитета. [56]
Microsoft Access 2010
Референцијални интегритет се односи на то да пренесени кључ може узети искључиво неку од вредности примарног кључа из надређене табеле. Овим се у знатној мери смањује могућност грешке. Када примените референцијални интегритет на неку везу, опције Cascade Update Related Fields и Cascade Delete Related Records (слика 4.9) постају активне. Прва опција, каскадно ажурира повезане колоне. То значи да, уколико се промени примарни кључ табеле, вредност тог примарног кључа у улози пренесеног кључа одговарајуће табеле ће се аутоматски ажурирати, тј. добити нову вредност. Опција каскадног брисања записа слично претходној, брише све податке о запису у подређеној табели када повезани запис обришете из надређене табеле.
Слика 4.9 – Примењен референцијални интегритет
Са опцијом каскадног брисања треба бити обазрив док је опција каскадног ажурирања изузетно корисна осим код колона типа Autonumber јер се подаци у њима не могу мењати па тада ова опција губи смисао. У случају на слици 67 каскадно брисање би било корисно јер би брисањем одређене особе била обрисана и сва њена деца.
4.4 Коришћење Lookup-a код повезаних табела Једну варијанту Lookup-a смо обрадили у поглављу 3.3. То је било коришћење Lookup чаробњака када самостално уносите вредности у листу из које касније вршите избор података. Сада ћемо показати како да преко Lookup чаробњака бирате вредности из колоне која се налази у другој табели. [57]
Microsoft Access 2010
За пример ћемо се послужити табелама Osoba и BracniStatus. Знате да су ове две табеле повезане преко колоне BracniStatus, која у табели Osoba представља пренесени кључ. С обзиром да је у табели BracniStatus, примарни кључ колона BracniStatusID, a oво је колона нумеричког типа Autonumber, тако, у табели Коntakti у колону BracniStatus можете уносити само нумеричке вредности и то само оне које постоје у табели BracniStatus у колони BracniStatusID. Oво је због примењеног референцијалног интегритета на ову везу, као што смо објаснили у поглављу 4.3. Коришћењем Lookup-a сада ћете моћи да из падајуће листе заправо бирате назив брачног статуса који је меморисан у табели BracniStatus. Tиме нећете оптерећивати Access гомилом текста, већ ће он за себе и даље памтити ID односно број брачног статуса а вама ће на екрану бити приказан назив. Поступак за покретање Lookup чаробњака је потпуно исти као у поглављу 3.3, стим што у првом прозору бирате опцију I want the lookup field to get the values from another table or query. Oво значи да желите да Lookup поље узима вредности из неке табеле или упита. Која је то табела или упит бирате у наредном прозору (слика 4.10).
Слика 4.10 – Избор извора података
Потом је потребно да пребаците све колоне које су вам потребне за ваш Lookup. Рекли смо из ког разлога нам требају ове две колоне (слика 4.11).
[58]
Microsoft Access 2010
Слика 4.11 – Избор колона
По завршетку рада са чаробњаком Lookup картица у одељку за својства колона од колоне BracniStatus добија изглед као на слици 4.12.
Слика 4.12 – Lookup картица у дизајн режиму табеле
Уколико Lookup креирате помоћу чаробњака, морате га одрадити пре него што повежете табеле у Relationships прозору. У супротном вам Access неће то дозволити. Ипак, уколико сте искусан корисник и знате да Lookup поставите ручно, то можете урадити и након дефинисања веза.
[59]
Microsoft Access 2010
4.5 Преглед и измена података кроз подтабеле Подтабелом се сматра део подређене табела односно табеле ка којој иде веза. Када се нађете у надређеној табели у режиму за унос података (Datasheet View), можете кликом на знак + који се налази у левом делу прозора табеле (слика 4.13) отворити део подређене табеле филтриран по критеријуму записа испред ког сте кликнули на знак +. На слици 4.13 је приказана табела BRACNI_STATUS отворена у Datasheet режиму и у оквиру ње отворена подтабела за све разведене мушкарце из табеле OSOBA.
Слика 4.13 – Отворена подтабела
У оквиру подтабеле можете без проблема вршити унос, измене или брисање података а Access ће поступак протумачити као да сте унос, измену или брисање извршили у главној табели. Чак и у оквиру подтабеле особа са слике 4.8 имате подтабелу. С обзиром да је табела Osoba повезана са табелом Dete тако да је табела Dete подређена, кликом на знак + испред неког од приказаних записа, добили бисте податке о његовој деци (уколико их има). Ово би било корисно у случају да нека од особа добије дете. Просто бисте отворили табелу особа, кликнули на + испред особе која је добила дете и у подтабелу унели податке о детету.
4.6 Редослед уноса података у табеле и могући проблеми Начин уноса података у табелу смо објаснили у поглављу 3.8, но, када у вашој бази имате већи број табеле, од којих су при том неке независне а неке зависне, потребно је водити рачуна о редоследу по ком податке уносите у табеле. Редослед уноса података је такав да је прво неопходно унети податке у све независне табеле, а тек након тога и у зависне. У нашем примеру би требало [60]
Microsoft Access 2010
податке прво унети у табеле POL и BRACNI_STATUS, након тога у табелу OSOBA и тек на крају у табелу DETE. Референцијални интегритет вам свакако не би дозволио да унесете податке о детету ако оно нема родитеља, што је на крају крајева и лочично. Поред тога, подаци које уносите у ћелије морају бити одговарајућег типа који сте претходно дефинисали у Design погледу табеле. Тако, није могуће унети текстуални карактер у ћелију за чију је колону предвиђен тип Number или Date/Time. Уколико пак и погрешите, Access ће вас већ након покушаја преласка у наредну ћелију обавестити о грешци. За разлику од овог типа грешке, може се десити да у ћелију колоне примарног кључа покушате да унесете податак који већ постоји у тој колони или да у ћелију колоне пренесеног кључа покушате да унесете податак који не постоји као примарни кључ надређене табеле. У овом случају би се прозор са поруком о грешци јавио тек на крају записа, тј. приликом покушаја преласка у наредни ред. Овакав начин извештавања о грешци може кориснику погрешно сугерисати да је грешка начињена приликом уноса податка у последњу ћелију записа. Ако се овако нешто деси немојте се збунити већ поруку пажљиво прочитајте.
5. Увоз и извоз података 5.1 Увоз података у Аccess из Excela Access је прилично флексибилан софтвер по питању увоза података. Рецимо да ако негде имате податке у електронској форми, Access ће моћи да их увезе. Ово је, сложићете се, прилично корисно. Импорт вршите преко иконица које се налазе на Import & Link одељку (слика 5.1) Еxternal Data траке са алатима.
Слика 5.1 – Import & Link одељак
И сами можете претпоставити коју иконицу ћете користити за увоз из Excela. Кликом на њу добијате прозор (слика 5.2) у коме кликом на тастер Browse проналазите ваш Excel фајл.
[61]
Microsoft Access 2010
Слика 5.2 – Прозор за увоз из Excel-a
Овде имате додатне три опције: Да увезете податке као нову табелу, Да придружите податке постојећој табели или Да направите линк ка табели са подацим у Excel-у Најчешће коришћен начин је да увезете податке као нову табелу па да структуру табеле прилагодите уколико је то потребно. У наредном прозору (слика 5.3) видите податке које ћете увести и можете, чекирајући опцију First Row Contains Column Headings, рећи програму да први ред Excel табеле може искористити као називе колона за вашу будућу табелу.
[62]
Microsoft Access 2010
Слика 5.3 – Будући изглед увезене табеле
Након овог, долазите до можда најважнијег прозора у овом процесу (слика 5.4) у коме можете изменити називе колона и типове података за исте ако вам се не свиђа тип податка који је Access препознао. Такође, можете неке колоне индексирати (о индексирању ће касније бити више речи) или одлучити да поједине колоне не увезете – Do not import field (Skip).
Слика 5.4 – Избор типова података и назива колона [63]
Microsoft Access 2010
Потом долазите до прозора у коме бирате која ће од постојећих колона бити примарни кључ. Уколико у Excel табели немате такву колону, можете препустити Access-у да сам дода нову колону типа Autonumber на почетак и постави је за примарни кључ (Let Access add primary key). Трећа опција (No primary key) ће рећи програму да уопште не желите примарни кључ. Наравно, у дизајн режиму будуће табеле ћете накнадно моћи да га додате или да извршите неке додатне измене.
Слика 5.5 – Избор примарног кључа
На крају, долазите до прозора у коме дајете назив табели. Кликом на Finish Access ће вас упитати да ли желите да сачувате ове кораке због евентуалног будућег увоза. Прескочите овај корак и отворите табелу у Datasheet режиму да видите резултат (слика 5.6).
[64]
Microsoft Access 2010
Слика 5.6 – Изглед увезене табеле у Аccess-у
5.2 Увоз података у Access из Access-a Access може вршити увоз табела, упита, форми, извештаја, итд. из другог Access документа. Поступак је још лакши него код увоза из Excel-a и укратко ћемо га описати у неколико корака. На Import & Link одељку је потребно кликнути на иконицу Access чиме, као и у претходном поглављу, отварате прозор у коме проналазите фајл из кога желите да увезете неки објекат. У овом прозору сада имате две опције: Да увезете објекат као нови или Да направите линк ка табели (важи само за табеле) У наредном кораку бирате објекте које желите да увезете (слика 5.7). На слици видите да можете увести све објекте који се могу појавити у Access-у. Не морате држати тастере Shift или Ctrl да бисте извршили вишеструку селекцију већ простим кликом на објекат вршите његову селекцију односно деселекцију.
[65]
Microsoft Access 2010
Слика 5.7 – Селектовање објеката за увоз
Објекат добија назив као и у изворном фајлу. На крају ће вас Access поново питати да ли желите да сачувате кораке за увоз из истог фајла што и овде можете прескочити. Изглед увезене табеле радник приказан је на слици 5.8.
Слика 5.8 – Увезена табела из Access-а
[66]
Microsoft Access 2010
5.3 Увоз података у Access из текстуалних датотека Под текстуалним датотекама са подразумевају само фајлови са екстензијом .txt Поступак увоза се у односу на увоз из Excel-a разликује у два корака. Први је прозор (слика 5.9) у коме бирате да ли су подаци одвојени зарезом, табулатором итд. или су представљени у форми табеле.
Слика 5.9 – Избор форматирања података у текстуалном фајлу
Други корак који се разликује је прозор (слика 5.10) у коме бирате шта је то што смислено дели податке (табулатор, цртица, зарез, размак или нешто друго).
[67]
Microsoft Access 2010
Слика 5.10 – Избор начина поделе података
5.4 Извоз података из Access-a Извоз података из Аccess-a није толико уобичајен поступак али вам повремено може затребати. Из Access-a можете извозити табеле, упите, форме и извештаје у Word или Excel, или креирати PDF фајлове од њих. Поступак је изузетно једноставан. Када се нађете у објекту који желите да извезете, пређете на External Data траку са алатима и са Export одељка одаберете у који формат желите да извезете објекат. Појавиће вам се прозор у коме специфицирате назив и локацију за објекат који извозите. Исти резултат можете добити и десним кликом на жељени објекат у Navigation Pane делу и избором програма у који желите да извезете објекат из Export менија. Уколико сте на пример филтрирали табелу и желите да је извезете такву каква тренутно јесте на екрану, неопходно је да чекирате опцију Export data with formatting and layout.
[68]
Microsoft Access 2010
6. Упити Упит је на првом месту објекат у бази података. Упит је у суштини питање. Питање које желите да поставите бази података, а база памти питање – никад одговор. Сачувани упит екстрахује из табеле (табела) податке који су у том тренутку одговор на ваше питање. Резултат упита тј. одговор на ваше питање је такође у форми табеле која се назива View односно табела погледа. Многи простији упити се могу урадити преко филтера. Упите ћете најбоље разумети на примерима тако да ћемо у наредним поглављима настојати да их тако и прикажемо. Биће приказан текст упита (питање), изглед упита у QBE прозору и одзив упита у виду табеле погледа. За почетак ћемо и даље користити базу Adresar.
6.1 Креирање и чување упита Да бисте креирали упит, потребно је прво прећи на Create траку са алатима, а потом кликнути на иконицу Query Design (слика 6.1), чиме се отвара QBE (Query Builder Editor) прозор (слика 6.2).
Слика 6.1 – Queries одељак Create траке са алатима
Већину упита ћете креирати овим путем, а само неке, као на пример упит за проналажење дупликата, путем чаробњака – Query Wizard.
[69]
Microsoft Access 2010
Слика 6.2 – Прозор за дизајнирање упита (QBE едитор)
Прво што треба да урадите по појављивању овог прозора је да одаберете табелу односно табеле у којима се чувају подаци који ће бити потребни за упит. То чините простим двокликом или селектовањем табеле па кликом на тастер Add. По завршетку овог корака потребно је затворити прозор Show Table, који касније у сваком тренутку можете опет позвати кликом на иконицу Show Table која се налази на Design траци са алатима (слика 6.3). Ова, као и још неке додатне траке са алатима ће се појављивати повремено у току рада са различитим Access објектима.
Слика 6.3 – Design трака са алатима
Прозор за дизајнирање упита сада добија изглед као на слици 6.4.
[70]
Microsoft Access 2010
Слика 6.4 – Прозор за дизајнирање упита након додавања табеле
У горњем делу прозора се налази селектована табела, а у доњем простор где комбиновањем колона и разних услова постављате питање односно упит. Креирајте сада упит којим ће се приказивати име, презиме, мејл, датум рођења и брачни статус особе. Оно што је потребно да урадите је да наведене колоне прикажете у доњем делу прозора у пољу Field. За ово постоје три начина: Двоклик на жељену колону у табели Превлачење жељене колоне из табеле у доњи део прозора Клик на језичак у десном делу поља Field и избор из падајуће листе Доњи део прозора за дизајнирање упита по додавању наведених колона добија следећи изглед (слика 6.5).
Слика 6.5 – Поља новог упита
[71]
Microsoft Access 2010
Упит је потом потребно сачувати кликом на иконицу Save или комбинацијом тастера Ctrl+S. Имена упитима доделите тако да буду смислена и да без позивања упита знате шта ће бити приказано. Овом упиту ћемо доделити име KraciPodaciOOsobi. Упит је потом сачуван у посебном делу Navigation Pane дела прозора под Queries, а покрећете га кликом на иконицу View или Run (код акционих упита) док сте још у дизајну упита или двокликом на назив упита када је затворен (слика 6.6).
Слика 6.6 – Иконице за покретање упита
Код упита морате изузетно водити рачуна о изменама података. Свака промена података у табели погледа (резултату упита) доводи до промене истих података у основној табели из које су подаци екстраховани. Резултати претходног упита приказани су на слици 6.7. Када бисте сада особау Ivana Pajic име променили у рецимо Marija, то би се такође променило и у табели особа. Поред измене података, можете и обрисати записе из табеле, брисањем истих у резултатима упита.
[72]
Microsoft Access 2010
Слика 6.7 – Резултат упита KraciPodaciOOsobi
Процес измене односно брисања података наравно функционише и у супротном смеру тако да ако обришете неке записе из табеле или измените одређене податке, они ће природно бити измењени односно обрисани у резултату упита.
6.2 Измене упита Да бисте извршили измене на неком упиту, потребно је да га отворите у дизајн режиму (Design View). То постижете десним кликом на упит у Navigation Pane-у и кликом на опцију Design View или отварањем упита на неки од већ поменутих начина и кликом на иконицу View која се налази у Views одељку Home траке са алатима. Сада можете додати неке нове колоне упиту, уклонити постојеће, изменити редослед њиховог приказивања, сакрити колоне из резултата упита, сортирати
[73]
Microsoft Access 2010
их и најважније, филтрирати на различите начине. На крају, не заборавите да сачувате измене које сте направили. Филтрирање се обавља дефинисањем жељених критеријума које у комбинацији са различитим операторима уносите у поље Criteria. Постоје четири врсте оператора које можете користити: Математички (аритметички) – користе се за извођење математичких операција као што су сабирање (+), одузимање (–), множење (*), дељење (/), степеновање (^), итд. Ови оператори се углавном користе за писање израза а врло ретко у самом пољу критеријума. Оператори поређења – се за разлику од математичких веома често користе у самом критеријуму за упоређивање вредности у резултату упита са оном коју ви наведете. Можете користити: мање (<), веће (>), мање или једнако (<=), веће или једнако (>=), једнако (=) и различито (<>) Логички – међу овим операторима се најчешће користе And (све вредности у критеријуму морају испунити услов да ни резултат био добар), Or (једна или више вредности мора испунити услов), Eqv (све или ниједна вредност морају испунити услов), Not (негација) и Xor (само једна од вредности мора испунити услов) Специјални – у ову групу спадају оператори & (комбинује низове карактера у један), + (комбинује низове карактера у један али га дефинише као Null вредност ако је било који од низова Null), Is Null/Is Not Null (одређује да ли је податак Null или Not Null), Like, Between And (одређује да ли су подаци у низу између две вредности које наведете) и In (одређује да ли су подаци у опсегу који наведете) Критеријум представља израз који Access упоређује са вредностима у колонама упита како би утврдио да ли да те вредности укључи у резултат упита. Сам израз код критеријума може бити комбинација оператора, константи (вредности у колонама), функција и идентификатора (називи колона). У наредним поглављима ће на примерима бити приказани различити критеријуми филтрирања.
6.2.1 Додавање критеријума за филтрирање Филтрирање код упита ћемо прво показати код поља текстуалног типа. Направите упит који приказује име, презиме, датум рођења и град особа које су рођене у граду Чачку. Оно што треба да урадите је да у поље Criteria над колоном град упишете назив града по коме желите да извршите филтрирање, односно да прикажете само одабране податке за особе из тог града, у овом случају Чачка. Дизајн упита је приказан на слици 6.8, а резултат на слици 6.9. [74]
Microsoft Access 2010
Знакове навода Access додаје аутоматски када се позиционирате ван поља тако да их не морате ручно уносити.
Слика 6.8 – Дизајн упита за особе из Cacka
Упит сачувајте под називом OsobaCacak.
Слика 6.9 – Резултат упита OsobaCacak
Уколико бисте желели да направите упит којим бисте приказали особе из Краљева, само бисте уместо Cacak у поље Criteria откуцали Kraljevo и упит сачували под другачијим називом (OsobaKV) али бисте морали да искористите опцију Save Object As која се налази у File позадинском менију. Поред филтрирања текстуалних поља, можете филтрирати и поља нумеричког типа. За овај пример направите упит који приказује име, презиме и број деце за особе које имају децу. Да бисте ово урадили потребно је да у поље Criteria колоне BrojDece откуцате >0 (слика 6.10). Као што већ можете закључити, Access ће приказати податке о особама које имају више од нула деце, значи једно и више. Упит сачувајте као DecaViseOdNula.
Слика 6.10 – Дизајн упита DecaViseOdNula [75]
Microsoft Access 2010
Код поља нумеричког типа неће бити додати наводници. Ово је једна од ствари којом можете у самом упиту разликовати типове података различитих колона. Коју бисте вредност унели у поље Criteria ако бисте желели да прикажете особе које имају мање од троје деце? (<3) Поред знакова < и > можете користити и <= (мање или једнако), >= (веће или једнако) или <> (различито). Ако је број који тражите на пример једнак 3, нећете куцати =3 већ само 3 као што ни у примеру за Чачак нисте куцали =Cacak. Да бисте одредили број у неком опсегу, рецимо број деце између двоје и четворо, користићете следећу синтаксу between 2 and 4. Резултат овквог упита би биле све особе са двоје, троје или четворо деце. Филтрирање над пољима датумског типа је доста слично и ево једног примера: Приказати ID, име, презиме, адресу и датум рођења особа рођених после 1973 године. Упит сачувати под називом RodjeniPosle73. Дизајн упита је приказан на слици 6.11.
Слика 6.11 – Дизајн упита са филтрирањем датума
У поље Criteria је потребно унети знак веће, који код датумских поља представља датуме након оног који откуцате, и последњи дан у 1973. години односно 31/12/1973 јер треба приказати све особе рођене после ове године. Access ће аутоматски, као што код текстуалних поља додаје наводнике, у овом случају додати тарабе. Код датумских поља такође можете користити операторе поређења >=, <= и between and. Потребно је водити рачуна о формату уноса датума који је подешен на вашем рачунару у Region and Language одељку Control Panela јер се може догодити да покушавате да унесете датум у једном формату и Access га не прихвата, а нисте подесили такав формат у поменутом одељку. Ово подразумева и подeшавање сепаратора за дан, месец и годину који може бити у виду тачке или косе црте (друга опција је чешћа). Поменули смо у претходним поглављима да Access за Булов тип податка приказује квадратиће за чекирање (Check Box) који су чекирани за вредности True, On или Yes, а нису чекирани за False, Off или No. Да бисте видели филтрирање оваквих поља на примеру, направите упит који приказује име, презиме и запослење особа. Упит сачувајте под називом Zaposlenje. Резултат овог упита ће бити имена и презимена свих особа из ваше табеле, као и колона запослење било да је квадратић чекиран или не. Уколико бисте сада [76]
Microsoft Access 2010
желели да буду приказани само оне особе које су запослене, односно оне код којих је квадратић чекиран, у поље Criteria ћете унети Yes (слика 6.12) или број 1 или True или On. Уколико пак желите супротан резултат, унећете No, број 0, False или Off.
Слика 6.12 – Особе са запослењем
6.2.2 Џокерски знаци код филтрирања Понекад оператори поређења које смо навели (=, <, >, <=, >=) неће бити довољни да се добије жељени резултат упита. Желећете да филтрирате по почетном слову имена, крајњим словима презимена, дела адресе, итд. То све можете постићи управо коришћењем џокерских знакова. Направите упит који ће приказивати имена, презимена, особаID и датум рођења особа чије презиме почиње словом S. Стварајте навику да пре додавања критеријума проверите да ли упит функционише са наведеним колонама. Број записа који буде приказан без критеријума је максималан број записа и када будете убацили неки од критеријума резултат који ћете добити ће бити мањи или у ретким случајевима исти као број записа без критеријума. Дизајн овог упита је приказан на слици 6.13.
Слика 6.13 – Дизајн упита PrezimeNaS
Критеријум за постизање задатог резултата је S*. * је симбол који замењује низ карактера. Када унесете наведени критерујм и кликнете ван тог поља Access аутоматски додаје префикс Like, а унети критеријум ставља под наводнике. Упит сачувајте под називом PrezimeNaS. Резултат је приказан на слици 6.14.
[77]
Microsoft Access 2010
Слика 6.14 – Резултат упита PrezimeNaS
Знак * можете ставити на почетак критеријума па тако ако бисте у критеријум ставили “*ic” добили бисте сва презимена која се завршавају на ic. Овај џокерски знак није предвиђен само за текстуална поља. Можете га користити и над пољима датумског типа. Овде имате изузетак да морате ручно унети оператор Like и знаке навода. Рецимо да хоћете да прикажете све особе рођене 23. дана неког месеца неке године. У критеријум за поље датум рођења биће потребно унети Like “23/*”. Како бисте приказали особе рођене у јулу? (Like "*/07/*"). Поред * која замењује низ карактера, користи се и знак питања - ? којим се замењује један карактер. Који бисте критеријум унели у упиту PrezimeNaS да бисте добили сва презимена на слово С али која имају 5 слова? (Like "S????") У табели 2 су приказани џокерски знаци и примери како их можете користити. Табела 2. Џокерски знаци и њихово значење Симбол Опис *
Замењује низ карактера.
?
Замењује једно слово. Претражује шта год стоји заградама. Претражује све осим оног заградама.
[] ! –
Замењује слова у интервалу.
#
Замењује један број. [78]
у
Пример пр* - пример, предмет, предлог... слов? – слова, слово, слову С[ао]ња – Сања, Соња
у
с[!ао]д – сид, суд, сед,… к[а-д]д – кад, кбд, квд, кгд, кдд 1#3 – 103. 113. 123...
Microsoft Access 2010
6.2.3 Проналажење празних ћелија – NULL вредности Направите упит који ће да приказује име, презиме и мејл адресе свих особа, а потом га филтрирајте тако да приказује само имена и презимена оних особа чије мејл адресе нису унете. Критеријум који треба да унесете је приказан на слици 6.15.
Слика 6.15 – Дизајн упита за проналажење Null вредности
Можете унети само Null, a Access ће аутоматски додати префикс Is. Резултат овог упита је приказан на слици 6.16. Упит сачувајте под називом NemajuMejlove.
Слика 6.16 – Резултат упита NemajuMejlove
Дакле, приказане су све особе чији мејлови нису унети. Уколико бисте желели обрнути ефекат – да прикажете оне особе чији су мејлови унети, у поље Criteria бисте требали унети Is Not Null. Сачувајте и ову варијанту упита под називом ImajuMejlove. Критеријуми Is Null односно Is Not Null функционишу над свим типовима података.
6.2.4 Оператор ОR Направите упит који ће да приказује име, презиме и брачни статус особа које су у браку. За овај упит ћете морати да примените два критеријума над колоном брачни статус и то: Ozenjen и Udata. Упит можете урадити на два начина (слике 6.17 и 6.18). [79]
Microsoft Access 2010
Слика 6.17 – Коришћење поља Or
На слици 98 је приказана прва варијанта упита када се други критеријум пише у поље or, а на слици 99 друга варијанта када се користи оператор Or.
Слика 6.18 – Коришћење оператора Or
Резултат овог упита биће имена и презимена свих особа код којих је брачни статус ожењен односно удата (слика 6.19).
Слика 6.19 – Резултат упита OsobaUBraku
[80]
Microsoft Access 2010
6.2.5 Оператор AND Упитивања која смо до сада прешли су била примењујући одређене критеријуме на једној колони. Код упита можете применити више од једног критеријума на више од једне колоне. За ову сврху се користи оператор AND, којом се природно број записа у резултату упита смањује јер су услови претраге пооштрени. Наиме резултат упита ће морати да задовољи и један и други па и трећи односно пети услов колико год да их ставите ако користите AND клаузулу. Направите упит који ће да приказује имена и презимена свих неудатих жена из Чачка рођених после 1/1/1965. У овом упиту имате три услова, а AND примењујете тако што критеријуме пишете у истом реду над потребним колонама (слика 6.20).
Слика 6.20 – Примена више критеријума АND
Упит сачувајте као DevojkeIzCacka. Резултат је приказан на слици 6.21.
Слика 6.21 – Резултат упита DevojkeIzCacka
Резултат овог упита су само три записа. Када бисте уклонили неки од критеријума, рецимо град, у резултату бисте добили 16 записа (Проверите!). Код упита можете комбиновати АND и OR операторе. Нпр. претходном упиту бисте придружили поред постојећих и све разведене жене. То бисте урадили тако што бисте колони Bracni Status у пољу за критеријуме Оr додали Razvedena (слика 6.22). Проверите број записа у резултату!
Слика 6.22 – Комбиновање критеријума АND и OR [81]
Microsoft Access 2010
Дакле, критеријум претходног упита је тај да добијете све неудате девојке из Чачка рођене после 1/1/1965 ИЛИ имена, презимена, градове и датуме рођења разведених жена.
6.2.6 Сортирање резултата упита Резултате упита можете приказати у растућем односно опадајућем редоследу по колони или колонама које желите. То постижете коришћењем поља Sort приликом креирања упита. Направите упит који ће да приказује име, презиме и број деце за особе које имају више од двоје деце, сортиране по имену у растућем редоследу. Дизајн упита је прикзан на слици 6.23, где видите да је у пољу Sort над колоном име селектовано Ascending.
Слика 6.23 – Сортирање по имену
Упит сачувајте као SortiranoIme. Резултат је приказан на слици 6.24.
Слика 6.24 – Резултат упита SortiranoIme
Када хоћете да сортирате по више колона истовремено Access ће сортирати колоне почевши од прве гледајући са леве стране. На пример, направите упит који приказује презимена сортирана у опадајућем редоследу, градове и имена такође сортирана у опадајућем редоследу (слика 6.25). Принцип сортирања више колона је исти као у поглављу 2.1.9, значи резултати ће бити сортирани у опадајућем редоследу по презимену а потом по имену за иста презимена.
Слика 6.25 – Сортирање упита по више колона [82]
Microsoft Access 2010
6.2.7 Сакривање колона из резултата упита Понекад ћете хтети да одређене колоне буду коришћене у упиту и да на њих примените неке критеријуме али да не буду приказане у резултату упита. Направите упит који ће да приказује име, презиме, адресу и запослење особа који су разведени. Ако мало пажљивије прочитате текст задатка, приметићете да колону брачни статус није потребно приказати у резултату али да је она кључна за резултат упита јер на њу примењујете одређени критеријум. Поступак којим одређену колону искључујете из резултата упита је искључивање квадратића за чекирање у пољу Show (слика 6.26).
Слика 6.26 – Не приказивање колоне BracniStatus
Упит сачувајте као Razvedeni. Резултат упита је приказан на слици 6.27.
Слика 6.27 – Резултат упита Razvedeni
6.2.8 Калкулације помоћу упита Упитима се поред приказа филтрираних података на разне начине, могу вршити разноразне калкулације и операције. На следећем примеру ћемо приказати како се помоћу упита може направити нова колона која ће спојити колоне име и презиме. Овај пример смо већ обрадили у поглављу 3.6 али га овде радимо преко упита. Креираћемо и колону у којој ће бити приказан месец рођења особа.
[83]
Microsoft Access 2010
Направите упит који ће да приказује град, број деце за особе које имају децу, запослење, колону са пуним именом и презименом и месецом рођења особе. Дизајн упита је приказан на слици 6.28.
Слика 6.28 – Дизајн упита са калкулацијама
Као што видите на слици 6.28, колона BrojDece је сакривена из резултата упита али нам је потребна у дизајну као критеријум. Нове израчунате колоне додајете тако што прво напишете назив колоне који желите, па две тачке (:), па потребне колоне и функције. Дакле, Назив колоне: калкулација Простор за куцање калкулација увек можете проширити простим развлачењем или кликнути десним тастером па селектовати Zoom. Исти ефекат постижете комбинацијом тастера Shift+F2. Овим отварате прозор Zoom (слика 6.29) у коме можете прегледније извршити калкулације. Прозор има и тастер Font којим отварате нови прозор где можете повећати или променити фонт ради још боље прегледности.
Слика 6.29 – Прозор за калкулације Zoom
Као што видите на слици 6.29, новој колони смо доделили назив MesecRodjenja, након чега су уследиле две тачке, па функција Month којом се извлачи број месеца из датумских података, па обична заграда која означава да се функција примењује на оно што се у њој налази и на крају назив постојеће колоне у угластој загради. Резултат упита приказан је на слици 6.30. Упит сачувајте као Kalkulacija.
[84]
Microsoft Access 2010
Слика 6.30 – Резултат упита Kalkulacija
Покушајте да помоћу упита одредите колико година има свака од особа. Ово смо обрадили у поглављу 3.6 код израчунатих поља у табелама.
6.2.9 Агрегатне функције Поред тзв. „хоризонталних“ калкулација које се односе на израчунавање задатих вредности у сваком од записа, у Access-у можете вршити и „вертикалне“ калкулације. Код ове врсте калкулација вршите сабирања, пребрајања, тражите просек вредности у колонама, итд. Ово се постиже коришћењем агрегатних функција и биће вам јасније после примера. Направите упит који ће да преброји колико има особа са сваким од брачних статуса (колико има удатих, колико разведених, итд.). Да бисте могли да користите функције сабирања, пребрајања, тражења минимума односно максимума итд., прво морате активирати Totals ставку у дизајну упита. Можете је активирати на два начина: Кликом на иконицу Totals (слика 6.31) која се налази на Design траци са алатима, Десним кликом у простор за дизајнирање упита па избором опције Totals. [85]
Microsoft Access 2010
Слика 6.31 – Totals иконица
По активирању Totals одељка простор за дизајнирање упита добија следећи изглед (слика 6.32):
Слика 6.32 – Дизајн упита са Total одељком
Као што видите на слици 6.32, поред постојећих, додат је одељак Total у коме је подразумевана опција Group By. Oва опција ће на овом конкретном примеру груписати сва понављања брачних статуса односно приказати само различите брачне статусе. Поред колоне брачни статус упиту смо додали и колону OsobaID јер се у задатку тражи да пребројите колико има особа са сваким од брачних статуса. Пребрајање се врши функцијом Count коју је потребно селектовати у Totals одељку колоне OsobaID (слика 6.32). Резултат је приказан на слици 6.33.
Слика 6.33 – Резултат упита BracniStatusi
Добар пример би био и да саберете године особа по градовима. Дизајн овог упита приказан је на слици 6.34:
[86]
Microsoft Access 2010
Слика 6.34 – Дизајн упита са сабирањем
Као што видите на слици, прво смо груписали градове, а потом за колону године применили функцију Sum која, као што вам је већ познато, сабира податке. Упит сачувајте као GodinePoGradovima. Резултат је приказан на слици 6.35.
Слика 6.35 – Резултат упита GodinePoGradovima
Примећујете да колона године мења назив у SumofGodine, а разлог је јасан – примењена функција Sum. Ово је могуће изменити у дизајну. На истом примеру бисте могли да израчунате и просек година (функција Avg), минимум односно максимум година (функције Min/Max), и пребројите особе у том граду (слика 6.36).
Слика 6.36 – Просек, минимум и максимум година и број особа по градовима
6.2.10 Проналажење дупликата помоћу упита Током читавог трећег поглавља, упите сте креирали у дизајн режиму, што је у највећем броју случајева и најбоље решење. Било како било, стигли смо до [87]
Microsoft Access 2010
тачке када би коришћење чаробњака могло да буде од помоћи. Проналажење дуплираних података је једна од бенефиција коришћења чаробњака код упита. Упит помоћу чаробњака креирате тако што кликнете на иконицу Query Wizard која се налази на Create траци са алатима. Кликом на наведену иконицу добијате прозор New Query (слика 6.37) у коме је потребно да одаберете трећу ставку – Find Duplicates Query Wizard (остале ставке ћемо обрадити у наредним поглављима).
Слика 6.37 – Прозор New Query
Кликом на тастер ОК добијате прозор у коме бирате табелу коју желите да испитате (слика 6.38).
[88]
Microsoft Access 2010
Слика 6.38 – Прозор за избор табеле
С обзиром да база тренутно има само табелу особа кликните на Next. У наредном прозору (слика 6.39) селектујте колоне које желите да испитате. Селектујте колоне име и презиме да бисте испитали да ли у вашој табели постоје особе које имају исто и име и презиме.
Слика 6.39 – Прозор за избор колона на које циљате
Кликом на Next добијате прозор (слика 6.40) у коме селектујете додатне колоне по којима ћете увидети да ли је особа стварно унета два пута или јој се само поклапају подаци из колона које сте селектовали у претходном кораку (име и презиме). Селектујте колоне ОсобаID, Град и Телефон. [89]
Microsoft Access 2010
Слика 6.40 – Прозор за избор додатних колона
У наредном кораку само дајте назив упиту (у овом случају назовите га DuplikatiOsoba) и кликните на Finish да бисте видели резултате. Резултат упита приказан је на слици 6.41.
Слика 6.41 – Резултати упита DuplikatiOsoba
На слици 6.41 можете видети да постоје особе са истим именом и презименом али да су из различитих градова и имају различите бројеве телефона. Ово вам говори да то ипак нису дуплирани записи. Овај упит може бити користан у базама са великим бројем записа да са времена на време проверите да ли је дошло до дуплирања.
[90]
Microsoft Access 2010
6.3 Упити над подацима из више табела Процес креирања упита над подацима из различитих табела је потпуно исти као и када се ради о једној табели с тим што је у дизајн прозор упита потребно убацити табеле у којима се налазе подаци које тражите. На пример, направите упит који ће да приказује име, презиме, адресу, пол и брачни статус особе. Брачни статус и пол особе имате и у табели особа али за потребе овог упита ове колоне додајте из њихових изворних табела. Дизајн упита је приказан на слици 6.42. На слици видите да су везе између табела аутоматски пренете и у упит. Такође, на слици у одељку Тable видите да су колоне Pol и BracniStatus додате из својих изворних табела. Ово можете видети и у резултату упита приказаном на слици 6.43, јер су подаци о полу и брачном статусу текстуални. Да сте ове две колоне додали из табеле особа, подаци би били приказани у виду бројева јер су те колоне у табели особа пренесени кључ и оне одговарају примарним кључевима из табела Pol и BracniStatus односно колонама PolID и BracniStatusID које су нумеричког типа.
Слика 6.42 – Дизајн упита над више табела
Упит сачувајте као UpitViseTabela. Резултат упита је приказан на слици 6.43. [91]
Microsoft Access 2010
Слика 6.43 – Резултат упита UpitViseTabela
6.3.1 Врсте спајања код упита На почетку је потребно разграничити појмове везе и спајања. Веза је стална и утиче на то како се подаци уносе и едитују, а спајање је привремено и утиче на резултате упита јер се само код упита и користи. Када креирате упит над подацима из више табела, подразумевано спајање је унутрашње или како га неки зову, природно спајање (енгл. Inner Join). Поред овог, у Access-у се користе још лево (Left Outer Join), десно спољашње спајање (Right Outer Join) и у ретким ситуацијама спајање табеле са самом собом (Self Join). Последњи тип спајања се обично јавља код рекурзивних релација. Тип спајања можете променити већ када креирате везе кликом на Join Type тастер у Edit Relationship прозору. Али, тип спајања се углавном мења код упита двоструким кликом на везу између табела у дизајн прозору упита или десним кликом на везу па кликом на опцију Join Properties. Тиме добијате прозор Join Properties приказан на слици 6.44 на којој видите поменута три типа спајања.
[92]
Microsoft Access 2010
Слика 6.44 – Врсте спајања
Сада ћемо објаснити сваки од типова спајања и приказати их Веновим дијаграмима. Први тип спајања – природно (унутрашње) спајање, укључује само записе из табеле ка којој иде веза (табела на страни ) који имају одговарајуће записе у табели од које је потекла веза (табела на страни 1). На примеру претходног упита, природно спајање селектује све записе табеле особа које имају дефинисан брачни статус. Унутрашње спајање обухвата само записе у пресеку наведених табела и приказано је сивом бојом на слици 6.45.
Слика 6.45 – Унутрашње спајање
Други тип спајања – лево спољашње спајање, би укључио СВЕ записе из табеле BracniStatus (лева табела), било да имају или немају одговарајући запис у табели Osoba (десна табела). Табела се сматра левом ако је надређена односно ако од ње полази веза, а десном ако прима везу без обзира на то где се у QBE прозору налази. На пример, ако ни један од ваших познаника није разведен, овај статус би, иако нема одговарајући запис, био приказан у резултату упита што не бисте могли да видите да је спајање унутрашње. Лево спајање, поред записа у пресеку, обухвата и остале записе из леве табеле и приказано је плавом бојом на слици 6.46. [93]
Microsoft Access 2010
Слика 6.46 – Лево спајање
Трећи тип спајања – десно спољашње спајање, укључује СВЕ записе из табеле Osoba (десна табела), било да имају или немају одговарајући запис у табели BracniStatus (лева табела). Дакле, овим тип спајања би биле приказане и особе којима из одређеног разлога нисте унели ништа у колону брачни статус. Десно спајање, поред записа у пресеку, обухвата и остале записе из десне табеле и приказано је наранџастом бојом на слици 6.47.
Слика 6.47 – Десно спајање
Шта мислите у ком случају бисте имали највише записа? У трећем јер табела особa има највише записа и може имати записе код којих није наведен брачни статус. Први и други тип би требало да дају исти број записа осим ако постоји неки брачни статус који није дефинисан ни за једну особу. Променом типа спајања упита у комбинацији са оператором Is Null, можете приказати те „спорне“ записе. На пример, да бисте приказали само записе из табеле Osoba којима нисте дефинисали брачни статус, одабрали бисте десно спајање, а као критеријум над колоном BracniStatus, уписали бисте оператор Is Null. Тада би били приказани само записи из десне табеле без записа који се налазе у пресеку (слика 6.48). [94]
Microsoft Access 2010
Слика 6.48 – Десно спајање у комбинацији са Is Null оператором
Како бисте приказали „спорне“ брачне статусе?
6.4 Параметарски упити Упите код којих ви сваки пут по њиховом покретању уносите вредност за одређену колону по којој филтрирате записе називамо параметарским упитима. На пример, желите да добијете имена, презимена и бројеве телефона особа из одређеног града. Да не бисте правили упите за сваки град посебно или један упит у ком бисте сваки пут пре покретања изменили град, направићете један параметарски упит на следећи начин (слика 6.49).
Слика 6.49 – Дизајн параметарског упита
Оно што разликује дизајн параметарских упита од осталих је што у пољу Criteria уносите неки текст у угластим заградама. У њима можете написати било шта осим назива колона! По покретању упита дизајнираног на слици 6.49 добијате следећи прозор (слика 6.50).
Слика 6.50 – Унос вредности код параметарског упита [95]
Microsoft Access 2010
Након унетог назива неког града, нпр. Cacak, добићете списак особа из овог града (слика 6.51). Упит сачувајте као ParametarskiGradovi.
Слика 6.51 – Резултат упита ParametarskiGradovi
Код параметарских упита можете отићи корак даље користећи џокерске знаке. На пример, направите упит који ће да приказује имена, презимена, адресе и градове особа за почетно слово презимена које ви унесете. У дизајну овог упита у пољу Criteria колоне презиме потребно је унети следећи израз: Like [Unesite pocetno slovo prezimena] & "*" Оно што је унето у угластим заградама ће писати на прозору за унос вредности који се појављује по покретању упита. Оператор Like смо објаснили у поглављу 6.2.2 џокерски знаци код филтрирања. Џокер * као што већ знате замењује низ знакова. Звездицу је потребно спојити са критеријумом знаком &. Шта бисте унели у поље Criteria колоне DatumRodjenja како бисте приказали све особе рођене између одређених датума које унесете? Between [Pocetni datum] and [Krajnji datum] У овом случају ћете имати два прозора за унос вредности један иза другог. Који би резултат упита био да у поље Criteria колоне DatumRodjenja унесете следеће: <[Rodjeni pre datuma:] Код параметарских упита можете комбиновати више параметара и за сваки од њих ће се појавити посебан прозор. На пример, креирајте упит који ће да приказује име, презиме, град и датум рођења особе тако да ви унесете: почетно слово презимена, назив града, и датум рођења пре ког желите да је особа рођена. Дизајн овог упита је приказан на слици 6.52. [96]
Microsoft Access 2010
Слика 6.52 – Дизајн упита са више параметара
Редослед појављивања параметарских прозора је подразумевано с лева на десно у односу на дефинисане параметре у дизајну упита. Овај редослед можете изменити простим премештањем колона у дизајну упита. Постоји још један, елегантнији начин измене редоследа појављивања параметара а то је коришћењем Query Parameters прозора (слика 6.53). Овај прозор позивате кликом на иконицу Parameters на Design рибону.
Слика 6.53 – Query Parameters прозор
У овај прозор је потребно да унесете параметре оним редом којим желите да се појављују. Текст параметра мора бити исти као и у дизајну упита али без џокерских знака. Поред тога, потребно је дефинисати и тип податка за колону на коју се параметар примењује. Дакле, параметарски упити у комбинацији са џокерским знацима и операторима могу бити изузетно корисни и применљиви у многобројним ситуацијама.
[97]
Microsoft Access 2010
6.5 Crosstab упити Ова врста упита вам омогућава да направите унакрсну табелу од ваших података. Слични су Pivot табелама у Excel-у. Рецимо, можете добити податке о броју особа из сваког града према полу. Трик за успешно коришћење Crosstab упита је да спремите податке које ћете користити у одвојеном упиту. Креирајте прво упит који ће да приказује град, пол (из табеле Pol) и идентификациони број особа. Овај упит сачувајте као PolGrad. Потом покрените чаробњак за креирање упита (Query Wizard) и у првом прозору одаберите Crosstab Query Wizard. У наредном прозору (слика 6.54) бирате извор података за ваш Crosstab упит. То је у овом случају претходно креирани упит PolGrad.
Слика 6.54 – Избор извора података
У наредном прозору пребацивањем у десни одељак бирате колону чије ће вредности бити исписане у ћелијама прве колоне ваше унакрсне табеле (слика 6.55). Одаберите Grad.
[98]
Microsoft Access 2010
Слика 6.55 – Избор података за редове
Потом од преосталих колона бирате ону чије ће вредности бити наведене у ћелијама првог реда (слика 6.56). Одаберите Pol.
Слика 6.56 – Избор података за колоне
У наредном прозору бирате функцију коју ћете применити на ћелије у пресеку редова и колона (слика 6.57). Одаберите функцију Count којом ћете пребројати колико има особа из сваког града у односу на пол. [99]
Microsoft Access 2010
Слика 6.57 – Избор функције
На крају можете изменити назив упиту али се препоручује да оставите предложени PolGrad_Crosstab. Резултат упита приказан је на слици 6.58.
Слика 6.58 – Резултат упита PolGrad_Crosstab
На слици видите укупан и број особа за мушки односно женски пол по градовима.
[100]
Microsoft Access 2010
6.6 Акциони упити Акционим упитима можете заправо вршити измене на подацима. Постоје четири врсте акционих упита и сваку од њих ћемо посебно обрадити у наредним поглављима.
6.6.1 Make Table упити Овај упит вам омогућава да од одређених података креирате нову табелу. Први корак у креирању било ког акционог упита је отварање прозора за дизајн упита (Query Design) и селектовање табела и података на којима ће се заснивати ваш упит. Потом је потребно да упиту промените тип из тренутног Select, у акциони који желите (у нашем случају Make Table). Промену типа упита постижете кликом на за тај тип намењену иконицу на Query Type одељку Дизајн траке са алатима (слика 6.59). Иконице акционих упита имају црни узвичник.
Слика 6.59 – Query Type одељак
За пример, креирајте Select упит који ће да приказује име, презиме, адресу и телефон особа из Чачка и промените му тип у Make Table упит. Кликом на иконицу Make Table (слика 6.59) добијате Make Table прозор (слика 6.60).
Слика 6.60 – Make Table прозор
У овом прозору уписујете име новој табели. Назовите је CACANI. Имате опцију да нову табелу креирате у овој бази (Current Database) или некој другој бази података (Another Database). Акциони упити се у принципу не чувају ако их нећете користити више пута али овај сачувајте под називом MakeTableCacani.
[101]
Microsoft Access 2010
Када кликнете на Run или покренете упит из Navigation Pane-a, добићете прозор са упозорењем (слика 6.61). Кликом на Yes креираћете нову табелу са 12 записа (толико има Чачана у табели OSOBA). Процес је неповратан.
Слика 6.61 – Упозорење код извршавања Make Table упита
Изглед нове табеле CACANI, креиране помоћу Make Table упита, приказан је на слици 6.62.
Слика 6.62 – Изглед табеле CACANI
Формат и структура података су наслеђени из табеле из које сте преузели колоне код креирања Make Table упита. У дизајну табеле можете нормално вршити измене као и код сваке друге табеле. Такође, колоне и податке за Make Table упит можете узети из више од једне табеле и тако креирати нову табелу. Make Table упите можете користити и у сврси BackUp-овања табела. Рецимо, направите Make Table упит који ће садржати све колоне одређене табеле и сачувајте га. Сваки пут по покретању упита ће се изнова креирати табела под називом који одредите и садржаће ажурне податке.
[102]
Microsoft Access 2010
6.6.2 Update упити Ова врста акционих упита врши измене података у постојећим табелама. Направите упит који ће особама мушког пола додати једно дете у колону BrojDece. Дизајн упита пре мењања типа у Update је приказан на слици 6.63.
Слика 6.63 – Припрема Update упита
Дизајн упита након мењања типа у Update акциони упит (клик на иконицу Update на Query Type одељку) је приказан на слици 6.64.
Слика 6.64 – Дизајн Update упита
Примећујете да се код промене типа упита у Update појављује поља Update To. У ово поље уносите изразе како желите да измените податке. Овим изразом ће се повећати број деце за 1, а критеријумом над колоном Pol, то ће бити примењено само за особе мушког пола. Кликом на Run Аccess вас упозорава о промени коју ћете направити. Кликом на Yes потврђујете измене и резултат ових измена можете видети на слици 6.65. Приказан је део табеле особе где примећујете да мушкарци који нису имали деце сада имају једно дете а они који су већ имали децу, сада имају једно дете више.
Слика 6.65 – Подаци измењени Update упитом [103]
Microsoft Access 2010
Упит сачувајте као МuskarciDeca+1. Update упите можете користити на начин да корисник сам дефинише измене над подацима. Ово постижете убацивањем параметарског дела у сам упит. На пример, имате табелу са називима одређених производа и њиховим ценама. Ако бисте желели да цене повећате за 5% просто бисте у поље Update To откуцали [Cena]*1.05. Ако бисте пак да упит сваки пут пита колико повећање корисник жели, било би потребно откуцати следеће: [Cena]*(1+[Unesite procentualno povećanje]/100) Број који корисник унесе нпр. 25 ће бити подељен са 100 и сабран са 1. Цена ће бити помножена са резултатом претходног прорачуна (1.25), што чини повећање од 25% колико је и корисник унео у параметарски прозор.
6.6.3 Append упити Ови упити вам омогућавају да записе из одређене табеле или табела прикачите некој другој табели. Табели Osoba додајте имена, презимена и бројеве телефона особа из табеле ImportIzExcela. Прво креирајте упит који ће да селектује наведене колоне из табеле из које додајете записе. Променом типа упиту у Append, појављује се прозор Аppend (слика 6.66) у коме бирате табелу којој желите да придружите податке.
Слика 6.66 – Избор табеле којој придружујете записе
Примећујете да се након овога појављује поље Append To које се односи на колону одабране табеле у претходном прозору којој желите да се придруже подаци колона из поља Field (слика 6.67).
Слика 6.67 – Колоне којим придружујете податке [104]
Microsoft Access 2010
Кликом на Run Аccess вас упозорава о промени коју ћете направити. Кликом на Yes потврђујете измене и резултат ових измена можете видети у табели Osoba (слика 6.68). Имена, презимена и бројеви телефона су придружени одговарајућим колонама; сваки од нових записа је добио свој КontaktID, a остале колоне су празне и можете их попунити у сваком тренутку. Упит сачувајте под називом AppendImePrezimeTel.
Слика 6.68 – Резултат упита AppendImePrezimeTel
6.6.4 Delete упити Као што можете да претпоставите, овим упитом бришете записе из ваших табела. Са акционим упитима, а поготову овим, морате бити обазриви. Када нешто једном обришете, нема повратка. За потребе наредног примера прво направите копију табеле OSOBA, а потом направите упит којим ћете обрисати све запослене особе. Табеле, као и остале Access oбјекте, копирате класичном Copy/Paste методом. Прозор који се том приликом појављује је приказан на слици 6.69. Код табела поред назива копираног објекта имате опције да копирате само структуру табеле, и структуру и податке или да придружите податке из табеле коју копирате табели чије име наведете али се за ову потребу користе Append упити.
[105]
Microsoft Access 2010
Слика 6.69 – Копирање табеле
Дизајн Delete упита којим ћете обрисати све запослене из копије табеле OSOBA, је приказан на слици 6.70. Упит сачувајте као DeleteZaposleni.
Слика 6.70 – Дизајн упита DeleteZaposleni
Кликом на Run, Аccess вас и овде упозорава о промени коју ћете направити. Кликом на Yes потврђујете измене и резултат ових измена можете видети у табели Copy of OSOBA. Иконице акционих и Crosstab упита су и у Navigation Pane-у другачије од иконица обичних Select упита, што можете видети на слици 6.71.
Слика 6.71 – Иконице различитих типова упита
[106]
Microsoft Access 2010
7. Форме Форма (образац) представља кориснички интерфејс ка табели, упиту или табелама. Форма ће учинити вашу интеракцију са подацима много једноставнијом. Форме ћете, за разлику од упита, углавном правити помоћу чаробњака. Да бисте креирали форму одабраћете неку од опција које се налазе у Forms секцији Create траке са алатима (слика 7.1).
Слика 7.1 – Forms одељак
Ове опције ће бити објашњене током наредних поглавља, а за вашу прву форму је потребно само да кликнете на прву иконицу Form али под условом да сте претходно у Navigation Pane-у маркирали табелу над којом желите да је креирате. Изглед тако креиране форме приказан је на слици 7.2. Нова форма је по отварању подразумевано у тзв. Layout View. То је поглед на форму у коме можете вршити интеракцију и са подацима и са распоредом истих на форми. Он је новина верзије 2010. Поред овог, Аccess нуди још два погледа на форму а то су: Form View – интеракција само са подацима Design View – интеракција само са распоредом података (структуром форме)
Слика 7.2 – Изглед готове форме [107]
Microsoft Access 2010
Погледе на форму мењате кликом на иконицу View (слика 7.3) која се налази на Home или Design траци са алатима уколико сте у дизајн режиму форме. Примећујете на претходној слици да је форма аутоматски добила назив табеле над којом је креирана. Ово је случај када форму креирате на претходни начин који је уједно и најпростији. Такође, овим путем ће форма садржати сва поља из табеле.
Слика 7.3 – Погледи на форму
Иако је добила назив, форма још увек није сачувана. То ћете морати да урадите ручно а програм ће вас питати да ли желите да задржите исти назив или да га измените.
7.1 Креирање форме помоћу чаробњака Да креирате форму помоћу чаробњака, кликните на иконицу Form Wizard (слика 99). У овом случају не морате претходно маркирати табелу над којом креирате форму. Избор табеле и колона које желите да се појаве вршите у прозору Form Wizard (слика 7.4).
Слика 7.4 – Прозор Form Wizard [108]
Microsoft Access 2010
Рецимо да желите да направите форму над табелом Osoba, а од колона убаците име, презиме, адреса, град, телефон и брачни статус. Наведене колоне ћете из Available Fields дела пребацити у Selected Fields. Кликом на Next прелазите у прозор у коме вршите избор од четири понуђене варијанте изгледа форме (слика 7.5).
Слика 7.5 – Прозор за избор изгледа форме
Datasheet изглед је готово исти као табела, тако да се углавном ради о избору између Columnar и Tabular изгледа. Овај пут одаберите Columnar (изглед где је 1 запис на екрану). У наредном прозору дајете назив форми и отварате је кликом на Finish (слика 7.6). Форму назовите OsobaCarobnjak.
Слика 7.6 – Форма креирана помоћу чаробњака
Када креирате форму помоћу чаробњака, постоје два поменута изгледа који се најчешће користе – Columnar и Tabular. Форме Columnar изгледа су приказане на сликама 7.2 и 7.6. Дакле, у сваком тренутку је на екрану приказан само један запис а прелаз са једног на други запис вршите преко навигационих тастера који се налазе у дну форме (слика 7.7). О навигационим тастерима је било више речи у поглављу 3.8. [109]
Microsoft Access 2010
Слика 7.7 – Навигациони тастери
Направите сада форму са истим колонама као форма OsobaCarobnjak али нека буде Tabular изгледа и назовите је OsobaCarobnjakТabular. Поступак је апсолутно исти као код креирања претходне форме с тим што се у прозору за избор изгледа форме (слика 7.5) бира Tabular. Изглед овакве форме приказан је на слици 7.8. Разлика је та што код оваквог приказа видите све записе на форми само је повремено потребно скроловати на доле односно горе и називи колона су приказани у заглављу. У суштини форма Tabular изгледа доста личи на табелу или упит али је лепша односно практичнија. Columnar изглед ћете користити када желите да прикажете више колона а Tabular када будете желели да прикажете мање колона за више записа одједном.
Слика 7.8 – Tabular изглед форме
7.2 Измене података Промена одређеног податка на форми, као и код упита, доводи до промене тог податка у табели и обрнуто. Поступак измене података је готово исти као и код табела само што је другачији интерфејс. Током промене података у једном запису биће активна иконица оловке која означава да је процес измене у току.
[110]
Microsoft Access 2010
Када завршите измене и позиционирате се ван тог записа оловка ће нестати и промене ћа аутоматски бити сачуване.
7.3 Унос новог записа Унос новог записа преко форме је готово исти као и код табела. Потребно је да кликнете на иконицу New у Records одељку Home траке са алатима или да притиснете тастере Ctrl++ на тастатури или, најчешће, кликнете на тастер за унос новог записа на траци са навигационим тастерима (слика 7.7). Напомена: ако сте над неким колонама табеле поставили маске за унос података или падајуће листе, исте ће бити пренете и на форму па ћете тако податке морати да уносите сходно томе. Падајућа листа на форми је приказана на слици 7.8 над колоном брачни статус.
7.4 Проналажење записа Овај процес је такође готово исти код форми као и код табела. Укратко, позовете прозор Find and Replace на један од неколико начина које смо обрадили у поглављу 3.12 (најпростији Ctrl+F); унесете критеријум претраге; поставите додатна подешавања и кликнете на тастер Find Next.
7.5 Брисање записа Брисања записа преко форме ће обрисати тај запис и из табеле. Као и код табела, акција је иреверзибилна што значи да обрисани запис више нећете моћи да повратите. Поступак је карактеристичан за форме Columnar изгледа јер се Record Selector мало разликује. Наиме, издужен је преко целог левог дела прозора јер Columnar форме приказују један запис по екрану. Record Selector за Columnar форме је приказан на слици 7.9.
Сликa 7.9 – Record Selector на Columnar формама [111]
Microsoft Access 2010
Record Selector за Tabular форме препознаћете на слици 7.9. Укратко о брисању записа: клик на Record Selector да бисте селектовали запис и притисак на тастер Delete на тастатури или клик на иконицу Delete Records у Records одељку Home траке са алатима. Напомена: Чак иако форма приказана на слици 7.9 нема све колоне из табеле над којом је креирана, брисање записа је итекако могуће.
7.6 Сортирање Сортирање података на формама може бити карактеристично само за Columnar форме јер је видљив само један запис по екрану. Иначе, поступак и концепт сортирања је исти као и код табела (поглавље 3.9)
7.7 Филтрирање Филтрирање, као и брисање записа и сортирање може бити карактеристично само за форме Columnar изгледа из познатог разлога. Рецимо да желите да прикажете све удате жене на форми Columnar изгледа. Поступак је исти, кликнућете у поље брачни статус када пронађете прву жену која је удата а потом на Sort & Filter одељку Home траке са алатима одабрати Selection па Equals “Udata”. Овим ће се број записа смањити што можете очитати на тастерима за навигацију (слика 7.10), а и ознака да је филтер примењен ће бити осенчена.
Слика 7.10 – Ознака за примењен филтер код навигационих тастера
На слици видите да по примени филтера има 15 записа који подлежу критеријуму тј. 15 удатих жена. На формама такође можете комбиновати филтере па тако ако бисте од удатих жена тражили само оне које су из Чачка, добили бисте 2 записа. (Проверите!) Код коришћења Filter By Form опције, појавиће се празна форма у коју ћете онда унети критеријуме. Нпр. пронаћи све неожењене, запослене момке из Београда (слика 7.11).
[112]
Microsoft Access 2010
Слика 7.11 – Filter By Form код форми
У доњем делу форме налази се тастер Or којим додајете ИЛИ критеријум. Нпр. да сте поред свих неожењених, запослених момака из Београда желели да пронађете и оне из Чачка, кликнули бисте на Or па у новој празној форми додали и тај критеријум. Значи: брачни статус – Неожењен; запослење – чекирано и град – Чачак.
7.8 Модификовање дизајна форме На сликама 7.12, 7.13 и 7.14 су приказане три нове траке са алатима које се појављују када форму отворите у Design или Layout режиму. Layout режим је, као што смо већ навели, новина верзије 2010 и он је „хибридни“ режим јер можете видети податке док мењате структуру форме.
Слика 7.12 – Design трака са алатима
Слика 7.13 – Аrrange трака са алатима
[113]
Microsoft Access 2010
Слика 7.14 – Format трака са алатима
Уђите у дизајн режим форме Особа (слика 7.15) и пољу Еmail промените место тако да стоји десно од поља Facebook. Ово радите Drag & Drop методом – просто превучете поље на жељено место. Приметићете да када превлачите поље и лабела (назив поља) иде у пакету. Ово важи и у обрнутом смеру. Ако желите да померате објекте посебно, потребно је да их ухватите за сиви квадратић у њиховом горњем десном углу. У дизајн режиму можете још променити величине пољима и лабелама развлачењем тих објеката, променити текст лабела, итд. Свака форма се састоји од заглавља (Header), детаља (Details) и подножја (Footer). У секцији детаља се налазе сви подаци, док се у заглављу подразумевано налази назив форме и иконица. Подножје је подразумевано празно. Ово такође подлеже променама па тако у заглавље нпр. можете додати неку слику, у подножје додати поље са тренутним датумом, итд. Ако обришете неко поље са форме у дизајн режиму (селектовање па delete са тастатуре), нећете га обрисати из табеле нити ће ти подаци било како нестати из ваше базе, само га нећете више приказивати на форми. Исто као да сте правили форму преко чаробњака и нисте уврстили то поље у нову форму приликом избора поља. Када обришете поље, аутоматски се брише и пратећа лабела, а ако обришете само лабелу, поље остаје.
[114]
Microsoft Access 2010
Слика 7.15 – Дизајн режим форме Особа
Могућа је и вишеструка селекција објеката (држи се тастер Shift), a потом и заједничка промена величине, позиције или брисање селектованих објеката. Код дизајна форме свака промена је реверзибилна па тако можете користити тастере Undo и Redo. По завршетку измена потребно је да исте сачувате (Ctrl+S).
7.8.1 Додавање поља на форму Једна од ствари коју ћете пожелети да урадите док сте у дизајн режиму је додавање поља на форму која сте или изоставили ако сте форму правили помоћу чаробњака или једноставно нисте имали потребу за њима па их сада додајете накнадно. Форми особа чаробњак додајте колону датум рођења. Први корак је да отворите наведену форму у дизајн режиму; да направите додатног простора на форми проширивањем одељка детаља (слика 7.16); активирате Add Existing Fields мени (слика 7.18) кликом на иконицу Add Existing Fields (слика 7.17 која се налази на Tools одељку Design траке са алаткама; и двокликом додате жељену колону (биће постављена на средину форме) или да је превучете на место на које желите. [115]
Microsoft Access 2010
Слика 7.16 – Развучена секција детаља ка доле
Слика 7.17 – Tools одељак Design траке са алаткама
Слика 7.18 - Add Existing Fields мени
Мени за додавање постојећих поља (Add Existing Fields мени) има два режима. Први је приказан на слици 7.18 када додајете поља из тренутне табеле (Show only field from the current record source) и други у случају да имате више табела у вашој бази па да на форму која је направљена над једном табелом додате поља из неке друге ако су те две табеле повезане итд. [116]
Microsoft Access 2010
Форма OsobaCarobnjak по додавању колоне датум рођења и њеном премештању на за то претходно направљено место има следећи изглед (слика 7.19).
Слика 7.19 – Форма OsobaCarobnjak по додавању колоне датум рођења
7.8.2 Поравнавање и фино намештање објеката на форми Уколико сте накнадно додавали неке колоне на форму или ручно вршили премештања поља Arrange трака са алатима (слика 7.13) је право место где од бројних опција можете изабрати оне које вама одговарају да бисте поља на вашој форми поравнали по ивици којој желите (Align), повећали/смањили вертикални или хоризонтални размак између њих (Spacing), груписали их (Grouping) или им аутоматски величину прилагодили према неком критеријуму. Наравно, све ово подразумева да претходно селектујете групу поља и да након тога примењујете нека од финих просторних подашавања. Селектовање више поља осим помоћу тастера Shift или Ctrl, можете урадити и кликом и превлачењем оквира преко њих као када селектујете више иконица на Desktop-у. Ми се у овом поглављу нећемо бавити сваком од опција посебно, већ ћемо то вама оставити да испробате и тим путем најбоље научите. Напомена: све опције Arrange траке са алатима имате и на менију када кликнете на селектоване објекте десним тастером миша. [117]
Microsoft Access 2010
7.8.3 Измена редоследа заустављања табулатора Када форму креирате преко чаробњака, у Form View режиму, притиском на тастер табулатор прелазите у ћелију испод ако је форма Columnar или ћелију лево ако је форма Tabular изгледа. Комбинацијом тастера Shift+Tab се, као и код табела, враћате на ћелију у којој сте претходно били. Редослед заустављања табулатора се код форми може изменити тако да ви сами дефинишете на коју ћете ћелију следећу прећи притиском на табулатор, па чак и која ће ћелија прва бити активна по покретању форме. Да бисте промнили редослед табулатора прво кликните на иконицу Тab Order (слика 7.12) која се налази на Tools одељку Design траке са алаткама. Добићете прозор Тab Order (слика 7.20) у коме селектовањем и превлачењем правите свој редослед преласка из ћелије у ћелију на притисак тастера Tab.
Слика 7.20 – Тab Order прозор
Клик на тастер Auto Order враћа редослед табулатора какав је био раније.
7.8.4 Додавање логоа и слика На слици 7.21 је приказана форма OsobaCarobnjak улепшана једном позадинском сликом и логоом у заглављу.
[118]
Microsoft Access 2010
Слика 7.21 – Форма улепшана логоом и сликом
Ово постижете преко Insert Image иконице на Design траци са алатима (слика 7.22). По одабиру слике курсор поприма изглед крстића са малом сличицом и потребно је да га превучете преко простора где желите да се слика налази.
Слика 7.22 – Insert Image иконица
Када већ додате неке слике на форму битно је да им направите добар редослед да остали објекти не би били прекривени. Нпр. по додавању позадинске слике она је прекрила назив форме. Потребно је да селектујете слику и да је командом Send to Back поставите иза осталих објеката. Исти ефекат бисте постигли да сте селектовали Text Box са називом форме и кликнули на Bring to Front. Наведене команде се налазе у Sizing & Ordering одељку Arrange рибона (слика 7.23).
Слика 7.23 – Sizing & Ordering (Arrange ribbon)
Када објекте поређате како треба, можете их додатно форматирати. У овом случају текст назив форме је било потребно подебљати и променити му боју у белу да би дошао до изражаја. Ово се ради на Text and Formatting одељку Home траке са алатима, и потпуно је исто као и код осталих апликација Office пакета. [119]
Microsoft Access 2010
7.8.5 Додавање тренутног датума и времена Да бисте додатно улепшали и функционално поспешили вашу форму можете јој додати тренутни датум и/или време. За ову сврху на Header/Footer секцији Design траке са алатима постоји иконица Date and Time (слика 7.22). По одабиру иконице појављује се прозор Date and Time (слика 7.24) у коме бирате да ли ћете приказати датум и време, само датум или само време и у ком формату.
Слика 7.24 – Date and Time прозор
Кликом на ОК датум и време у формату који сте одабрали биће позиционирани у заглавље (слика 7.25). Рецимо да желите да их позиционирате у подножје јер у заглављу већ имате пар објеката. Прво је потребно да подножје развучете и тиме га активирате. Кликните са доње стране Form Footer траке и развуците је колико желите а потом пребаците Boxове са датумом и временом.
[120]
Microsoft Access 2010
Слика 7.25 – Аутоматски додати датум и време
Примећујете да у Text Box-овима датума и времена стоје функције =Date() и =Time(). Функцију за датум смо обрадили код поглавља 3.5 о валидационим правилима. Унос тренутног датума и времена сте могли да обавите и ручно да сте на форму додали објекте у виду Text Box-ова и ручно унели поменуте функције (о овоме ће бити више речи у наредним поглављима). На крају, по завршетку ових корака, форма добија следећи изглед (слика 7.26).
Слика 7.26 – Форма са датумом и временом у подножју
[121]
Microsoft Access 2010
7.8.7 Додавање фотографија На претходну форму бисте сада могли записима да додате одговарајуће фотографије. Ако се сећате поглавља 3.1, објекте који се налазе ван базе података можете уградити у базу помоћу OLE Object типа податка. Пре него што овакво поље додате на форму, морате га додати табели OSOBA. Након тога, додајте ново поље на форму као у поглављу 7.8.1, позиционирајте га где желите и одредите му величину по жељи. Фотографију додајете тако што из менија који добијате десним кликом на ново поље одаберете опцију Insert Object. Том приликом се појављује следећи прозор (слика 7.27):
Слика 7.27 – Прозор за уметање објеката
У овом прозору можете одабрати да објекат прикажете само као иконицу (Display as Icon), а отварате га двокликом на ту иконицу. Такође, чекирањем поља Link остварујете само линк ка објекту – не уграђујете га у базу података. У овом случају, ако базу података будете премештали, обавезно преместите и све линковане објекте. Битно је напоменути да уколико убацујете фотограгије, оне морају бити у .bmp формату иначе ће бити приказане само као иконице без обзира што та опција није одабрана. Форма из претходног примера са уметнутом фотографијом је приказана на слици 7.28. Уколико пожелите да обришете фотографију, кликните на њу десним кликом и одаберите Delete.
[122]
Microsoft Access 2010
Слика 7.28 – Форма са уметнутом фотографијом
7.9 Поља за калкулације – Calculated field Израчуната поља сте видели у поглављу тренутно време и датум. Access је ова поља креирао аутоматски на основу уграђених функција које поседује. Двокликом на поље датума на пример, отварате секцију Property Sheet у десном делу екрана (слика 7.29). Исти ефекат постижете кликом на иконицу Property Sheet која се налази на Тools одељку Design траке са алатима (слика 164). У оквиру овог одељка најбитнија је ћелија Control Source у коју се уноси формула. Да сте Text Box са тренутним датумом креирали ручно, морали бисте да унесете ову формулу у ову ћелију.
Слика 7.29 – Property Sheet [123]
Microsoft Access 2010
Контроле ручно уносите преко Controls одељка (Design трака са алатима). Отворена палета контрола приказана је на слици 7.30
Слика 7.30 – Контроле које је могуће поставити на форму
У заглавље претходне форме додајте Text Box у коме ће бити приказано пуно име и презиме особе која је тренутно приказана на форми. Text Box је друга иконица међу контролама и иако је логично, он не служи само за уношење текста, за то служи контрола после ње а то је Label. Text Box служи и за уношење формула и помоћу њега се креирају израчуната поља. Када поставите Text Box на форму, аутоматски се додаје и придружена лабела коју у случају да вам није потребна, можете обрисати тастером Delete као и сваки други објекат. Заглавље форме са додатим Text Box-ом и у њему исписаним прорачуном, приказано је на слици 7.31.
Слика 7.31 – Израчунато поље у заглављу форме
Text Box можете додатно форматирати да би се уклопио у дизајн форме, јер признаћете, овако мало одудара. Можете му обрисати белу позадину, слова приказати белом бојом и подебљана као и да онемогућите клик у њега. Измена података вам је свакако онемогућена с обзиром да је то израчунато поље али је што се естетике и функционалности тиче много боље да се курсор не може позиционирати у то поље. Потребно је да опцију Enabled у Property Sheet одељку (слика 7.29), пребаците на No, a oпцију Locked на Yes. Што се тиче форматирања, то можете мењати у Format картици Property Sheet одељка (слика 7.33). Да бисте уклонили границу Border Style подесите на Transparent; Да бисте уклонили боју позадине Back Style подесите на Transparent; Font Size повећајте на 14; Font Weight промените на Bold. [124]
Microsoft Access 2010
Цео поступак сте могли да обавите и преко формат рибона (слика 7.32).
Слика 7.32 – Format трака са алатима
Слика 7.33 – Property Sheet картица Format [125]
Microsoft Access 2010
Форма са форматираним израчунатим пољем изгледа као на слици 7.34.
Слика 7.34 – Крајњи изглед форме са форматираним израчунатим пољем
7.10 Додавање Combo Box-a Combo Box представља падајућу листу коју додајете на форме и можете га поистоветити са Lookup пољима код табела. Погледајте форму из претходног примера (слика 7.34). На њој већ имате један Combo Box над колоном BracniStatus. Combo box је наслеђен из табеле јер сте над пољима ове колоне имали дефинисан Lookup. Како можете на претходну форму додати Combo Box за поље Pol на пример? Отворите форму у дизајн режиму и кликните десним тастером на Text box Pol. Видећете опцију Change To a у њој подопције приказане на слици 7.35.
[126]
Microsoft Access 2010
Слика 7.35 – Change To подмени
И сами претпостављате да је потребно одабрати подопцију Combo Box. Поље Pol ће бити визуелно али не и функционално промењено у Combo Box. Сада је потребо отворити Property Sheet (двоклик на поље) и ту му доделити вредности. Да бисте креираном Combo Box-у доделили вредности у Row Source одељку (слика 7.36) одаберите табелу Pol у којој су вредности сачуване. На слици видите да је у Bound Column вредност 1. Ово значи да ће у Combo Box-у бити биране вредности које се налазе у првој колони табеле Pol (вредности 1 или 2). Ово је у реду за рачунар али што се вас као човека тиче, боље би било да буду исписане вредности за 1 или 2 (мушки односно женски). За ово морате прећи у картицу Format, Property Sheet-a и у њој у Column Count пољу уписати 2 (слика 7.36). Ово значи да ће када кликнете на језичак Combo Box-а бити приказане две колоне табеле Pol (једна са бројевима, а друга са текстуалним вредностима за те бројеве). Ипак, по избору вредности, у Combo Box-у ће и даље бити исписан број а не текст. Потребно је још да у Column Widths поље откуцате 0cm;2cm. Ово ће ширину прве колоне смањити на 0 чиме она практично неће бити приказана, а ширина друге колоне (у којој је текст) ће бити 2 центиметра.
Слика 7.36 – Property Sheet – картице Data и Format
[127]
Microsoft Access 2010
7.10.1 Употреба Combo Box-a за проналажење записа Показаћемо вам како да на форму особе коришћену у претходним примерима додате у заглавље Combo Box који ће служити за проналажење записа. Прво пређите у дизајн режим форме и развуците заглавље како бисте направили простора за нови Combo Box. Потом отворите падајућу листу Controls алатки, постарајте се да је укључена опција Use Control Wizards и кликните на иконицу Combo Box (слика 7.37).
Слика 7.37 – Controls алатке
Након овога добијате прозор Combo Box Wizard (слика 7.38) у коме треба да одаберете трећу опцију – Find a record on my form based on the value I selected in my combo box.
Слика 7.38 – Креирање Combo Box-a помоћу чаробњака
У наредном прозору (слика 7.39) бирате колоне које желите да буду приказане у Combo Box-у. [128]
Microsoft Access 2010
Слика 7.39 – Избор колона за Combo Box
Потом видите изглед онога што ћете добити па ако вам се нешто не допада вратите се корак у назад и то измените. На крају дајете назив лабели која иде уз Combo Box. Назовите је Izbor Osoba. Резултат је приказан на слици 7.40. У Combo Box-у ће бити исписано само име, али када га отворите имаћете списак имена и презимена свих особа.
[129]
Microsoft Access 2010
Слика 7.40 – Форма са Combo Box-ом за проналажење записа
7.11 Креирање форме од упита Поступак је потпуно исти до тачке у чаробњаку када бирате како желите да подаци буду приказани (слика 7.41). С обзиром да се упит на основу кога правите форму заснива на подацима из три табеле, у овом прозору можете изабрати један од три приказа. Уколико одаберете једну од две надређене табеле (BracniStatus или Pol), креираћете форму са подформом о чему ће бити више речи у наредним поглављима. Сада одаберите приказ по особама (by Osoba).
[130]
Microsoft Access 2010
Слика 7.41 – Одабир начина груписања података
У последњем кораку форми доделите назив FormaUpitViseTabela. По самом изгледу форме (слика 7.42) не бисте могли да закључите да ли је направљена на основу података из табеле или упита.
Слика 7.42 – Изглед форме FormaUpitViseTabela
7.12 Креирање форме са подформом Подформа за форму представља у ствари подтабелу за табелу над којом креирате форму. Као што смо у поглављу 4.5 обрадили пример табеле BracniStatus и њене подтабеле Osoba, тако ћемо овде показати креирање форме Osoba са подформом Dete. Aко се сећате, Access аутоматски препознаје [131]
Microsoft Access 2010
која ће бити главна а која подтабеле (у овом случају подформа) по везама између две табеле. Најпростији начин за креирање форме са подформом је клик на табелу у Navigation Pane-у и клик на иконицу Form која се налази на Forms одељку Create траке са алатима. Применом овог поступка на табелу OSOBA биће креирана форма Osoba са подформом Dete која је приказана на слици 7.43.
Слика 7.43 – Форма са подформом
За сваки запис приказан у главној форми биће приказан списак његове деце у подформи. Примећујете да је изглед подформе Datasheet који је у суштини табеларни приказ и он је најпогоднији за овкве ствари. Да табеле нису повезане, овим поступком бисте креирали само форму над табелом Osoba.
[132]
Microsoft Access 2010
7.12.1 Креирање форме са подформом помоћу чаробњака Претходни поступак можете обавити и помоћу чаробњака. Овај поступак је описан у поглављу 7.1 али је овде потребно додати колоне за подформу (слика 7.44).
Слика 7.44 – Избор колона
Када сте додали колоне табеле Osoba, потребно је да додате и колоне подређене табеле односно табеле Dete у овом случају. У наредном прозору (слика 7.45) бирате која је од ове две табеле главна (табела Osoba) и да ли ћете креирати форму са подформом (Form with subforms) или повезане форме (Linked Forms) тако да на главној буде тастер којим позивате подформу.
Слика 7.45 – Избор типа повезаних форми [133]
Microsoft Access 2010
На крају добијате исти резултат као у претходном поглављу стим што се може десити да распоред објеката не буде исти. Ово можете накнадно изменити у Design или Layout режиму.
7.13 Ручно креирање подформе и додавање на главну форму Подформа је у суштини обична форма. Она постаје подформа тек када се дода и повеже на њој надређену форму. Стога је процес креирање подформе исти као да креирате форму са извесним модификацијама. На пример, креирајте форму од табеле Dete, која ће се користити као подформа. Модификације се односе на то да: нема потребе додавати све колоне (изоставићете Rbr и OsobaID) јер ћете ове колоне имати у главној форми; изглед форме поставите на Tabular јер тако можете видети више записа од једном што је важно за подформе; код назива форме на крају додајте префикс Pod па тако ову форму назовите PodDete. У дизајну форму прилагодите тако да заузима што мање простора (обришите назив форме у заглављу, померите натписе колона на горе и сузите заглавље). Сада је подформа спремна за додавање на главну форму. Отворите форму Osoba у дизајн режиму и просто превуците форму PodDete из Navigation Pane дела у простор на форми Osoba где желите да се подформа налази (слика 7.46).
Слика 7.46 – Ручно позиционирана подформа [134]
Microsoft Access 2010
Потом у радном режиму проверите како се подформа уклопила и по потреби извршите додатна померања и подешавања у дизајну. Када додате подформу на форму, она прати везе које постоје између табела над којима су те форме креиране што значи да ће у подформи бити приказани записи одговарајући оном који је у том тренутку приказан на главној форми.
7.14 Форме са више прозора Форме са подформама могу бити веома услужне у многим ситуацијама али, када имате велике базе, табеле са огромним бројем записа итд. могу постати непрегледне. Начин да се ово предупреди односно да податке разложите на неколико прозора је коришћење тзв. Tab Control опције. Она вам омогућава да на постојећу или празну форму додате прозор који ће у себи садржати више картица и свака од њих неки део података. Креирајте празну форму, а за извор података јој одредите табелу Osoba (Record Source одељак – картице Data – Property Sheet прозора). На форму сада додајте контролу Tab Control (Design трака са алатима – Controls oдељак). Развуците је на форми колико желите. Tab Control подразумевано има две картице (два прозора) – Page 1 и Page 2 (слика 7.47). Ви можете додавати онолико картица колико желите (десни клик на постојећу па клик на Insert Page из менија који се отвара).
Слика 7.47 – Форма са прозорима [135]
Microsoft Access 2010
Преименовање картица вршите у Other картици Property Sheet одељка. Додајте трећи прозор и редом им промените називе у Osnovni podaci, Mesto stanovanja и Deca. Сада свакој од картица додајте колоне које желите. Додавање колона вршите превлачењем из Add Existing Fields одељка (слика 7.48).
Слика 7.48 – Додавање колона на прозоре
У прозор Оsnovni podaci убаците колоне OsobaD, Ime, Prezime, Telefon и DatumRodjenja. У Mesto stanovanja убаците Adresa и Grad. Пређите у радни режим и прелистајте по записима. Увидеђете да се јавља проблем да када се налазите и прозору Mesto stanovanja не знате чији су наведени подаци за град и адресу. Морали би да се вратите на прозор Osnovni podaci. Ово можете решити додавањем Text Box контроле изнад картица у којој ће бити исписано име и презиме особа тако да ћете, ма у ком прозору да се налазите, знати о ком се особау ради. У Text Box испишите добро познати израз =[Ime] & " " & [Prezime] којом ћете спојити име и презиме у један Text Box. Ако се сећате, податке у Text Box-у са функцијом није могуће мењати али да бисте онемогућили и клик на то поље измените опције Enabled на No и Locked на Yes у Data картици Property Sheet oдељка. [136]
Microsoft Access 2010
У прозор Deca је планирано да додате форму PodDete креирану у претходном поглављу. Овде ћемо објаснити другачији поступак додавања подформе. Отворите Controls одељак на Design траци са алатима и кликните на иконицу Subform/Subreport (слика 7.49).
Слика 7.49 – Controls листа
Кликните негде у оквиру претходно отвореног прозора Deca. Појављује се чаробњак (слика 7.50) у коме бирате постојећу форму коју ћете прикачити као подформу.
Слика 7.50 – Избор подформе
У наредном прозору вршите избор везе између подформе коју сте изабрали и извора података за форму коју креирате (табела Osoba). Access препознаје везе које сте креирали а с обзиром да између табела Osoba и Dete постоји само једна веза, њу ћете и изабрати. На крају можете променити назив подформи за чим немате потребе јер она већ има свој назив. [137]
Microsoft Access 2010
Остаје вам само да прилагодите позицију, промените величину и обришете лабелу са називом подформе. Изглед форме са прозорима у радном режиму са отвореним прозором подформе Deca, приказан је на слици 7.51. Форму сачувајте као FormaProzori
Слика 7.51 – Изглед форме FormaProzori
7.15 Navigation Form Овај тип форме је новина верзије 2010. Навигациона форма представља напреднији и функционалнији вид интерфејса за манипулацију вашим објектима. Најсличнија је Tab Control форми али се код навигационе форме картице могу позиционирати на различите начине (слика 7.52).
[138]
Microsoft Access 2010
Слика 7.52 – Врсте навигационих форми
Креирајте навигациону форму са картицама (тастерима) поређаним хоризонтало и вертикално у левом углу (Horizontal Tabs and Vertical Tabs, Left). На слици 7.53 видите креирану наведену навигациону форму којој је потребно додати објекте које желите да преко ње прегледате. Објекте додајете тако што их из Navigation Pane-а превлачите на Add New тастере. Тиме ће тастер добити назив објекта који му прикачите.
Слика 7.53 – Нова навигациона форма у Layout режиму
Додајте у горњем делу тастере за приказ три форме а са стране тастере за приказ три извештаја. Тастерима потом можете променити боје, изменити [139]
Microsoft Access 2010
нешто у називу, изменити назив форме, итд. Форму је на крају потребно сачувати. Ову сачувајте под називом NavigacionaForma (слика 7.54). На слици 7.54 видите да су форми у горњем делу додати тастери за преглед форми BracniStatus, Dete и Osoba, а са стране тастери за преглед извештаја Osobe, ProsekGodinaGradovi и GrupisanPoGradovima.
Слика 7.54 – NavigacionaForma
7.16 Прављење менија од празне форме и StartUp опције Прављење менија је корак ка креирању апликације од ваше базе података. У Access-у 2003 је постојао тзв. Switchboard (контролна табла) који је био вид главног интерфејса и у коме је било потребно дефинисати тастере и њихову намену. У верзији 2010 контролна табла је замењена навигационом формом. Но, ни једна ни друга варијанта не нуде слободу у креирању интерфејса какву можете имати креирањем празне форме и додавањем разних контрола и објеката на њу онако како ви то желите. Празну форму креирате кликом на иконицу Blank Form (Forms одељак Create ribbon). На слици 7.55 је приказана празна форма са активним Property Sheet одељком. Иако је празна, на форми су подразумевано активни тастери за навигацију и Record Selector. С обзиром да вам они неће требати, искључите их у Property Sheet одељку на картици Format, мењајући опције Record Selector и Navigation Buttons на No. Такође искључите Scroll Bars, Close Button и Min Max Buttons. Auto Center подесите на Yes и у Caption упишите Glavni Meni. [140]
Microsoft Access 2010
Слика 7.55 – Празна форма
Потом пређите у дизајн режим и за почетак активирајте заглавље и подножје форме (десни клик на Details секцију па Form Header/Footer). Додајте натпис (Label) у заглављу на ком ће писати GLAVNI MENI. Заглавље и подножје обојите по жељи. Прилагодите и боју слова натписа у заглављу. У подножје додајте Text Box са тренутним датумом – функција =Date(). Форму сачувајте као GlavniMeni. Сада форма у дизајн режиму изгледа као на слици 7.56. Пошто сте прилагодили заглавље и подножје форме и у њих унели неке основне детаље следећи корак је додавање контрола у секцију детаља. Листу контрола сте видели на слици 7.49, а контрола која је сада интересантна је Button (четврта иконица са леве стране у првом реду). И у овом случају се постарајте да је Use Control Wizards активан.
[141]
Microsoft Access 2010
Слика 7.56 – Изглед форме након почетних измена
Када сте селектовали Button контролу, кликните у секцији детаља где желите да је поставите. Отвара се Command Button Wizard прозор (слика 7.57).
Слика 7.57 – Command Button Wizard прозор
У левом делу бирате категорију команди, а у десном акцију из те категорије коју ће командно дугме извршити када се на њега кликне. Нека намена овог командног дугмета буде да отвара форме (категорија – Form Operations; акција – Open Form). У наредном прозору бирате форму коју желите да командно дугме отвара (одаберите форму Osoba). Потом вас Access пита да ли желите да дугме отвара форму и да се виде сви записи или да у додатном прозору одаберете неке [142]
Microsoft Access 2010
критеријуме филтрирања (одаберите прву опцију). Затим пишете назив који ће бити исписан на командном дугмету или бирате иконицу (напишите Osoba). На крају додељујете назив контроли (командном дугмету у овом случају) како ће га програм упамтити (напишите DugmeOsoba). Додајте још два тастера за отварање форми Pol и BracniStatus и два тастера за отварање извештаја Osoba и ProsekGodinaGradovi. Изнад тастера за отварање форми додајте натпис Forme, а изнад тастера за отварање извештаја натпис Izveštaji. Сада би форма GlavniMeni требало да има изглед као на слици 7.58. Примећујете и ефекте подешавања са почетка – нема скрол барова, дугмића за минимизирање и максимизирање, тастер за затварање стоји али је неактиван и уместо назива стоји натпис Glavni Meni.
Слика 7.58 – Форма GlavniMeni
У Command Button Wizard-у имате 6 категорија и за сваку од њих одређени број акција које се могу извршити. Значи да се командним тастерима може постићи доста тога. Покушајте да на форме које отварате преко глвног менија додате тастере којима ћете исте затварати. Овим ћете избећи Access-ове тастере и ово је још један корак којим без знања програмирања од ваше базе креирате апликацију. Такође можете на сваку од форми додати тастере за навигацију по записима а искључити Access-ове навигационе тастере. На крају можете подесити да се приликом покретања ваше базе аутоматски стартује одређена форма. У овом случају логично би било да то буде управо форма GlavniMeni. Ово можете урадити у Access Options прозору који позивате кликом на ставку Options у File позадинском менију. Потребно је да из Display [143]
Microsoft Access 2010
Form падајуће листе одаберете жељену форму, у овом случају форму GlavniMeni (слика 7.59). Поред овога, можете доделити назив апликацији који ће стајати на горњем оквиру прозора (Application Title), као и иконицу (Application Icon), која ће се такође појављивати на горњем оквиру прозора и на Windows Taskbar-у када апликацију буде отворена.
Слика 7.59 – Access Options прозор
Када завршите са подешавањима и кликнете на тастер ОК, појавиће се прозор (слика 7.60) у ком ће Access од вас тражити да апликацију затворите па поново отворите како би начињене измене биле прихваћене.
Слика 7.60 – Прозор са обавештењем
[144]
Microsoft Access 2010
Након што учините тражено и поново покренете апликацију, приметићете да се на горњем оквиру прозора, са леве стране, уместо иконице Access-a (слика 7.61a) налази иконица коју сте ви одабрали (слика 7.61b).
Слика 7.61a
Слика 7.61b
Такође, приметићете да се уместо назива фајла (слика 7.62а), налази назив за апликацију који сте доделили (слика 7.62b).
Слика 7.62а
Слика 7.62b
7.17 Modal Dialog форма Ова форма је такође новина верзије 2010. Отвара се из More Forms одељка (слика 7.63)
Слика 7.63 – More Forms одељак
Кликом на опцију Modal Dialog oтвара се овакав тип форме у дизајн режиму (слика 7.64).
[145]
Microsoft Access 2010
Слика 7.64 – Нова Мodal Dialog форма
Осим тастера OK и Cancel које можете обрисати, рекло би се да је ова форма уствари празна форма без клизача, Record Selector-a, тастера за минимизирање и максимизарање, итд. Такву форму смо и правили у претходном поглављу. Разлика у односу на празну форму из претходног поглавља очишћену од наведених детаља је та што ову форму морате затворити иначе вам није дозвољено да кликнете било где ван ње. Па тако, када бисте на њој и креирали тастере за отварање одређених објеката, морали бисте да је затворите по отварању објекта да бисте могли да му приступите.
[146]
Microsoft Access 2010
8. Извештаји Извештај, за разлику од форме, је намењен искључиво за приказивање података. Извештаје можете одштампати или експортовати у PDF формат па га потом послати мејлом.
8.1 Креирање извештаја помоћу чаробњака Извештаје креирате помоћу иконица са Reports одељка (слика 8.1) са Home траке са алатима.
Слика 8.1 – Reports одељак
Као и код форми постоји више начина за креирање извештаја, а ваш први извештај ћете креирати помоћу чаробњака (иконица Report Wizard). Кликом на наведену иконицу добијате прозор Report Wizard (слика 8.2) у коме бирате извор података тј. табелу или упит (одаберите табелу особа) и колоне те табеле или упита.
Слика 8.2 – Report Wizard прозор
У наредном прозору Access вам пружа опцију груписања коју ћете у овом тренутку прескочити. Потом опцију сортирања која је подразумевано подешена на растући редослед по колонама редом како сте их додали. Ви [147]
Microsoft Access 2010
сортирање извршите по презимену па имену у растућем редоследу одабиром наведених колона као на слици 8.3.
Слика 8.3 – Сортирање по одабраним колонама
У наредном прозору (слика 8.4) бирате распоред на извештају (изглед), оријентацију (водоравно или усправно) и опцију да се ширина колона аутоматски прилагоди величини папира.
Слика 8.4 – Избор изгледа извештаја [148]
Microsoft Access 2010
Коначно, дајете назив извештају и кликом на Finish извештај ће бити приказан (слика 8.5).
Слика 8.5 – Готов извештај
Извештај је сада приказан у Print Preview моду, а поред овог постоје Report View, Layout View и Design View који имају исту сврху као и код форми с тим што код извештаја нису могуће измене већ само преглед података. 8.1.1 Груписање код извештаја помоћу чаробњака Груписање по одређеној колони или колонама вршите одмах након избора извора података и жељених колона. Report Wizard прозор за извештај који ће да приказује име, презиме, брачни статус, град, адресу и телефон особа груписаних по градовима приказан је на слици 8.6.
[149]
Microsoft Access 2010
Слика 8.6 – Груписање по колони Град
Приликом додавања нивоа груписања (колоне град у нашем случају), тастер Grouping Options постаје активан. Притиском на овај тастер отварате додатни прозор (слика 8.7) у коме можете одабрати да ли ће сваки град бити посебна група (Normal), градови са истим почетним словом чинити једну групу или ће пак у једној групи бити градови са иста прва два, три, четири или пет слова. Оставите Normal oпцију.
Слика 8.7 – Интервали груписања
Извештај назовите GrupisanPoGradovima. Изглед извештаја у приказу за штампу (Print Preview) приказан је на слици 8.8.
[150]
Microsoft Access 2010
Слика 8.8 – Извештај груписан по градовима
Још једна корисна опција код извештаја груписаних по одређеној колони јесу опције сумирања (Summary Options). Oне постају активне у прозору за сортирање и то само када у извештају имате неку нумеричку колону. На пример, креирајте извештај који ће да приказује име, презиме, град и године особе груписан по градовима. Извештај сортирајте по презимену па имену у растућем редоследу (слика 8.9) и прикажите просек година по градовима.
Слика 8.9 – Прозор за сортирање са активним Summary Options тастером [151]
Microsoft Access 2010
Oно што је новина у овом примеру је приказано на слици 8.10. Приказан је прозор Summary Options а у њему чекирано поље Avg којим се рачуна просек година. Поред израчунавања суме, просека, минимума и максимума нумеричке колоне по одређеном нивоу груписања, можете одабрати да на извештају буде приказано процентуално учешће дате колоне у укупној суми (Calculate percent of total for sums).
Слика 8.10 – Summary Options прозор
Извештај сачувајте као ProsekGodinaGradovi. Изглед дела извештаја је приказан на слици 8.11. Видите да је просек година у Београду нешто изнад 45.5, а у Чачку мало преко 47.5. Лабеле са текстом који описује коришћену функцију Avg можете, као и остале објекте на извештају, у дизајн режиму модификовати тако да извештај поприми заиста леп и функционалан изглед.
[152]
Microsoft Access 2010
Слика 8.11 – Извештај са коришћеном Avg функцијом
8.2 Извештаји на основу упита Извештаје, као што смо већ поменули можете креирати и тако да за извор података узмете неки од креираних упита. Потребно је само да у првом Report Wizard прозору, одаберете жељени упит, а поступак је након тога потпуно исти као да сте бирали табелу. Сачувани извештај ће приликом сваког покретања прво консултовати упит због евентуалних измена у подацима а потом исте приказати у стандардној форми. Тако, прво креирате упит да бисте филтрирали податке, а потом на основу њега извештај да бисте те податке приказали у лепој, пријемчивој форми.
[153]
Microsoft Access 2010
8.3 Креирање извештаја над подацима из више табела Најлакши начин да креирате извештај над подацима из више табела је да прво креирате упит који ће да обједини те податке па након тога креирате извештај на основу тог упита. Разлика у поступку креирања је, као и код форми, додатни прозор (слика 8.12) у коме вршите избор начина груписања података. Након овог прозора, код извештаја можете извршити додатно груписање по некој колони.
Слика 8.12 – Одабир начина груписања података
Извештај груписан по полу па по брачном статусу је приказан на слици 8.13.
Слика 8.13 – Извештај груписан по полу па по брачном статусу [154]
Microsoft Access 2010
8.4 Брзо креирање извештаја Ако сте у журби и желите да што пре видите податке у приказу погодном за штампу, извештај можете креирати на брзину преко иконице Report (прва иконица на Reports одељку). Извештаји креирани овим путем могу за извор података узети било који објекат са Navigation Pane-а. Дакле, овакве извештаје можете креирати на основу табела, упита, форми или извештаја. Овим поступком ћете креирати извештај Tabular изгледа који ће за разлику од извештаја које креирате помоћу чаробњака, бити отворен у Layout режиму тако да одмах можете изменити распоред и величину објеката на извештају. Назив извештаја ће бити назив објекта на основу кога сте извештај креирали и неће бити аутоматски сачуван већ ћете то морати да обавите ручно. Извештај креиран на основу упита PrezimeNaS, приказан је на слици 8.14.
Слика 8.14 – Брзо креиран извештај
8.5 Измене изгледа извештаја Измене у изгледу извештаја вршите, као и код форми, у Layout или Design режиму. Извештај ProsekGodinaGradovi, отворен у дизајн режиму је приказан на слици 8.15.
[155]
Microsoft Access 2010
Слика 8.15 – Извештај у дизајн режиму
За разлику од форми, извештаји имају више секција. Поред основних (Report Header, Report Footer и Detail), ту су још Page Header и Page Footer секције, као и додатне секције које се појављују у случају да сте извршили груписање по некој колони или применили неку од Summary Options функција (у нашем случају то су секције Grad Header и Grad Footer јер је груписање извршено по колони Grad). Заглавље и подножје извештаја (Report Header и Report Footer) се појављују само једном и то Report Header на врху прве странице, а Report Footer на дну последње странице извештаја. Заглавље и подножје странице (Page Header и Page Footer) се појављују на врху и на дну сваке странице извештаја. Развлачење секција, промена положаја и величине објеката, као и измене форматирања текста на лабелама су већ објашњене код форми тако да их у овом поглављу нећемо детаљније објашњавати. Но, битно је напоменути да је ове ствари најбоље мењати у Layout режиму јер у њему видите и податке. Изглед извештаја у Layout режиму приказан је на слици 8.16.
[156]
Microsoft Access 2010
Слика 8.16 – Извештај у Layout режиму
8.6 Ручно креирање извештаја Сви извештаји којима смо се до сада бавили су били креирани помоћи чаробњака или по неком аутоматизму. Сада ћемо показати ручно креирање извештаја на празном папиру, повезивање са извором података и додавање колона од значаја за будући извештај. Потребно је да за почетак кликнете на иконицу Blank Report (Create ribbon, Reports oдељак). Пређите у дизајн режим и поступак на даље је веома сличан поступку ручног креирања форме. Повезивање са извором података, додавање колона, натписа, израчунатих поља итд. У Data картици Property Sheet одељка за извор података одаберите табелу Osoba. Следећи корак је карактеристичан само за ивзвештаје – треба подесити положај и величину странице (слика 8.17).
[157]
Microsoft Access 2010
Слика 8.17 – Page Setup трака са алатима
Када подесите положај и величину странице не бисте требали да као код форме развлачите површину извештаја јер ће онда можда део података које будете ту постављали прећи на наредну страну. Пре него што наставите, сачувајте извештај под називом OsobaRucno. Сада додајте заглавље и подножје извештају (десни клик па Report Header/Footer). Разлика између Report Header/Footer и Page Header/Footer je објашњена у поглављу 5.5. Из листе колона (Add Existing Fields) селектујте Ime, Prezime, Pol, Grad и DatumRodjenja и превуците их у Details секцију. Колоне се подразумевано распоређују једна испод друге као код форми. Да не бисте посебно превлачили сваки натпис у заглавље стране па испод у секцији детаља постављали Text Box-ове, кликните на иконицу Tabular (Аrrange ribbon). Извештај ће потом изгледати као на слици 8.18.
Слика 8.18 – Извештај OsobaRucno у дизајн режиму
Извештаје, као и форме можете улепшавати додавањем, логоа, слика, бојењем секција и разним другим типовима форматирања. С обзиром да су сва форматирања објашњена на формама, а код извештаја је поступак потпуно исти, овде их нећемо објашњавати.
8.7 Сортирање и груписање Претходни извештај је подразумевано сортиран као његов извор података (по примарном кључу табеле Osoba). Ако желите да другачије сортирате или групишете извештај, кликните на Group & Sort иконицу (слика 8.19) на Design ribbonu. [158]
Microsoft Access 2010
Слика 8.19 – Group & Sort иконица
Појављује се одељак на дну странице (слика 8.20) у ком имате опције да додате груписање или сортирање.
Слика 8.20 – Group, Sort and Total одељак
Кликом на Add a sort и избором одговарајуће колоне из менија примените сортирање по презимену а потом и по имену. Претходни прозор сада изгледа као на слици 8.21.
Слика 8.21 – Group, Sort and Total одељак по примењеном сортирању
Сада групишите записе на извештају према брачном статусу. Клик на Add a group и одаберите колону BracniStatus (слика 8.22).
Слика 8.22 – Group, Sort and Total одељак по примењеном груписању
Kao што видите на слици 8.22, груписање је додато након сортирања и потребно је да га померите на врх. То постижете кликом на плаву стрелицу на горе у десном делу прозора. Поред ове стрелице постоји и стрелица на доле и иконица за брисање груписања или сортирања.
[159]
Microsoft Access 2010
Када сте додали груписање по колони BracniStatus, Access је извештају додао секцију BracniStatus Header. Пошто сте груписање додали ручно, ова секција је празна и у њу би требало да додате колону BracniStatus. Такође бисте требали да натписе колона из заглавља странице пребаците у заглавље колоне по којој се врши груписање као на слици 8.23.
Слика 8.23 – Прилагођен дизајн извештаја након груписања
Када будете кренули да премештате натписе увидећете да то нећете моћи да урадите јер сте их претходно аутоматски распоредили коришћењем Tabular опције са Arrange ribbona. Потребно је само да уклоните аутоматкси распоред кликом на иконицу Remove Layout у истој секцији. Извештај у Print Preview приказу сада изгледа као на слици 8.24.
[160]
Microsoft Access 2010
Слика 8.24 – Извештај OsobaRucno
Уколико вам оквири око података нису потребни уклоните их мењајући Border Style на Transparent у Format картици Property Sheet-a. Претходно их обавезно селектујте. Приликом груписања постоје додатне опције у смислу сортирања групе на разне начине, аутоматског додавања натписа, пребрајања записа, итд. које можете позвати кликом на ставку More. На слици 8.25 су приказане Totals опције за групу BracniStatus. Одабрано је да се број особа са датим брачним статусом прикаже у подножју групе.
Слика 8.25 – Извештај OsobaRucno [161]
Microsoft Access 2010
8.8 Додавање поља за калкулације Додавање поља за калкулације на форме сте видели у поглављу 7.9. Поступак је сличан и код извештаја. Додајете Text Box-ове у које исписујете формуле. Морате водити рачуна о томе да оно што обухватате формулом буде покривено извором података који сте одабрали за ваш извештај. На пример, са претходног извештаја обришите колоне Ime и Prezime и додајте сами поље у коме ће бити исписано име и презиме особа (слика 8.26).
Слика 8.26 – Поље са спојеним колонама Ime и Prezime
8.9 Подизвештаји Подизвештај (Sub Report) је уграђен у други извештај и филтриран према њему. Као форме и подформе. На пример, имате извештај са основним подацима о особама и за сваког особа који има децу подизвештај са подацима о деци. Поступак креирања подизвештаја је исти као за извештај стим што унапред морате испланирати распоред података и прилагодити га главном извештају у који ћете га убацити. Креирајте празан извештај и на њега додајте колоне ImeDeteta, PrezimeDeteta и DatumRodjenja из табеле Dete. С обзиром да креирате подизвештај, Page Header неће бити видљив. Потребно је да активирате Report Header и да у њега пребаците лабеле са називима колона, а да потом искључите Page Header (слика 8.27). Извештај сачувајте као PodIzvestajDete.
Слика 8.27 – PodIzvestajDete у дизајн режиму [162]
Microsoft Access 2010
Извештај који ћете користити као подизвештај је у режиму за штампање приказан на слици 8.28.
Слика 8.28 – PodIzvestajDete у режиму за штампање
Ствари на које треба да обратите пажњу када креирате извештај који ће бити коришћен као подизвештај су: Да активирате заглавље извештаја и лабеле са називима колона пребаците у њега, а да заглавље странице искључите. Да прилагодите величину подизвештаја како не би био већи од извештаја у који ћете га убацити. Најлакши начин да подизвештај убаците у извештај је да га превучете у секцију детаља када је главни извештај отворен у дизајн режиму (слика 8.29), а можете, као и код форми, користити контролу Subform/Subreport.
Слика 8.29 – PodIzvestajDete додат на извештај Osoba [163]
Microsoft Access 2010
По додавању подизвештаја обришите лабелу са називом јер није потребна. Извештај Osoba са подизвештајем у режиму за штампање је приказан на слици 8.30.
Слика 8.30 – Извештај Osoba са подизвештајем
На слици видите да подизвештај има фиксну величину било да особа има једно, двоје или више деце, а да код особа који немају децу има много празног простора. Ово можете предупредити ако у дизајн режиму максимално по вертикали сузите подизвештај, а затим сузите и секцију детаља. Тада би извештај изгледао као на слици 8.31.
[164]
Microsoft Access 2010
Слика 8.31 – Извештај Osobe са подизвештајем
8.10 Креирање графикона на извештајима Иако Access није претерано славан програм за креирање графикона, он садржи ову опцију која може бити корисна у смислу потпунијег приказ излазних података намењених крајњим корисницима јер „Слика говори више од хиљаду речи“. Излазни подаци су наравно, приказани кроз извештаје па се и графикони додају на њих. Да бисте додали графикон, одаберите контролу Chart и развуците га где желите. Приметићете да се чаробњак свакако покреће иако сте можда искључили опцију коришћења чаробњака приликом коришћења контрола (Use Control Wizards). Графиконе можете креирати на основу података из табела или упита што можете видети на слици 8.32.
[165]
Microsoft Access 2010
Слика 8.32 – Chart Wizard почетни прозор
У овом случају креирајте графикон на основу упита PolGrad. Позиционирајте га у заглављу извештаја Osoba. Даљи кораци у креирању графикона су слични као у Excel-у па тако, у наредном прозору бирате колоне које желите да буду приказане на графикону. Изаберите колоне Pol и Grad како бисте приказали однос полова ваших познаника по градовима. Након тога бирате тип графикона. Изаберите стубичасти графикон. Испратите још пар корака чаробњака и кликните на Finish. Графикон се појављује на извештају у општем облику (слика 8.33) јер је извештај у дизајн режиму.
Слика 8.33 – Графикон у дизајн режиму [166]
Microsoft Access 2010
Графикон прилагођен вашим подацима ћете моћи да погледате у Print Preview режиму (слика 8.34).
Слика 8.34 – Графикон у Print Preview режиму
Детаље на графикону можете нормално мењати као у Excel-у. Потребно је да у дизајн режиму извештаја двоструко кликнете на графикон чиме ћете отворити нови прозор у коме можете вршити све потребне измене.
8.11 Штампање извештаја Примарна сврха извештаја јесте његово штампање и преглед на папиру. Прво што треба да урадите да бисте одштампали извештај јесте да га отворите. Извештај се подразумевано отвара у Report View приказу, а у њему су сви подаци приказани на једној страници. Стога је потребно прећи у Print Preview приказ. Ово је добро позната опција свих Office апликација која се користи управо да се види садржај документа онакав какав ће бити на папиру. Када пређете у Print Preview мод, потребно је да кликнете на иконицу Print или да прозор Print (слика 8.35) позовете комбинацијом тастера Ctrl+P. Извештај можете одштампати бржим путем без икаквих подешавања десним кликом на њега у Navigaton Pane делу и избором опције Print. [167]
Microsoft Access 2010
Слика 8.35 – Прозор Print
У прозору Print вршите избор штампача, број копија и дефинишете стране које ћете штампати.
8.12 Прављење PDF фајла од извештаја Често ће се десити да ће вам неко тражити да му извештај пошаљете мејлом. Најбољи формат фајла за овакву ситуацију је управо PDF. Постоји неколико начина да од вашег извештаја направите PDF фајл. Први део је исти као код штампања – отварање извештаја у Print Preview режиму. Даље, са Print Preview траке са алатима одаберете PDF or XPS иконицу која се налази у Data одељку (слика 8.36).
Слика 8.36 – Print Preview трака са алатима
Добијате прозор у коме можете изменити име фајлу и одабрати локацију на којој ће бити сачуван, а потом кликом на тастер Publish, креирате и аутоматски отварате PDF фајл.
[168]
Microsoft Access 2010
9. Макрои До сада сте се можда сусретали са макроима у другим програмима. Ако је тако, онда вам је већ познато да је макро у ствари мини програм са серијом задатих команди које се извршавају са одређеним циљем. Сусрет са макроима у овом приручнику сте већ имали кроз креирање тастера са разним наменама на формама, затим креирање почетне форме апликације и на њој тастера за отварање осталих форми и извештаја. Макрои омогућавају аутоматизацију разних задатака, односно додавања функционалности на форме, извештаје и контроле. Постоје два начина за креирање макроа: писање VBA (Visual Basic for Applications) кода или коришћење Macro Buildera, где селектујете и задајете жељене команде, а затим попуњавате додатне потребне информације за извршавање акција. Ми ћемо се до краја овог поглавља бавити другим, лакшим начином који не захтева познавање VBA програмског језика. Прозор Macro Builder позивате кликом на иконицу Macros која се налази у Macros & Code одељку Create траке са алатима (слика 9.1).
Слика 9.1 – Иконица Macros
Поменути прозор изгледа као на слици 9.3. Кликом на језичак отварате падајућу листу из које можете одабрати акцију коју желите. Међутим, у листи се тренутно не налазе све, већ само безбедне акције. Да бисте приказали све акције у падајућој листи, потребно је да кликнете на иконицу Show All Actions (слика 9.2) на Design траци са алатима.
Слика 9.2 – Design трака са алатима за макрое
[169]
Microsoft Access 2010
Слика 9.3 – Прозор за креирање Макроа
Са десне стране екрана се појављује Action Catalog (слика 9.4) у коме су фино сортиране све акције које можете применити у вашем макроу.
Слика 9.4 – Action Catalog
[170]
Microsoft Access 2010
9.1 Креирање Макроа Сада ћемо показати креирање простог макроа који ће, када се позове, избацити прозор са одређеним обавештењем. Покрените Macro Builder и из листе команди одаберите MessageBox. На слици 257 приказан је дизајн макроа који ће исписати поруку Dobro došli!!! Уз звучни сигнал (Beep). Прозор поруке ће бити типа информације (Information), a наслов прозора ће бити Poruka za Vas. Пре него што покренете макро морате га сачувати. У наслову прозора на слици 9.5 видите да је макро сачуван под називом Dobrodoslica.
Слика 9.5 – Дизајн макроа Dobrodoslica
Макро покрећете кликом на иконицу Run (слика 9.2) док сте још у дизајн режиму, или двокликом на његову иконицу у Macros секцији Navigation Pane-а (слика 9.6).
Слика 9.6 – Иконица макроа Dobrodoslica у Navigation Pane-у
По покретању макроа појавиће се прозор са обавештењем (слика 9.7)
Слика 9.7 – Резултат макроа Dobrodoslica [171]
Microsoft Access 2010
9.1.1 Креирање макроа за отварање објеката Као што смо већ навели, макрои се могу користити за отварање свих објеката. Да бисте креирали макро којим ћете на пример, отварати форму Osoba, потребно је да у прозору за дизајнирање макроа одаберете акцију OpenForm (слика 9.8).
Слика 9.8 – Дизајн макроа за отварање форме Osoba
По избору наведене акције, добијате додатне опције па тако можете одабрати у ком приказу ће се форма отварати (View), да ли ће се отварати у режиму за додавање, измене или Read Only режиму (Data Mode), можете додати неки филтер или услов, итд. Овај макро сачувајте под називом OtvaranjeFormeOsoba На готово исти начин можете креирати макро за отварање осталих Access објеката, с тим што ћете у зависности од објекта одабрати акцију OpenTable, OpenQuery или OpenReport.
9.2 Креирање окидача за макрое До сада смо покрили креирање макроа и њихово покретање као независних објеката. Али, они нам као такви и не значе много. Стога их је потребно доделити одређеним командама и поставити тзв „окидаче“ за њихово покретање. Најчешћи окидач је управо тастер односно командно дугме (Command Button) које се поставља на форме или извештаје. У поглављу 7.15 сте видели како се помоћу чаробњака креирају тастери којима се отварају форме или извештаји. Уколико приликом додавања команде [172]
Microsoft Access 2010
Button на форму или извештај искључите опцију Use Control Wizards, додаћете командно дугме које неће покретати никакав догађај када на њега кликнете. Да бисте подесили то командно дугме да на пример кликом на њега, отварате форму Osoba, потребно је да у Event картици Property Sheet одељка, селектујете претходно креирани макро OtvaranjeFormeOsoba у Оn Click делу (слика 9.9). Ово значи да ће се кликом на то командно дугме, покренути макро који отвара форму Osoba тј. кликом на то дугме отварате наведену форму.
Слика 9.9 – Додељивање макроа командном дугмету
У Event картици Property Sheet одељка (слика 9.9), поред Оn Click опције, имате још бројне опције када да се покрене одређени догађај односно макро.
9.3 Уграђени макрои Макрое не морате прво креирати па их онда покретати помоћу одређених тастера којима их доделите. Макрое можете креирати унутар одређеног објекта и позивати их на било који од начина излистаних на слици 261 и то не само преко командних дугмади. 9.3.1 Опција Event-Timer Interval Сада ћемо показати једну занимљивост коју можете искористити као завршно дотеривање ваше базе. Креирајте једноставну малу форму на којој ће се налазити лабела са текстом: Учитавање података... Отворити Property Sheet те форме и у картици Format подесити следеће: вредност поља Border Style на None, вредност поља Record Selectors и Navigation Buttons на No и вредност Scroll Bars на Neither. Форма је у дизај и радном режиму приказана на следећој слици (слика 9.10). Форму сачувајте под називом Ucitavanje. [173]
Microsoft Access 2010
Слика 9.10 – Форма Ucitavanje у дизајн и радном режиму
Након ових почетних подешавања везаних за изглед форме, потребно је да у картици Event подесите Timer Interval на 1000 (1 секунда), а да потом отворите Macro Builder кликом на три тачкице у десном делу оквира On Timer опције. Дизајнирајте уграђени макро као на наредној слици (слика 9.11). Овај макро можемо назвати сложеним јер се ипак састоји од два корака иако је он врло једноставан. Ова подешавања означавају да се један секунд након отварања форме Ucitavanje, она затвара, а затим се отвара форма Osoba.
Слика 9.11 – Уграђени макро у форму Ucitavanje
[174]
Microsoft Access 2010
Да би креирање ове форме имало смисла, потребно је отворити форму GlavniMeni у дизајн режиму и тастеру за отварање форме Osoba променити функцију. Потребно је да се сада кликом на тастер Osoba отвара форма Ucitavanje. Пошто сте овај тастер креирали помоћу чаробњака, он садржи уграђени макро те му је потребно изменити подешавања тако да уместо да отвара форму Osoba, oтвара форму Ucitavanje. Ово постижете кликом на три тачкице у десном делу опције On Click у Event картици Property Sheet одељка за наведени тастер. Ако сте све урадили како треба, пређите у радни режим форме GlavniMeni и тестирајте ову финесу. Кликом на тастер Osoba, требало би да се отвори форма Ucitavanje, а након једне секунде затвори и отвори форма Osoba. Ову финесу можете користити и као форму добродошлице која би се појавила и на екрану задржала пар секунди приликом покретања апликације. Кораци које би у овом случају требало да испратите су следећи: Креирати празну форму са текстом добродошлице (и графиком); Дефинисати јој жељени Timer Interval; Подесити Event да се након наведеног интервала форма затвара и Подесите опцију да се наведена форма покреће по покретању апликације (поглавље 9.16).
9.4 Додавање коментара макроу Како ваше знање у креирању макроа буде напредовало они ће постајати све сложенији. У таквим ситуацијама ће бити корисно ставити коментар како се у мору акција не бисте и сами изгубили. Коментар додајете простим избором опције Comment из падајуће листе док дизајнирате макро. Отвара се простор у који можете уписати коментар. Након тога, помоћу зелених стрелица, поставите коментар на жељено место. Макроу из претходног примера смо додали два коментара што је приказано на слици 9.12.
[175]
Microsoft Access 2010
Слика 9.12 – Коментари у макроу
Примећујете да су коментари исписани зеленим словима што их чини упечатљивим у односу на околни текст.
9.5 Под Макрои Када увидите корисност макроа, почећете све више да их користите чиме ће се они природно нагомилати у Navigation Pane-у. Уколико имате више макроа са сличном наменом, можете их комбиновати као под макрое у један макро. На пример, да на форми GlavniMeni тастере нисте креирали помоћу чаробњака са њиховим уграђеним макроима него да сте за сваки од тастера креирали макро који ће да отвара одређену форму или извештај, могли сте искористити ову могућност. Макро за наведени пример би изгледао као на слици 9.13. Макро је сачуван под називом PodMakroi, а сваки од под макроа је добио назив форме коју отвара.
[176]
Microsoft Access 2010
Слика 9.13 – Дизајн макроа PodMakroi
На крају је сваком од тастера потребно доделити намењени под макро. На слици 9.14 је приказано како су под макрои сачувани од стране Аccess-a – са префиксом који представља назив главног макроа. За командно дугме Osoba је потребно одабрати под макро PodMakroi.FormaOsoba, итд. [177]
Microsoft Access 2010
Слика 9.14 – Додељивање под макроа тастерима
Сада у Navigation Pane-у уместо три макроа имате један који их обједињује, што је, сложићете се, практичније.
9.6 Пречице за покретање макроа 9.6.1 Покретање макроа са Ribbona и Quick Access Toolbar-a Макрое можете покретати и тако што ћете им доделити иконице и поставити их на неку од постојећих палета са алаткама, Quick Access Toolbar или на нову палету са алаткама коју сами креирате. Потребно је да отворите Access Options прозор и да у зависности од тога да ли желите да иконицу за отварање макроа поставите на неки Ribbon или Quick Access Toolbar, то и одаберете у левом делу прозора (слика 9.15). Након тога у делу прозора Choose commands from је потребно да одаберете Macros. Нови Ribbon креирате кликом на тастер New Tab, а нову групу кликом на тастер New Group. Нову групу можете креирати и на постојећим рибонима. Називе рибонима и групама мењате помоћу тастера Rename. Кликом на овај тастер отварате прозор у коме можете одабрати иконицу за ваш макро или му променити назив који ће писати када задржите миша над иконицом али га је претходно потребно пребацити у дату групу. То постижете избором макроа из листе и кликом на тастер Add. У примеру приказаном на слици 9.15, макро Dobrodoslica је постављен на нови Ribbon који је назван Moja paleta, и у оквиру њега у групу Moji makroi. [178]
Microsoft Access 2010
Слика 9.15 – Додељивање под макроа тастерима
Ефекат овог подешавања можете видети на слици 9.16. Приказана је иконица за покретање макроа Dobrodoslica на ново креираној групи Moji makroi која се налази на новој палети са алаткама названој Moja paleta.
Слика 9.16 – Иконица за покретање макроа Dobrodoslica
9.6.2 Покретање макроа помоћу пречица са тастатуре Још један начин на који можете покренути макро је притиском на одређени тастер на тастатури. За ову сврху је потребно креирати један макро са специјалним именом а то је AutoKeys макро. Њиме је могуће сачувати одређене тастатурне пречице којима ће се извршавати одређене акције и функционисаће само у вашој бази података.
[179]
Microsoft Access 2010
Дакле, прво креирајте макро и одмах га сачувајте под именом AutoKeys. Начин на који он функционише је да у себи садржи под макрое где сваки од њих носи назив тастатурне пречице а извршава акцију коју ви дефинишете. Уколико на пример, тастеру F5 желите да доделите неку функцију, у називу под макроа мора стајати наведени тастер али у витичастим заградама – {F5}. Ове заграде користите за специјалне тастере тоша F1 – F12, Esc… На слици 9.17, приказан је дизајн AutoKeys макроа где је дефинисано да се притиском на тастер F5, покреће прозор са поруком „Pritisnuli ste taster F5“.
Слика 9.17 – Дизајн AutoKeys макроа
Резултат овог макроа односно прозор са поруком је приказан на слици 9.18.
Слика 9.18 – Резултат AutoKeys макроа
Пречице можете додавати и накнадно али обавезно као под макрое постојећег AutoKeys макроа. Само водите рачуна о томе да пречица коју желите да креирате већ не постоји. У сваком случају Access ће вас обавестити ако покушате да дефинишете пречицу коју није могуће користити. Ако желите да направите комбинацију тастера, на пример Shift+тастер, Ctrl+тастер, итд. за Shift се користи симбол +, за Ctrl симбол ^ [180]
Microsoft Access 2010
9.7 AutoExec макро Одређене StartUp опције у смислу дефинисања форме која ће се аутоматски отворити по покретању апликације смо обрадили у поглављу 7.15. АutoExec макро ради управо ове ствари али у много ширем обиму. Наиме, можете дефинисати низ акција које ће се извршити по покретању базе (не само покретање једне форме). Слично као код AutoKeys макроа, прво што треба да урадите је да креирате нови макро и назовете га AutoExec. Потом у оквиру њега дефинишете акције које желите да се изврше по стартовању базе. На пример, дефинишите да AutoExec макро покрене форму GlavniMeni и прикаже прозор са поруком Dobrodosli u moju aplikaciju! Дизајн макроа је приказан на слици 9.19. Да би макро имао смисла искључите StartUp опцију за наведену форму, па проверите како макро функционише тако што ћете затворити па поново отворити базу података.
Слика 9.19 – Дизајн AutoExec макроа
9.8 Shortcut Menu макро Још један користан тип макроа који може додатно олакшати рад приликом коришћења апликације јесте Shortcut Menu макро. Као што сам назив каже, намењен је креирању менија са пречицама који се позива десним кликом на жељени објекат у радном режиму.
[181]
Microsoft Access 2010
Поменути мени са пречицама креирате као посебан сет подмакроа (поглавље 9.5) сваки са својим задатком. Сам назив ставке која ће се појавити у менију је потребно откуцати у оквиру назива подмакроа (поље Submacro:). По завршетку креирања свих ставки, овај макро је потребно сачувати (слика 9.20). Уобичајени назив за макрое овог типа би били Stavke, StavkeMenija, StavkeMenijaNaziv, итд.
Слика 9.20 – Дизајн AddMenu макроа
Други корак у креирању Shortcut Menu макроа је креирање посебног макроа са акцијом AddMenu. У поље Menu Name се уписује назив будућег менија, док се у поље Menu Macro Name уписује, односно бира из падајуће листе назив макроа са ставкама менија (слика 9.21). Називи под којима се ови макрои обично чувају би били Meni, MeniZaNazivObjekta, итд. [182]
Microsoft Access 2010
Слика 9.21 – Дизајн AddMenu макроа
Трећи и последњи корак пре него што можете да почнете са употребом менија са пречицама (слика 9.22) је да исти доделите жељеном објекту. Ово постижете уписивањем назива AddMenu макроа креираног у претходном кораку (Meni) у поље Shortcut Menu Bar у оквиру Other картице палете са својствима (Property Sheet) наведеног објекта.
Слика 9.22 – Изглед менија са пречицама
9.9 Data макрои Овај тип макроа је новина Access верзије 2010. Data макрои су нешто између стандардних макроа и VBA (Visual Basic for Applications). Они се користе код различитих догађаја (event) у самим табелама и то пре измене или брисања, односно после уноса, ажурирања или брисања података. Data макрои се налазе на Table траци са алатима када је табела отворена у радном режиму (слика 9.23).
Слика 9.23 – Data макрои
Желите на пример да када год корисник унесе у табелу Osoba особу по имену Ана или Ивана, Access за PolID аутоматски додели вредност 2 (женски). Ово можете постићи коришћењем Data макроа Before Change којим се када сачувате нови, односно измените постојећи запис у табели догоди жељена акција. Потребно је да док се налазите у оквиру колоне на коју желите да примените макро, кликом на Before Change иконицу позовете прозор за [183]
Microsoft Access 2010
дефинисање жељене акције (слика 9.24). Прозор је готово исти као и за дефинисање класичних макроа стим што има много мање акција које можете употребити. У овом конкретном случају је за услов (If) ако је у колону Ime унето Ана или (Or) Ивана подешена акција SetField односно подесити вредност (Value) у ћелији одговарајуће колоне (овде је то PolID) на 2.
Слика 9.24 – Прозор за дефинисање Data макроа Before Change
[184]
Microsoft Access 2010
10. Модули и VBA Модули, просто речено, представљају напредне верзије макроа, односно скупине више макроа на једном месту. За креирање модула потребно је познавање VBA кода. VBA односно Visual Basic for Applications је Објектно Оријентисани језик за програмирање намењен ....дддддддд.............. Visual Basic Editor, односно прозор у коме куцањем VBA кода креирате модул позивате кликом на иконицу Module која се налази у Macros & Code одељку Create траке са алатима (слика 9.1). Поменути прозор изгледа као на слици 10.1.
Слика 10.1 – Visual Basic Editor
По отварању VBA Editor-а приметићете наредбу Option Compare Database која омогућава Access-у да упореди базу са пређашњим стањем како би утврдио измене. Веома је важно да ова наредба остане где јесте. Као што можете видети на претходној слици, VBA Editor представља само део Microsoft Visual Basic for Applications прозора који можете отворити на три начина: кликом на Visual Basic иконицу на Database Tools траци са алатима (слика 10.2), кликом на Visual Basic иконицу која се налази у Macros & Code одељку Create траке са алатима (слика 9.1) или помоћу тастатурне пречице Alt+F11.
[185]
Microsoft Access 2010
Слика 10.2 – Database Tools трака са алатима
Ако сте се нашли у Microsoft Visual Basic for Applications, а VBA Editor није активан, можете га позвати избором опције Module из Insert менија или кликом на иконицу Insert Module (друга иконица са леве стране). На који год начин да отворите Visual Basic Editor, он ће се појавити у идентичном стању у каквом сте га оставили. Садржај модула односно процедуре могу бити сачињене од потпрограма (Subroutine) и функција (Function).
10.1 Потпрограми За пример ћемо креирати потпрограм који ће приказивати чувену поруку „Здраво Свете!“. Код који је потребно откуцати у оквиру модула1 је следећи: Sub ZdravoPoruka () MsgBox (“Zdravo Svete!”) End Sub Sub је ознака која се односи на почетак потпрограма након чега следи назив потпрограма (у овом случају назив је ZdravoPoruka) са празним заградама на крају. Напомена: називи потпрограма не смеју садржати размаке и морају почети словом. End Sub је ознака која се односи на крај потпрограма. MsgBox (“Zdravo Svete!”) представља команду којом се, по покретању, појављује прозор са поруком исписаном између наводника у загради. Притиском на тастер F5 можете покренути (Run) ваш потпрограм. Резултат је приказан на слици 10.3.
Слика 10.3 – Резултат потпрограма HelloMessage
У оквиру једног модула можете имати више потпрограма све док је сваки од њих јасно оивичен Sub и End Sub наредбама. Access аутоматски креира хоризонталну линију како би раздвојио секције у оквиру једног модула. Уколико у оквиру модула имате више потпрограма, притиском на F5, покренуће се онај који је у том моменту активан односно онај у оквиру кога се налази курсор миша. Избором из падајуће листе у горњем десном углу [186]
Microsoft Access 2010
прозора можете ручно одабрати који ће део (секција) модула бити активан (слика 10.4).
Слика 10.4 – Избор секције у оквиру модула
Уколико сте пак притиснули F5 док курсор миша није био у оквирима једног од потпрограма, добићете прозор приказан на слици 10.5. У овом прозору можете одабрати који потпрограм желите и покренети га кликом на тастер Run.
Слика 10.5 – Прозор за покретање жељеног потпрограма
Подразумевани називи за модуле су Module1, Module2, итд., што и није од велике помоћи јер бисте у сваком тренутку требали знати који модул садржи које макрое. Промену назива модула можете извршити у оквиру Properties одељка Visual Basic Editor-а (слика 10.1 – доњи леви део екрана).
[187]
Microsoft Access 2010
Уколико сте креирали неки интересантан модул који желите да поделите са неким, најбољи начин је да код извезете (Export) у фајл који ћете даље дистрибуирати. Ово постижете десним кликом на модул у оквиру Project Explorer одељка Visual Basic Editor-а (слика 10.1 – горњи леви део екрана) и избором опције Export File. Подразумевана екстензија за ове фајлове је .bas Као што можете да извезете код у фајл, тако можете и увести (Import) фајл са одређеним кодом. Потребно је да из File менија одаберете опцију Import File. Уколико вам пак неки од модула више није од користи, можете га уклонити избором опције Remove из File менија или менија који добијате кликом на десни тастер миша на жељени модул. Покретање, преименовање и брисање модула можете извршити и преко Navigation Pane одељка као што то чините са свим осталим Access објектима. У наредним поглављима ћемо за приказ примера користити модуле из различитих база.
10.2 Функције У претходним поглављима смо на појединим местима користили функције а да нисмо ближе објаснили шта оне представљају. Функције које смо користили су тзв. Built-in или уграђене функције које Access поседује и које се могу користити самостално или у комбинацији са операторима, константама и индетификаторима како би израз учинили мање или више сложеним. Функција представља уграђени алгоритам који извршава прорачуне на основу података које наведете и враћа резултат. Функције можете користити на различитим местима, па тако, можете помоћу њих дефинисати својства колона у табелама, креирати израчуната поља у табелама, формама или извештајима, дефинисати услове филтрирања код упита па чак их применити и код макроа и VBA кода. Функције могу бити прилично једноставне, као она коју смо користили за дефинисање тренутног датума =Date(), нешто сложеније као када смо израчунавали број година особе Int((Date()-[DatumRodjenja])/365.25) или изузетно сложене где у оквиру једне имате одређен број угњеждених функција. У претходном изразу поред функција Int и Date, имамо константу 365.25, математичке операторе – и / и идентификатор DatumRodjenja. Као што смо [188]
Microsoft Access 2010
навели у поглављу 6.2, идентификатори су у ствари називи колона и у изразима се увек морају писати у угластим заградама. У претходним поглављима сте се упознали са Expression Builder прозором у ком се на лакши начин могу писати изрази. У њему су функције због боље прегледности подељене у 14 категорија (слика 10.6).
Слика 10.6 – Expression Builder прозор
Синтаксу функције смо већ наводили али није на одмет поновити. Функцију започињете њеним називом па у заградама дефинишете оно на шта желите да је примените. Уколико имате више аргумената у оквиру заграде, раздвојите их зарезом. Аргумент је иначе информација којом функција оперише односно на коју се примењује. Неке функције немају ни један аргумент али свакако морате иза назива функције отворити и затворити заграду. У тексту који следи биће наведене неке најосновније и најчешће коришћене датумске, текстуалне, конверзионе и математичке функције. Функције ћемо наводити по табелама са описом шта функција ради и примером како се примењује. Као аргументе функција односно вредности на које функцију примењујете, можете користити конкретне вредности (константе) или читаве [189]
Microsoft Access 2010
колоне (идентификаторе). Не заборавите да идентификаторе наводите у угластим заградама. 10.2.1 Датумске фунцкије У табели 3 су приказане неке датумске функције. Аргументи овог типа функција могу бити конкретни датуми и све колоне у којима имате исписан датум било ког формата. Табела 3. Датумске функције Назив Опис функције враћа текући датум у формату који је Date() дефинисан на вашем рачунару враћа текући датум и време у формату који Now() је дефинисан на вашем рачунару из датума враћа цео број месеца. У загради је потребно навести један аргумент у виду Month() колоне која садржи датум или конкретног датума. представља надрагдњу функцији Month() и MonthName() њоме се наведени број месеца представља његовим називом. Year() из датума враћа цео број године
Синтакса/Пример =Date() =Now()
Month([DatumRodjenja])
MonthName(Month([Dat umRodjenja])) Year([DatumRodjenja])
10.2.2 Фунцкије за рад са текстом У табели 4 ћемо приказати неке функције за рад са текстуалним пољима. Аргумент функција за рад са текстом могу, поред стрингова као константи, бити све колоне текстуалног типа, а неке функције можете применити и на било који тип податка. Стринг иначе представља низ карактера. Подсетимо се прво функције која два или више стрингова спаја у један. Ова функција се зове Concatenate, али као таква не постоји у листи функција. Можда је се сећате из Excel-а, а у Access-у се за ову сврху користи оператор &. Сећате га се из примера где смо спајали имена и презимена у једну колону [Ime] & " " & [Prezime] За спајање стрингова можете користити и оператор + али он за разлику од & као укупни резултат враћа Null вредност ако било који од аргумената има Null вредност. Ово би био добар начин, ако бисте у табели имали колону средње слово, да спојите: име, средње слово, тачку и презиме (Милош Ж. Папић). Било би логично да израз буде овакав: Ime & “ “ & SrednjeSlovo & “. “ & Prezime [190]
Microsoft Access 2010
Meђутим, ако неким особама нисте унели средње слово у резултату би остала тачка без средњег слова (Милош . Папић). У овом случају, да би све функционисало како треба, можете уместо оператора & искористити оператор + али заградама затворити део на који га примењујете: Ime & (“ “ + SrednjeSlovo + “. “) & “ “ & Prezime Резултат израза из заграде код особа код којих нисте навели средње слово (односно код којих је та вредност Null) би био Null (празно поље), тако да би остало спојено оно ван заграда (Милош Папић), а за особе код којих вредност средњег слова постоји, резултат био био комплетно име и презиме са средњим словом (Милош Ж. Папић). Табела 4. Функције за рад са текстом Назив Опис функције Претвара сва слова из аргумента у мала. Захтева један аргумент и то у виду стринга. LCase Ако стринг има вредност Null, то је и резултат. Као претходна с тим што претвара сва UCase слова у велика. Враћа задати број карактера из стринга са Left леве стране. Захтева два аргумента: стринг и број карактера који желите да прикажете Као претходна с тим што приказује Right карактере са десне стране. Из стринга брише све размаке. Има само Trim један аргумент. Форматира израз или стринг на начин који желите. Може садржати 4 аргумента али се Format последња два најчешће занемарују. Мана је што цео израз пребацује у текстуални тип податка.
Синтакса/Пример LCase(TrAlALa) Резултат: tralala UCase() Left (Milos,3) Резултат: Mil Right() Trim(tra la la) Резултат: tralala
Format(izraz, format)
10.2.3 Математичке и конверзионе фунцкије У табели 5 су приказане неке математичке и конверзионе функције. Конверзионе функције пребацују израз у одређени тип податка. Оне су добра надградња Format функцији. Ако сте на пример форматирали вредност неке израчунете колоне у којој се множи колона у којој пишу цене неког производа са вредношћу друге колоне где се налази вредност пореза, тако да формат буде Currency, он ће приказати податке у виду формата Currency али ће их сачувато као текстуалне. Конверзијом типа податка бисте ствари довели на чисто. Дакле, Format функција би у том случају била угњеждена у оквиру одређене конверзионе функције. [191]
Microsoft Access 2010
Табела 5. Математичке и конверзионе функције Назив функције Опис Приказује израз као Currency тип податка са симболом валуте FormatCurrency дефинисаним за ваш систем. Може садржати 5 аргумената али је само први довољан и потребан. Конвертује било који тип податка у CCur Currency подтип. Захтева само један аргумент. Заокружује број на онолико децималних места колико наведете. Има два Round аргумента: број и број децималних места
Синтакса/Пример
FormatCurrency(izraz)
CCur(izraz) Round(broj, broj decimala) Round(15.456, 2) Резултат: 15.46
Функција FormatCurrency би урадила исто као и фунцкија Format у претходном примеру са ценама али је поступак краћи и лакши. Функцијом CCur бисте урадили праву ствар – тип податка би заправо био Currency и подаци би тако и били приказани. 10.2.4 Функције у оквиру VBA Разлика између фунцкија и потпрограма је у томе што функцијама морате доделити вредност(и) са којима ће да оперишу. Да бисте то урадили, морате специфицрати Access-у како ће означити вредност(и) које добија и ког су типа података. У овом случају, креираћемо функцију која рачуна порез за одређени производ. Функцију креирате куцањем речи Function, иза чега, као и код потпрограма, следи назив функције: Function PDV (Cena As Currency) As Currency PDV = Cena * 0.18 End Function Приметили сте да код функција, за разлику од потпрограма, заграде иза назива нису празне. Наиме, у њих се уносе аргументу функције. Овим је креирана функција која рачуна порез у износу од 10% цене. Сада је потребно да функцију примените на конкретан случај. Можете откуцати потпрограм који ће да избацује прозор са поруком у оквиру кога се за рачунање крајње вредности користи претходна фунцкија: Sub CenaPorez () MsgBox ("Za cenu od 3850 dinara, porez od 18% iznosi " & PDV(3850) & " dinara.") End Sub [192]
Microsoft Access 2010
По покретању претходног модула, добићете следећи резултат:
Слика 10.7 – Резултат модула PDVodCene у оквиру кога је примењена фунцкија PDV
10.3 Променљиве, константе и калкулације 10.3.1 Декларисање променљивих Током писања VBA кода у Access-у, често ћете користити варијабле (променљиве) помоћу којих ћете представљати бројеве, низове карактера и објекте. Приликом именовања променљивих пожељно је да се водите следећим смерницама: 1. Назив треба недвосмислено да покаже чему ће она служити 2. Назив треба да буде што је могуће краћи 3. На почетку додати кратак префикс који ће се односити на тип податка На слици 10.8 је приказан Declaring Variables модул у оквиру кога су декларисане три променљиве; променљивој curCom је потом додељена вредност 1000 и то је приказано у прозору са поруком.
Слика 10.8 – Declaring Variables модул [193]
Microsoft Access 2010
Прва ствар коју треба да урадите када дефинишете варијаблу је Dim наредба. Дакле, прво напишете Dim а одмах затим и назив варијабле. Приметили сте да се код назива варијабле суфикс пише малим словом, а само име почетним великим словом. Ово није фиксно, али је често правило. Иза назива следи реч As а иза ње жељени тип податка за дату променљиву. Типовима података за променљиве ћемо се детаљнија бавити у наредном поглављу. Постоји могућност да више, или чак све променљиве декларишете у истом реду, али је горе приказани начин прегледнији и нашироко коришћен. На слици 10.8 сте приметили Option Explicit опцију исписану у врху прозора непосредно испод Option Compare Database. Овом опцијом се захтева да пре него што неку променљиву можете користити, исту морате декларисати. Наиме, уколико се у програму позовете на неку променљиву коју претходно нисте декларисали, Access ће приказати прозор са грешком. Ово је изузетно корисна опција коју је препоручљиво користити како бисте спречили појаву словних грешака код позивања на одређене променљиве касније у програму. 10.3.2 Типови података Дефинисање варијабли (променљивих), поред одређивања назива, подразумева и одређивање типа податка који се на њих односи. Access располаже следећим типовима података за променљиве: Boolean – постоје две опције Тrue/False односно 0 или 1 (Булова логика) Byte – можете уносити целе бројеве у распону од 1 до 255 Integer – покрива целе бројеве у распону од -32.768 до 32.767 Long – покрива целе бројеве у распону од -2.147.483.648 до 2.147.483.647 Single покрива децималне бројеве од -3.402823Е38 до -1.401298Е-45 у минусу и од 1.401298Е-45 до 3.402823Е38 у плусу Double иде од -1.79769313486231Е308 до -4.94065645841247Е-324 у минусу и од -4.94065645841247Е-324 до -1.79769313486231Е308 у плусу Currency – валуте од -922,337,203,685,447.5808 до 922,337,203,685,447.5807 Decimal – +/-79,228,162,514,264,337,593,543,950,335 без децималног зареза и 7.9228162514264337593543950335 са 28 места десно од децималног зареза Date – од 1.1.100 до 31.12.9999 [194]
Microsoft Access 2010
Object – односи се на било који објекат у оквиру базе (табела, форма...) String варијабилне дужине – од 0 до 2 милијарде карактера (готово увек се користи за низове карактера) String фиксне дужине – од 0 до 65.400 карактера (веома ретко се користи) Variant број – када нисте сигурни ког је подтипа дата променљива али знате да се ради о бројевима, можете искористити овај тип који има исти опсег вредности као Double подтип (највећи могући распон бројева) Variant карактер – исто као код претходне стим што се односи на низове карактера и има исти опсег вредности као String варијабилне дужине 10.3.3 Глобалне променљиве Глобалне променљиве су променљиве које се могу користити у више од једне процедуре у оквиру модула. Да бисте променљиву окарактерисали као глобалну, морате је декларисати у Declarations одељку модула (слика 10.9).
[195]
Microsoft Access 2010
Слика 10.9 – Глобална променљива
Овим постижете да уколико покренете други потпрограм, добијете у прозору са поруком резултат 50. Наиме, Access ће за вредност променљиве dblRate у другом потпрограму, узети вредност од 0.05 која јој је додељена у првом. Уколико се питате да ли је глобалној променљивој могуће доделити вредност већ у Declarations одељку, одговор је не. Са друге стране ако желите да јој у другом потпрограму доделите неку другу вредност у односу на ону већ додељену у првом, то можете учинити без проблема. 10.3.4 Константе и статичке променљиве Ако желите да променљива увек има исту вредност, можете је дефинисати као константу. Ако пак желите да променљива има исту вредност све док не затворите базу, онда је можете дефинисати као статичку променљиву. Када променљиву једном дефинишете као константу, у даљем току потпрограма јој више не можете мењати вредност. Константе такође могу бити глобалне стим [196]
Microsoft Access 2010
што им онда можете додељивати друге вредности у потпрограмима. Статичке променљиве не могу бити глобалне. Променљиве дефинишете као константе и статичке променљиве помоћу речи Const односно Static (слика 10.10).
Слика 10.10 – Константе и статичке променљиве
Резултат покретања потпрограма RedovnaIsporuka ће бити 20 у првом прозору са поруком док ће у другом бити 1 и сваки следећи пут ће бити увећан за 1. Ако затворите и поново отворите базу Promenljive, константа остаје 20, док се статичка променљива враћа на почетну вредност 1. Резултат покретања потпрограма SpecijalnaIsporuka ће бити 37 у првом прозору са поруком док ће у другом бити 1. Разлог овоме је што је у оквиру овог потпрограма, глобалној константи curCenaIsp додељена вредност 37, док променљива lngBrojIsp није дефинисана као статичка те ће сваки пут по покретању имати вредност дефинисану изразом а то је 1. 10.3.5 Математички оператори Математичким операторима смо се бавили у поглављу 6.2. Овде ћемо их на примеру модула Matematicki Operatori приказати и прокоментарисати (слика 10.11). [197]
Microsoft Access 2010
Слика 10.11 – Математички оператори
Као што видите на претходној слици, поред основних оператора за сабирање, одузимање, множење, дељење и степеновање, у ову групу спадају и оператори за целобројно дељење ( \) и модуларно дељење (Mod). Помоћу првог се добија цео број а помоћу другог остатак при дељењу. Што се тиче знака једнако (=), резултат његовог коришћења је у виду Буловог израза: True или False. Који би био резултат у претходном примеру? 10.3.6 Прозор са поруком Да бисте приказали резултате вашег VBA кода, обично ћете користити прозоре са порукама (Message Box – скраћено: MsgBox). За пример ћемо користити Message Box модул (слика 10.12). [198]
Microsoft Access 2010
Слика 10.12 – Команда MsgBox
Приметили сте да у оквиру претходног модула постоје 2 прозора са поруком. У обе варијанте би се добио исти резултат (слика 10.13). Дакле, можете доделити вредност променљивој и онда се у оквиру прозора са поруком позвати на ту вредност уз пропратни текст. Овај случај је активан у претходном модулу и чешће се користи. А можете и дефинисати String променљиву у оквиру које ћете искористити променљиву са резултатом а потом се у прозору са поруком позвати на наведену String променљиву – тренутно неактивне команде.
Слика 10.13 – Резултат команде MsgBox
MsgBox команда има 5 аргумената који су одвојени зарезима:
Уколико желите да прескочите неки од њих, оставите празно место између зареза. У претходном примеру су искоришћена прва 3 аргумента.
[199]
Microsoft Access 2010
Prompt – текст поруке у коме се обично поред резултата испише и пропратни текст и то обавезно под наводницима ("Cena iznosi: " & curCena & " dinara."). Симбол & се користи за повезивање текста и варијабли. Buttons – стил прозора са поруком у смислу понуђених тастера. Подразумевани је vbOkOnly којим се приказује само тастер OK. Title – назив прозора са поруком (Cena) 10.3.7 Низови Већина променљивих са којима оперишете ће имати по једну дефинисану вредност. Но, ако имате потребу да у оквиру једне променљиве имате више различитих вредности истог типа, можете користити низове. Низ декларишете као било коју другу променљиву стим што на крају у загради упишете колико ће садржати чланова. На пример, у брзој пошти вам у зависности од категорије пакета наплаћују различиту цену за слање истог. Рецимо да постоји 4 различитe категоријe. Наведене категорије бисте сачували у виду низа. Члановима низа можете доделити вредности на различите начине. Можете користити Do While петљу којом бисте члановима додељивали вредности учитавши их из неке табеле или их можете доделити директно кроз помоћну променљиву (у овм случају strKategorijeDostave – слика 10.14).
Слика 10.14 – Дефинисање низа
Приметили сте да је број чланова низа у загради дефинисан као 3, а рекли смо да постоји 4 различитe категоријe. Ово је зато што Access подразумевано третира нулу као почетак. Дакле, од 0 до 3 је укупно 4 вредности. Постоји опција да измените почетну цифру на 1 али се ретко користи. Опција је Option Base 1. [200]
Microsoft Access 2010
Такође сте приметили да је променљива strKategorijeDostave дефинисана као Variant тип иако је префиксом назначено да се ради о стрингу. Разлог је што једноставно то морате тако урадити када дефинишете низове. Резултат претходног потпрограма ће бити прозор са поруком Pismo јер је та вредност први члан низа, а на њу смо се позвали уписујући његову позицију у заграду иза променљиве strKategorijaDostave. Који број бисте унели у заграду да желите резултат Paket? Поред обичних низова, постоји и варијанта динамичких низова коју користите када на почетку не знате тачно колико ће низ имати чланова. Тада заграду у којој дефинишете број чланова будућег низа оставите празном. Вредности за чланове одређујете по истом поступку касније у потпрограму стим што том приликом морате искористити команду ReDim којом одређујете број чланова прослеђујете низа. Ако желите да назначите Access-у да желите да сачува вредности за чланове низа, иза команде ReDim је потребно да упишете реч Preserve (слика 10.15). У супротном Access би занемарио променљиву strKategorijaDostave и вредности које сте јој доделили.
Слика 10.15 – Дефинисање динамичког низа
10.3.8 Објектне променљиве Ако желите да преко VBA манипулишете табелом, формом или неким другим објектом у бази, морате тaj објекaт доделити променљивoj. Такве променљиве се, као што сам назив каже, називају објектне променљиве. Декларишете их на потпуно исти начин као стандардне променљиве стим што [201]
Microsoft Access 2010
је потребно да наведете тип објекте који желите да та променљива покрива. За пример ћемо креирати објектну променљиву за форму (слика 10.16).
Слика 10.16 – Објектне променљиве
Дакле, променљива под називом myForm ће покривати Форме. Након што креирате објектну променљиву, потребно је да јој помоћу Set команде доделите одређени објекат (у овом случају је то форма Proizvodi). На крају је креиран прозор са поруком у ком је искоришћено својство Name за форму која је додељена променљивој myForm. Као што можете да претпоставите, резултат овог потпрограма ће бити прозор са поруком чији је садржај назив форме додељене променљивој myForm а то је форма Proizvodi. Ипак, да бисте дошли до тог резултата, форма Proizvodi већ мора бити отворена. Објектној варијабли је могуће доделити и други објекат, па јој је тако у претходном примеру додељена и форма Klijenti. По завршетку рада са објектном променљивом, потребно је да јој подесите (Set) вредност на Nothing. Разлог томе је да ослободите меморију коју користи тај објекат.
10.4 Уређивање кода 10.4.1 Коментари Као и код макроа, процедурама можете додати коментаре. Коментар додајете тако што прво унесете ознаку за коментар у виду пола наводника (‘), након [202]
Microsoft Access 2010
чега исписујете коментар. Када померите курсор са откуцаног коментара, он ће позеленети. На примеру модула Poruke, креираног у претходном поглављу, то би изгледало овако:
Слика 10.17 – Коментари
Као што видите, коментар можете додати било где у оквиру модула. Симбол за коментар (‘) можете искористити и у сврси привременог онеспособљавања одређене команде у оквиру процедуре (eng. Comment Out). Једноставно убаците симбол испред команде чиме ће она бити протумачена као коментар. 10.4.2 Отклањање грешака Један од изазовнијих аспеката VBA програмирања у Access-у је манипулисање грешкама (Debbuging). Било да је грешка изазвана грешком у логици програма или да је направио корисник, пожељно је додати код којим ће ваше процедуре у случају грешке, моћи да се окончају на што безболнији начин. Постоје три начина за реаговање у случају грешке: 1. On Error GoTo 0 2. On Error Resume Next 3. On Error GoTo Handler Први начин је и подразумевани начин за третирање грешака. Он ће у случају грешке зауставити процедуру и приказати прозор са детаљима о грешци (слика 10.18).
[203]
Microsoft Access 2010
Слика 10.18 – Прозор са детаљима о грешци
У овом случају ради се о Type mismatch грешци која значи да је Access очекивао један тип податка, а добио други (нпр. слово уместо броја). Кликом на End се враћате у VBA едитор како бисте исправили грешку. Ово и није толико добар начин јер се може десити да неко почне да петља са вашим кодом. Други начин ће занемарити грешку и наставити са извршавањем кода док не стигне до краја. Овај начин се веома ретко користи. Трећи начин у случају грешке иде на линију кода означену као Handler у овом случају (ви је можете означити и другачије) и извршава код одатле. Ова наредба за решавање грешке се обично пише у дну. Но, веома је важно да изнад ње напишете команду Exit Sub како би Access знао да ту може да прекине извршавање кода ако до грешке није дошло. На пример, уколико сте направили поменуту Type mismatch грешку у потпрограму за сабирање бројева које унесете у смислу да сте унели слово уместо броја, Access ће приказати прозор са поруком Nije broj: Exit Sub Handler MsgBox (“Nije broj“) End Sub 10.4.3 Кретање кроз код корак по корак Покретањем одређене процедуре можете видети резултат њеног кода, међутим, неће вам бити приказано како се кроз кораке у извршењу кода стигло до тог резултата. Уколико вас ово из неког разлога занима, постоји опција да испратите извршење кода корак по корак. За пример ћемо користити код WatchValue модула који сабира све поруџбине у истоименој бази. [204]
Microsoft Access 2010
Да бисте испратили извршење кода корак по корак, потребно је да користите тастер F8. Сваким наредним притиском на F8, Access вас води до наредне команде (означене жутом бојом – слика 285) све док не дође до краја након чега излази из мода за тестирање. Још једна ствар која вам може користити је да се, док вртите петљу на F8, задржите курсором миша изнад curTotal варијабле. На овај начин ће се појавити Screen Tip са тренутном вредношћу наведене варијабле (у конкретном случају 44.95 – слика 10.19)
Слика 10.19 – Мод за тестирање кода WatchValue модула
Ако у било ком тренутку желите да зауставите мод за тестирање, а на желите да чекате да дође до краја, то можете урадити кликом на тастер Reset на стандардној палети са алаткама (Standard) или избором истоимене опције из Run менија. Уколико у оквиру потпрограма имате угњежден(е) потпрограм(е), можете га прескочити на Shift + F8 (Step Over) или искочити из њега на Ctrl + Shift + F8 (Step Out). Наведене команде имате и у оквиру Debug менија. 10.4.4 Тачка прелома Током тестирања вашег VBA кода, десиће се да ћете пожелети да на тренутак зауставите извршење процедуре, како бисте утврдили да то те тачке све ради како треба. То можете урадити постављањем тачке прелома (Breakpoint). У односу на преглед кода корак по корак, тачка(е) прелома вам може бити [205]
Microsoft Access 2010
кориснија у смислу да ви сами дефинишете у ком моменту ће се процедура зауставити односно до ког места ће се код извршити. Тачку прелома постављате/укидате кликом на сиву површину на левој страни VBA едитора у висини наредбе за коју желите да је вежете. На пример, у модул WatchValue ћемо поставити тачку прелома на крај сваког пролаза петље (слика 10.20). У оквиру кода можете поставити више тачки прелома. Комбиновање коментара и тачки прелома може бити веома корисно приликом уочавања и отклањања грешака у коду.
Слика 10.20 – Постављање тачке прелома
По покретању кода са уметнутом тачком прелома, Access ће, уместо да изврши код до краја, стати у тачки прелома. Поновним притиском на F5 наставиће се извршење кода до краја. У овом случају, Access ће се 3 пута зауставити јер смо тачку прелома поставили на крај петље, а табела на коју се код односи (Orders) има 3 записа (слика 10.21).
Слика 10.21 – Табела Orders [206]
Microsoft Access 2010
Као и код кретања кроз код на F8, помоћу тастера Reset можете у сваком тренутку прекинути извршење кода када је заустављен на тачки прелома. 10.4.5 Позиционирање прозора са поруком Позиција команде MsgBox у коду је веома важна. Као што видите на слици 10.22, ова команда је позиционирана након последњег израза у коме се рачуна варијабла коју желите да прикажете а пре краја петље.
Слика 10.22 – Команда MsgBox
С обзиром да се у претходном модулу ради о петљи, а која се односи на табелу у којој постоје 3 записа (слика 10.21), Access ће сукцесивно приказати 3 прозора са порукама – 1 након сваког пролаза кроз петљу. Коначни резултат је приказан на слици 10.23. Да сте одмах хтели да прикажете крајњи резултат, MsgBox команду сте могли да позиционирате на сам крај потпрограма, непосредно пре End Sub наредбе.
Слика 10.23 – Резултат команде MsgBox
[207]
Microsoft Access 2010
10.4.6 Праћење варијабле/израза Да бисте детаљно испратили сваку промену резултата у оквиру одређене варијабле или израза, можете користити Add Watch опцију из Debug менија. У оквиру Expression одељка је потребно да унесете варијаблу или израз који желите да пратите – у овом случају варијаблу curTotal (слика 10.24) и кликните на OK.
Слика 10.24 – Add Watch прозор
Након овога се у доњем делу VB прозора појављује Watches одељак са подацима о изразу/варијабли која се прати, вредности, типу и контексту (слика 10.25).
Слика 10.25 – Watches одељак
У овом случају смо поставили праћење на пример са тачком прелома из поглавља 10.4.4 где се сада и визуелно може испратити кретање резултата при сваком проласку кроз петљу у варијабли curTotal са додатним подацима о истој без потребе за креирањем серије прозора са поруком или периодичних задржавања курсора миша изнад дате варијабле. Праћење можете изменити или обрисати бирањем ставки Edit односно Delete из менија који добијате десним кликом на варијаблу/израз у Watches одељку.
[208]
Microsoft Access 2010
10.5 Услови и петље Многи сегменти кода које напишете, као што су додељивање вредности променљивој или приказивање прозора са поруком, ће бити покренути само по једном. Међутим, ако радите са табелама, низовима или групама објеката, може се указати потреба за понављањем неког сегмента више пута. За ову сврху се користе петље. 10.5.1 For Next петља For Next петља представља најлакши начин за понављање одређеног дела кода одређени број пута. Структура For Next петље је приказана на слици 10.26.
Слика 10.26 – For Next петља
Петљу почињете речју For иза које следи променљива и бројач (0 To 3), а завршавата речју Next иза које опет следи назив исте променљиве. Резултат For Next петље из претходног примера је приказан на слици 10.27.
Слика 10.27 – Резултат For Next петље
[209]
Microsoft Access 2010
Дакле, сукцесивно се појављују 4 прозора са поруком чији садржај представљају вредности чланова низа. Помоћу речи Step, можете одредити кораке пребрајања тако да се на пример пребраја сваки други члан (For intCounter = 0 To 3 Step 2); да пребрајање иде уназад (For intCounter = 3 To 0 Step -1), итд. Колико ће се прозора са поруком појавити и којим редоследом у претходна два примера? 10.5.2 For Each петља Потпуно исти резултат из претходног примера сте могли да добијете и помоћу For Each петље (слика 10.28). Међутим, For Each петља се користи да се одређена команда примени на сваки члан низа, колекције објеката (табеле, форме...), итд.
Слика 10.28 – For Each петља за низ
Пример за примену For Each петље на колекцију објеката (у овом случају све отворене форме у бази) је приказан на слици 10.29. Резултат ћа као што можете да претпоставите, бити прозори са поруком за сваку отворену форму у оквиру којих ће бити исписан назив те форме.
[210]
Microsoft Access 2010
Слика 10.29 – For Each петља за форме
10.5.3 Do While петља Do While петља служи за понављање одређеног дела кода све док је наведени услов тачан. Структура Do While петље је приказана на слици 10.30.
Слика 10.30 – Do While петља
Do While петља из претходног примера ће да сабира све вредности из колоне [OrderTotal] табеле (Recordset) Orders (слика 10.31) све док је укупан збир (curRT) мањи од 250 и да га приказује сукцесивно у прозорима са поруком. [211]
Microsoft Access 2010
С обзиром да се бавите подацима из табеле и да не знате да ли у њој има довољно записа како би вредност достигла 250 потребно је да додате још један услов And Not MyR.EOF који служи да настави да изводи кораке у оквиру петље док је испуњен услов <250 и док се није дошло до краја фајла – End Of File. Уколико не бисте додали овај услов када у табели заиста не би било довољно записа да се достигне 250, Access би избацио поруку са грешком и тиме онемогућио извршење потпрограма до краја.
Слика 10.31 – Табела Orders
10.5.4 Do Until петља За разлику од Do While петље која служи за понављање одређеног дела кода све док је наведени услов тачан, Do Until петља служи за понављање одређеног дела кода све док се наведени услов не испуни. Структура Do Until петље је приказана на слици 10.32. У овом примеру ће бити приказивани назив и цена сваког производа све док се не дође до краја фајла (EOF).
Слика 10.32 – Do Until петља [212]
Microsoft Access 2010
Резултат потпрограма DoUntilLoop() ће бити прозори са порукама о називу и цени сваког производа (слика 10.33) у табели PROIZVOD (слика 10.34).
Слика 10.33 – Резултат Do Until петље
Слика 10.34 – Табела PROIZVOD
10.5.5 If наредба If наредба служи за извршавање одређеног дела кода ако је услов тачан или ако није тачан. If наредбу ћемо показати на примеру уплате новца у банци и рачунања и приказивања провизије за различите категорије износа. Наиме, за све уплате (curIznos) од преко 10000 динара, провизија (curProvizija) ће износити 10%; за уплате преко 5000 провизија износи 8%; а у свим осталим случајевима (мање од 5000) провизија износи 5 процената од унетог износа. На слици 10.35 је приказан код за описани пример. Ово је сложена If наредба. Она може бити и доста простија тако да би на пример могла имати само један случај, рецимо први – за износе веће од 10000, и да нема дефинисану команду Else односно шта се дешава ако услов није испуњен. У том случају би резултат за све износе мање од 10000 био 0. Тако да приликом дефинисања просте If петље ипак треба дефинисати и шта ће се десити ако услов није испуњен.
[213]
Microsoft Access 2010
Слика 10.35 – If наредба
Приметили сте на претходној слици команду InputBox. Резултат ове команде је приказан на слици 10.36. Дакле, она служи да прикаже прозор за унос у коме корисник у овом случају уноси жељени износ за који жели да му се обрачуна провизија. Структура јој је слична као MsgBox команди с тим што MsgBox служи за приказ а InputBox за унос података.
Слика 10.36 – Input Box (прозор за унос)
Након уноса износа, Access ће приказати прозор са поруком о висини провизије (слика 10.37).
[214]
Microsoft Access 2010
Слика 10.37 – Висина провизије за 6780 динара
If наредба се веома често примењује у програмирању. На пример, помоћу ње можете специфицирати шта ће се десити ако корисник кликне на Yes а шта ако кликне на тастер No у неком прозору са поруком. 10.5.6 Case наредба Иако је If наредба јако корисна у програмирању, њена структура постаје компликована ако испитујете више од 3 услова. За испитивање 4 и више услова најчешће се користи Case наредба. Њена структура је веома проста и приказана је на слици 10.38. Користили смо исти пример као за If с тим што смо додали још један случај (енг. case): да провизија за износе од преко 1000 динара износи 5%, а за све остале (мање од 1000) износи 4%.
[215]
Microsoft Access 2010
Слика 10.38 – Case наредба
Case наредба започиње Select Case, а завршава се End Select конструкцијом.
10.6 Манипулација објектима у бази помоћу DoCmd VBA команде Помоћу DoCmd команде можете извршити велики број акција од којих су неке прикзане у наредним поглављима. 10.6.1 Отварање форме У поглављу 7.16 смо приказали креирање командних тастера којима се уз помоћ чаробњака могу доделити одређене акције (отварање форме, извештаја, излаз из Access-а, итд.) Уколико креирате командни тастер (Button) без чаробњака, можете му касније помоћу VBA кода доделити нешто сложеније акције.
[216]
Microsoft Access 2010
На слици 10.39 је приказана форма са командним тастером који је намењен за отварање форме Proizvodi али му акција која то омогућава још није дефинисана.
Слика 10.39 – Форма Proizvodi
Акцију која ће се извршити када кликнете на наведени тастер дефинишете у VBA едитору а у овом случају га позивате избором опције Code Builder из Choose Builder прозора (слика 10.40) који позивате десним кликом на наведени командни тастер и избором опције Build Event.
Слика 10.40 – Choose Builder прозор
Код којим дефинишете да се кликом на одабрани тастер отвори форма (OpenForm) Proizvodi је приказан на слици 10.41. Потпрограм је аутоматски назван Command0_Click(). Command0 је ознака командног тастера, а Click представља покретач акције која је дефинисана у телу потпрограма.
[217]
Microsoft Access 2010
Слика 10.40 – Код за отварање форме Proizvodi
Поред отварања наведене форме, у оквиру DoCmd команде можете уношењем зареза специфицирати остале атрибуте односно аргумента. На пример, у ком режиму ће форма бити отворена, како ће бити филтрирана (на основу неког постојећег упита у бази), у ком моду ће бити отворена (Read Only, Edit, Add mode...), тип прозора, итд.: DoCmd.OpenForm "Proizvodi", acLayout, "By Name", , acFormReadOnly, acWindowNormal На основу претходних аргумената, можете закључити да ће форма Proizvodi бити отворена у Layout режиму, филтрирана према упиту By Name, отворена у Read Only моду и у оквиру нормалног (подразумеваног) подешавања за приказ прозора објеката. 10.6.2 Отварање извештаја Поступак за подешавање командног дугмета да се кликом на њега отвара одређени извештај је потпуно исти као и за форме: DoCmd.OpenReport "Proizvodi", acViewPreview, "By Name", ,acWindowNormal Једина евентуална разлика би била да, с обзиром да се ради о извештају, пожелети да га отворите у Print Preview режиму тако да то можете подесити у првом аргументу одмах иза назива извештаја који планирате да отворите. У супротном, ако не наведете у ком режиму желите да прикажете извештај, он ће аутоматски бити прослеђен на штампање. 10.6.3 Отварање табеле DoCmd команда за отварање табеле кликом на командно дугме има потпуно исту синтаксу као у претходним случајевима, с тим што има само два додатна аргумента: режим и мод у коме планирате да се табела отвори. [218]
Microsoft Access 2010
DoCmd.OpenTable "Proizvod", acViewNormal, acEdit У овом случају је специфицирано да се табела отвори у нормалном односно радном режиму и у моду за слободно додавање и мењање садржаја (Edit). Ипак, ако намеравате да табелу отварају крајњи корисници, било би паметно ограничити их на само преглед њеног садржаја односно Read Only мод. 10.6.4 Отварање упита Упити, као и табеле, имају само 2 аргумента за додатно подешавање опција приликом отварања (режим и мод). Синтакса је иста као у претходним примерима: DoCmd.OpenQuery "Jeftino", acViewNormal, acReadOnly 10.6.5 Затварање објекта Затварање објеката у Access-у је веома прост задатак – клик на x у горњем десном углу прозора или комбинацијом тастера Ctrl+W. Уколико и овако прост задатак желите да испрограмирате, можете користити команду DoCmd.Close у оквиру које специфицирате тип објекта који желите да затворите, конкретну инстанцу наведеног типа, као и начин затварања (са сачуваним изменама, без сачуваних измена или са упитним прозором о томе да ли или не желите да сачувате измене). Синтакса је следећа: DoCmd.Close acReport, "Proizvodi", acSavePrompt Дакле, покретањем овог потпрограма ће извештај Proizvodi бити затворен и искочиће прозор у коме треба да се изјасните да ли или не желите да сачувате измене. Овај потпрограм се не везује ни за један командни тастер већ га морате креирати у оквиру новог модула. 10.6.6 Затварање базе и излаз из Access-а Ове две акције можете везати за командне тастере. Команда за затварање базе има следећу синтаксу: DoCmd.CloseDatabase Команда за излаз из Access-а је нешто сложенија јер има један аргумент у ком наводите да ли желите да приликом излаза буду сачуване све измене (acQuitSaveAll); да ли не желите чување измена (acQuitSaveNone) или да ли хоћете да се изјасните о томе кликом на Yes или No у упитном прозору (acQuitPrompt): [219]
Microsoft Access 2010
DoCmd.Quit acQuitSaveAll 10.6.7 Звучни сигнал и пешчаник Звучни сигнал и пешчаник често могу бити од користи јер означавају да се у том тренутку нешто догодилo или да се догађа. Команде су јако просте, а да бисте их доделили одређеним тастерима потребно је да у телу потпрограма откуцате следеће: DoCmd.Beep ‘команда за звучни сигнал DoCmd.Hourglass True ‘команда за укључивање пешчаника DoCmd.Hourglass False ‘команда за искључивање пешчаника 10.6.8 RunCommand сегмент Помоћу RunCommand сегмента можете проширити асортиман акција које се могу извршити коришћењем DoCmd команде на све оне иначе доступне преко постојећих менија односно иконица на тракама са алатима. Наиме, ако откуцате DoCmd.RunCommand и затим притиснете размак, добићете падајућу листу са стотинама доступних опција које можете доделити жељеном командном дугмету или ставки на траци са алатима. 10.6.9 Штампање Команда за штампање је слична оној за затварање објеката. Ако жарко желите да помоћу VBA кода одштампате неки извештај, то можете урадити на следећи начин. DoCmd.PrintOut acPrintAll, , , acHigh, 1, True Као што видите, ова команда има аргументе помоћу којих наводите да ли штампате цео извештај или само одређене стране, квалитет штампе, број копија и да ли ћете стране пустити да иду редом или сваку страну одштампати онолико пута колико наведете за број копија у претходном аргументу. 10.6.10 Упозорења Ако некада пожелите да искључите „досадна“ упозорења која вам Access шаље приликом, нпр. брисања записа из табеле или објекта из базе, то
[220]
Microsoft Access 2010
можете урадити додељивањем следеће команде одређеном командном дугмету: DoCmd.SetWarnings False Када пожелите да вратите обавештења, можете искористити исту команду са вредношћу True на постојећем или новом командном тастеру. 10.6.11 Бројач Опција слична макроу из поглавља 9.3.1 је опција за приказ бројача (мерача) за учитавање отварања неког објекта. У овом случају то ће бити форма Narudzbina. Као што видите на слици 10.41, поменутој форми је додат уграђени модул и то приликом њеног учитавања тј. отварања (Form_Load).
Слика 10.41 – Код за креирање бројача
У оквиру модула је дефинисан бројач (acSysCmdInitMeter) који спада у системске команде (SysCmd). Бројач има два аргумента и то текст који ће се појавити у доњем десном углу на статусној линији (Otvaranje forme.) и до колико се броји (обично је то 100). На слици 10.42 је приказан бројач који је стигао до краја. Бројаче иначе можете запазити у свим програмима приликом различитих акција, на пример снимања фајла и то поготово када се ради о већим фајловима јер тада учитавање дуже траје.
Слика 10.42 – Бројач
[221]
Microsoft Access 2010
С обзиром на брзину којом рачунар може отворити форму, ова акције је у претходном примеру на два места прекинута прозорима са порукама јер иначе не бисте стигли да региструјете да се било шта догодило. Први пут је прекинута када бројач дође до пола (SysCmd acSysCmdUpdateMeter, 50), а други пут када дође до краја (SysCmd acSysCmdUpdateMeter, 100).
10.7 Манипулација подацима у табелама путем VBA кода 10.7.1 Приказивање свих записа из табеле путем више прозора са поруком Уколико из неког разлога не желите да дозволите кориснику увид у податке из одређене табеле било преко табеле или форме, можете комбиновањем објектне променљиве (myR), Do Until петље и MsgBox команде излистати све записе одређене табеле (PROIZVOD) са вредностима из жељених колона ([Naziv] и [Cena]). Исти пример је коришћен у поглављу 10.5.4.
Слика 10.43 – Код за излиставање записа табеле PROIZVOD
Резултат ће бити приказивање прозора са поруком о називу и цени сваког производа (сваког записа) у табели PROIZVOD све док се не дође до краја фајла (EOF). 10.7.2 Додавање новог записа Додавање новог записа у табелу путем VBA кода је једна од могућности коју ћете ретко користити али је треба имати у виду. За пример ћемо у табелу [222]
Microsoft Access 2010
Prodavac помоћу VBA кода додати нови запис (AddNew) са подацима о имену (Nevena) и презимену (Stefanovic) (слика 10.44).
Слика 10.44 – Код за додавање новог записа
Табела продавац након покретања претходног кода изгледа као на слици 10.45. Изменом имена и презимена у оквиру кода и његовим поновним покретањем бисте могли додати још продаваца у табелу.
Слика 10.45 – Табела продавац након покретања претходног кода
10.7.3 Едитовање података Едитовање односно вршење измена над постојећим подацима у табелама такође можете вршити помоћу VBA кода. У наредном примеру ћемо користити табелу Klijent (слика 10.46).
Слика 10.46 – Табела Klijent [223]
Microsoft Access 2010
Помоћу VBA кода приказаног на слици 10.47 ћемо изменити вредност у колони ProdavacID са 2 на 3, а назив клијента уместо C market на Maxi.
Слика 10.47 – Измена података
Подешавања из претходног примера могу да се примене само на први запис одређене табеле (сета записа – енг. Recordset). Recordset се поред табела може односити и на упите. Да бисте могли да измените податке у оквиру неког другог записа, можете користити команду FindFirst која служи за проналажење записа. У наредном примеру је запису чија је вредност у колони KlijentID једнака 3, промењен Naziv у Dis и ProdavacID на 4. Као што видите на слици 10.48, линија кода са FindFirst командом мора да иде пре самих измена односно Edit команде, а да бисте је уопште могли користити, табелу Klijent морате отворити као динасет (dbOpenDynaset)
[224]
Microsoft Access 2010
Слика 10.48 – Измена података са напредним подешавањима
Табела Klijent би након примењених измена изгледала као на слици 10.49
Слика 10.49 – Табела Klijent након примењених измена
10.7.4 Измена система трансакције за потврђивање промена Одређене трансакције попут измене одређених података у табелама, Access подразумевано прихвата без потврде корисника. Уколико желите да повећате сигурност базе у смислу да подесите да Access избацује упитне или прозоре са поруком за сваку измену податка у оквиру одређене табеле, то можете урадити на следећи начин: На слици 10.50 је приказан модул PotvrdaTransakcija у оквиру кога су на почетку дефинисане две објектне променљиве: myR као Recordset и myWS као Workspace. Променљивој myR је додељена табела Klijent, док је променљивој myWS додељен постојећи радни простор односно корисничко окружење Access-а. Корисничко окружење се користи како бисте имали приступ трансакцијама што је дефинисано управо наредбом myWS.BeginTrans. Ова наредба као одговор мора да добије или CommitTrans или Rolback наредбу као одговор чиме се респективно извршава односно поништава трансакција.
[225]
Microsoft Access 2010
Слика 10.50 – Модул PotvrdaTransakcija
Do Until петља и If наредба су искоришћене да Access излистава записе дефинисане табеле (Klijent) све док не дође до краја и да уколико неки запис у колони ProdavacID има вредност 4, исту измени на 1. Након петље If наредбом испитује да ли је корисник кликнуо на тастер Yes (= vbYes) у прозору са поруком. Ако јесте, трансакција се извршава (CommitTrans), а ако није трансакција се поништава (Rolback) На крају се затвара табела и радни простор и „откачињу се“ од променљивих. По покретању претходног кода, добићете упитни прозор као на слици 10.51. Као што видите на слици упитни прозори су варијанта прозора са поруком са иконицом упитника (vbQuestion) и тастерима Yes и No (vbYesNo).
[226]
Microsoft Access 2010
Слика 10.51 – Упитни прозор
10.7.5 Приказ својстава колона Као што можете додати нови или изменити податке о постојећим записима, тако можете и проверити својства (подешавања) одређених колона (поља) у табелама ваше базе као што су величина поља, подразумевана вредност, обавезан унос, итд. У наредном примеру (слика 10.52) ћемо проверити дозвољени број карактера односно величину поља (Field Size) колоне Naziv у табели Klijent.
Слика 10.52 – GetProperty модул
Као што видите, дефинисане су 3 објектне променљиве и редом су им додељене одговарајућа база, дефиниције (својства) за одређену табелу и конкретна колона те табеле. Потом је у прозору са поруком (слика 10.53) приказана величина поља односно колоне (myF.Size) за колону Naziv табеле Klijent.
[227]
Microsoft Access 2010
Слика 10.53 – Резултат GetProperty модула
10.7.6 Затварање Recordset-a Раније смо поменули да се Recordset односи на табеле и некад упите у бази. Затварање Recordset-а у VBA коду није исто што и затварање табела односно упита у бази простим кликом на Close тастер. Наиме, затварање Recordset-а (слика 10.54) се односи на њихово уклањање из радне меморије рачунара, што је добра навика с обзиром да табеле у Access-у могу заузети много радне меморије.
Слика 10.54 – Затварање Recordset-а
Као што видите на претходној слици, објектној променљивој myR је додељена табела Proizvod и потом је приказан њен назив у прозору са поруком. За затварање табеле додељене објектној променљивој myR се користи команда myR.Close. На крају се ослободи и објектна променљива подешавањем на Nothing чиме се такође ослобађа део меморије. 10.7.7 Брисање записа Записе у табелама можете преко VBA кода обрисати исписивањем команде Delete. Претходно је наравно потребно да променљивој myR доделите и потом отворите жељену табелу, а затим помоћу команде FindFirst специфицирате запис(е) који желите да обришете. У овом случају то је запис [228]
Microsoft Access 2010
код кога је вредност у колони Naziv ‘Maxi’ (слика 10.55). Као што сте приметили коришћени су апострофи за навођење конкретне вредности. Ово је случај када наводите стринг у оквиру стринга.
Слика 10.55 – Брисање записа
Брисању записа треба приступати опрезно тј. запис треба обрисати када сте 100% сигурни да вам никада више неће затребати. Па чак и тада га можете оставити у бази поготову што сада хард дискови имају тако много простора. 10.7.8 Опције за проналажење записа Поред горе поменуте FindFirst опције, која проналази први запис у табели који одговара задатом критеријуму, постоје још и FindLast, FindNext и FindPrevious опције. FindLast опција функционише обрнуто од FindFirst – проналази последњи запис у табели који одговара критеријуму. Наведене опције функционишу беспрекорно када знате шта тражите и када добијете тај резултат. Међутим, шта се дешава ако оно што тражите не постоји у бази. Access ће свакако избацити неки резултат али он неће бити тачан. У оваквим ситуацијама је потребно да предвидите ситуацију и да помоћу If наредбе (слика 10.56) дефинишете акцију ако се деси да оно што тражите не постоји, као и супротну акцију – шта се дешава ако је све у реду тј. ако Access пронађе оно што тражите.
[229]
Microsoft Access 2010
Слика 10.56 – Проналажење записа
У претходном примеру се тражи последњи запис (FindLast) у коме је вредност у колони Naziv једнака Maxi и ако га пронађе Access избацује прозор са поруком о броју продавца (ProdavacID) а ако не (NoMatch = True), избацује прозор са поруком Traženi zapis ne postoji. Код проналажења записа можете користити џокерске знаке * и $ осим када користите If наредбу јер тада долази до грешке. 10.7.9 Кретање кроз табелу Команде за кретање кроз табелу од записа до записа су исте као и за проналажење записа: MoveFirst, MoveLast, MoveNext и MovePrevious. Access подразумевано стартује од првог записа, а да се позиционирате на последњи, следећи или претходни можете користити команде MoveLast, MoveNext и MovePrevious респективно. На слици 10.57 је приказан код за позиционирање на следећи запис (други по реду) у табели Proizvod и приказ његовог назива у прозору са поруком.
[230]
Microsoft Access 2010
Слика 10.57 – Кретање кроз табелу
10.7.10 Пребрајање записа За добијање информације о броју записа у одређеној табели, можете се послужити командом RecordCount.
Слика 10.58 – Пребрајање записа
Као што видите на слици 10.58 да бисте добили тачан резултат о броју записа у табели Klijent, исту морате отворити у нормалном режиму а не као Dynaset што је било неопходно у претходним поглављима.
[231]
Microsoft Access 2010
10.7.11 D функције D функције представљају сет функција које можете применити на податке да бисте извршили сабирање (DSum), пребрајање (DCount), тражење просека (DAvg), максимума (DMax), минимума (DMin) и варијансе (DVar и DVarp); као и за приказ првог (DFirst) и последњег записа у табели (DLast), односно приказ вредности у одређеној колони на основу вредности у некој другој (DLookup). Са неким од ових функција сте се већ сусрели у Excel-у на вежбама из предмета Рачунарске апликације. Синтакса наведених функција је облика DFunkcija ("Kolona", "TABELA"), на пример: DMax ("Cena", "NARUDZBINA"); DLast ("NarudzbinaID", "NARUDZBINA")... На крају наравно можете приказати резултат у прозору са поруком. У првом примеру би била пронађена максимална цена поруџбине, а у другом последњи запис у табели Наруџбина. Сложићете се да је ова варијанта доста једноставнија од декларисања објектне променљиве, додељивања табеле истој и проналажења првог односно последњег записа путем FindFirst односно FindLast команди. DLookup функција има и трећи аргумент у виду критеријума претраге па би њена синтакса изгледала овако: DLookup ("Cena", "NARUDZBINA", "KupacID = 103"); Дакле, тражи се прва вредност у колони цена, табеле наруџбина где је ID купца једнак 103.
10.8 Контрола форми и извештаја путем Me команде Када у VBA радите нешто са формама и извештајима, можете се на њих позивати путем Me кључне речи и дефинисати одређену акцију из сета подкоманди које Me команда садржи. Сви кодови које ћемо приказати у наредним поглављима су заправо Event кодови односно кодови за одређене догађаје, слично као у поглављу 10.6., с тим што су тамо везивани за команде тастере а овде за форме односно извештаје. 10.8.1 Забрана додавања, брисања и измена на форми Подешавање забране додавања, брисања или измена записа на форми ћемо показати на форми Narzdzbina. Пошто смо навели да се ради о Event кодовима, потребно је да отворите наведену форму у дизајн режиму и да [232]
Microsoft Access 2010
приступите Code Builder-у десним кликом на површину форме и избором опције Build Event. Када то урадите, добићете већ креирано заглавље потпрограма и само је потребно да откуцате следећи код (слика 10.59):
Слика 10.59 – Пребрајање записа
Као што видите на слици 10.59, код је дефинисан за догађај (Event) Form_Load. Веома је битно да о овоме водите рачуна јер се у зависности од тога где сте кликнули десним тастером и позвали Code Builder може догодити да догађаји буду FormFooter_Click(), Detail_Click(), итд. Ово можете променити ручно (прекуцавањем) или избором из падајуће листе у горњем левом углу прозора (слика 10.59). У наредним примерима ћемо користити Form_Load односно Report_Open догађаје као окидаче (Trigger) за акције које ћемо дефинисати. Подешавање забране додавања, брисања или измена записа на форми можете изменити и ручно у Data картици Property Sheet одељка. 10.8.2 Филтери и видљивост Уколико из неког разлога желите да спречите кориснике да могу да користе филтере на одређеној форми односно формама, то можете урадити пребацивањем вредности ставке Allow Filters у Data картици Property Sheet одељка на No. Међутим, можете искористити и VBA команду: Me.AllowFilters = False Корисна команда када се ради о филтерима је Me.Filter коју ако прикажете у прозору са поруком и вежете за неки командни тастер, можете користити да вам прикаже који је тренутно активан филтер на форми. Форму приликом отварања можете учинити невидљивом помоћу опције: Me.Visible = False [233]
Microsoft Access 2010
10.8.3 Натписи, слике и Scroll Bar-ови Форми или извештају можете ручно променити натпис (Caption), поставити позадинску слику (Picture) или уклонити Scroll Bar-ове у Format картици Property Sheet одељка. Но, ако ово желите да урадите преко VBA кода, потребне су вам опције Me.Caption, Me.Picture односно Me.ScrollBars. На пример, Me.Caption = "Prošlogodišnje narudžbine" Додаје натпис Prošlogodišnje narudžbine извештају Narudzbina у овом случају. Me.Picture = "C:\Users\Milos\Desktop" Извештају додаје позадинску слику која се налази на наведеној путањи. Као што видите, међу наводницима морате откуцати или копирати тачну путању на којој се налази жељена слика. Me.ScrollBars = 0 Пошто је додељена вредност 0 Scroll Bar-ови ће бити искључени. Иначе за укључивање хоризонталних се уписује 1; само вертикалних 2 и за оба 3. 10.8.4 Requery и Repaint Команда Requery служи да провери да ли је дошло до неких промена у табели која је извор података за форму (додавање, измена или брисање записа) и исте пресликава и на форму. Ова се иначе дешава када бисте форму затворили и поново отворили али ћемо у овом примеру искористити Form_Activate догађај за тригер ове акције. На овај начин ће промене у табели бити приказане и на форми чим добије фокус. Синтакса ове команде је Me.Requery Команда Repaint има сличну сврху као Refresh који користите повремено на Desktop-у када се нешто заглави или остане на екрану а не би требало. Синтакса ове команде је Me. Repaint 10.8.5 Извор података Као што знате, извори података за форме и извештаје могу бити табеле или упити. Ако желите да прикажете шта је извор података за форму или извештај који отварате, можете искористити команду Me.RecordSource. На пример: MsgBox "Ovaj izveštaj preuzima podatke iz " & Me.RecordSource
[234]
Microsoft Access 2010
11. Корисне алатке и опције 11.1 Compact & Repair Database Ова алатка служи за смањивање величине фајла базе података и одређене интерне поправке. Фајл који је коришћен као пример овог приручника је овом опцијом са 3.2 MB смањен на 2.1 MB. Moже се догодити да се величина фајла смањи још у већој мери чак и до 10 пута. Алатку можете покренути на два начина: Кликом на иконицу Compact & Repair Database на Database Tools траци са алатима (слика 11.1) или Кликом на исту иконицу у File позадинском менију.
Слика 11.1 – Database Tools трака са алатима
11.2 Чување документа за раније верзије Access-a Ово ће бити потребно ако базу података хоћете да пошаљете неком ко нема верзије Access-a 2010 или 2007 или да је једноставно отворите на рачунару који нема исте. Потребно је да кликнете на File позадински мени (слика 11.2); у њему одаберете под мени Save & Publish; потом oпцију Save Database As; и на крају верзију Access-a за коју желите да сачувате фајл. На слици видите тастер Save As, што значи да ће фајл бити снимљен као копија изворног фајла под именом које ви одредите.
[235]
Microsoft Access 2010
Слика 11.2 – File позадински мени
11.3 Backup базе података Прављење резервне копије базе података а и фајлова иначе у раду на рачунарима је врло корисна навика. У Access-у 2010 и backup вршите у Save & Publish подменију File позадинског менија. Потребно је кликнути на ставку Back Up Database a потом на иконицу Save As. Појављује се Save As прозор у ком примећујете да је називу фајла додат тренутни датум (слика 11.3). Наравно, назив можете променити како вама одговара.
Слика 11.3 – Назив backup фајла у Save As прозору
11.4 Object Dependencies Коришћењем ове опције коју позивате кликом на истоимену иконицу која се налази на Database Tools траци са алатима, можете видети који све објекти зависе од изабраног, као и од којих то објеката зависи изабрани објекат. Из претходне реченице можете закључити да је пре клика на иконицу Object Dependencies, потребно кликнути на објекат за који желите да проверите зависности.
[236]
Microsoft Access 2010
На слици 11.4 приказан је прозор Object Dependencies у коме можете видети који објекти зависе (Objects that depend on me) или од којих објеката зависи (Objects that I depend on) табела POL.
Слика 11.4 – Прозор Object Dependencies за табелу POL
11.5 Енкрипција базе података Под енкрипцијом се у Access-у 2010 подразумева постављање приступне лозинке бази података. Да бисте поставили лозинку прво морате отворити базу података у Exclusive моду. Претходно затворите вашу базу кликом на Close Database тастер који се налази у File позадинском менију. Након тога избором опције Open из истог менија пронађите вашу базу али пре него што кликнете на тастер Open кликните на стрелицу која се налази са десне стране истог тастера и одаберите опцију Open Exclusive (слика 11.5).
[237]
Microsoft Access 2010
Слика 11.5 – Отварање базе података у Еxclusive режиму
Након овог корака поново отворите File позадински мени, одаберите Info подмени а у њему опцију Еncrypt with Password (слика 11.6).
[238]
Microsoft Access 2010
Слика 11.6 – Info мени File позадинског менија
Појављује се прозор (слика 11.7) у коме треба да откуцате, па потом и потврдите лозинку којом желите да заштитите вашу базу.
Слика 11.7 – Прозор за подешављање лозинке
Када следећи пут будете покренули вашу базу података прво ће се појавити прозор у који је потребно унети лозинку (слика 11.8).
[239]
Microsoft Access 2010
Слика 11.8 – Прозор за унос лозинке
Процес супротан постављању лозинке, тј. енкрипцији, назива се декрипција (decrypt). Декрипција, тј. уклањање лозинке је могуће, такође, искључиво када се база отвори у Exclusive моду, а затим се из File позадинског менија, а Info подменија одабере Decrypt Database.
11.6 Дељење базе података У претходним поглављима успешно је креирана база података са корисничким интерфејсом. Кориснички интерфејс представља софистицирани поглед на базу података и намењен је крајњим корисници. Он обухвата, пре свега, форме и извештаје који комуницирају са табелама базе података читајући постојеће податке из ње и уписивањем нових података. Крајњи корисници обично нису упознати са шемом базе података, односно својствима табела, везама између њих, SQL кодом итд. База података, чији је поступак креирања описан у овом приручнику, као таква врло је рањива, јер се може десити да крајњи корисник приступи спецификацији табела и направи нежељене измене. Због овог и других проблема, било би добро на неки начин заштити базу података, односно ограничити приступ крајњим корисницима. Оно што Microsoft Access 2010 пружа у прилог овом проблему је алат Database Splitter, који се позива кликом на иконицу Аccess Database која се налази у оквиру Move Data одељка на Database Tools траци са алатима (слика 11.9).
Слика 11.9 – Database Tools трака са алатима
Кликом на ову иконицу позивате поменути Database Splitter прозор (слика 11.10), где је потребно кликнути на тастер Split Database.
[240]
Microsoft Access 2010
Слика 11.10 – Database Splitter прозор
Потом ће се појавити прозор Create Back-end Database (слика 11.11) у коме је потребно одабрати локацију у коме ћете сачувати нови фајл који се овом приликом креира. Примећујете да је у називу фајла додато _be. Oво значи да ће то бити фајл у коме се чувају само табеле, а постојећи фајл (Front-end) ће садржати линкове ка тим табелама и све остале објекте нетакнуте.
Слика 11.11 – Create Back-end Database прозор
Иконице табела тада добијају плаву стрелицу са леве стране (слика 11.12) која означава да су то линкови ка оригиналним табелама. Ако нешто од података унесете, измените или обришете из неке табеле у Back end делу исто ће се аутоматски десити и у Front end делу и обрнуто. [241]
Microsoft Access 2010
Слика 11.12 – Линковане табеле
Пре покретања Split Database опције, препоручује се прављење копије базе података, посебно у случајевима њене велике величине, јер може да се деси прекид овог процеса, при чему се губе одређени подаци. Важно је напоменути да ова опција не значи да база, над којом се она позива, остаје нетакнута и да се креирају нова два фајла, него управо напротив. База над којом се ради раздвајање остаје без табела, а креира се један додатни фајл где се те табеле премештају. Када се отвори креирани Back-end фајл ове базе, уочава се да она, заиста, садржи само табеле. Манипулација података у табелама је, као што смо већ навели могућа и у једном и у другом фајлу али структурне измене над табелама су могуће само у Back-end фајлу. Међутим, оно што се може приметити је да крајњи корисници који користе Front-end фајл и даље имају приступ дизајну корисничког интерфејса, као и то да могу видети који све објекти (форме, упити, извештаји...) постоје у апликацији. Ови проблеми се могу решити на следећи начин. Отворити Access Options прозор из File позадинског менија. Изабрати картицу Current Database. У делу Navigation потребно је искључити опцију Display Navigation Pane, којом се сакрива Navigation Pane односно приказ свих објеката (слика 11.13). Следеће, потребно је искључити ставке менија које омогућавају креирање нових објеката, увоз, извоз, и сл. Ово се подешава у истом прозору. Потребно је искључити опцију Allow Full Menus. Најзад, преостаје сакривање Shortcut menija. То су помоћни менији који се покрећу кликом десног тастера миша на жељени објекат (форму, извештај, табелу, упит), чиме се може приступити истом у Design View, Layout View и другим опцијама. То је опција Allow Default Shortcut Menus коју такође треба искључити.
[242]
Microsoft Access 2010
Слика 11.13 – Access Options прозор
Након свих ових измена и кликом на дугме ОК, јавиће се порука да је потребно затворити па поново отворити базу података како би се уочио њихов ефекат. Сакривени детаљи могу се поново открити кликом на стрелицу приказану на следећој слици (слика 11.14), а затим избором опције More Commands из које можете приступити Access Options прозору па искључене опције поново укључити.
Слика 11.14 – More Commands опција [243]
Microsoft Access 2010
11.7 Креирање ACCDE фајла С обзиром да све искључене опције можете поново укључити ово и није тако добро решење проблема ограничавања приступа крајњим корисницима. Коначно ограничавање приступа и заправо претварања ваше базе података у апликацију ћете извести креирањем ACCDE фајла. Овим се ваша база података компајлира у егзекутабилни (извршни) фајл. Да бисте то извели потребно је да у File позадинском менију одаберете Save & Publish подмени и у оквиру њега Make ACCDE опцију (слика 11.15). Након овога притисните тастер Save As и снимите ваш извршни фајл под називом који вам одговара на жељену локацију.
Слика 11.15 – More Commands опција
Иконица извршног фајла Аdresar приказана је на слици 11.16.
Слика 11.16 – Иконица ACCDE фајла
Још једна корисна опција за крај: држећи притиснут тастер Shift док отварате апликацију, можете је отворити у варијанти у којој су могуће даље измене и допуне.
[244]
Microsoft Access 2010
11.8 Корисне пречице У овом поглављу ће бити дат преглед корисних тастатурних пречица од којих смо неке већ поменули у претходним поглављима. Биће приказане генералне пречице које се често користе у Windows-у, Microsoft Office aпликацијама, као и специфичне пречице за Access. 11.8.1 Windows пречице Tab – прелазак на наредну контролу Shift + Tab – враћање на претходну контролу Shift + Alt – промена језика тастатуре Alt + Tab – промена фокуса између отворених прозора са избором Alt + Esc – промена фокуса између отворених прозора Win + D – Show Desktop (приказ радне површине) Win + E – отварање Windows Explorera Ctrl + W – Close (затварање активног прозора) 11.8.2 Microsoft Office пречице Ctrl + S – Save (чување измена на документу) Ctrl + X – Cut (исецање садржаја) Ctrl + C – Copy (копирање садржаја) Ctrl + V – Paste (лепљење садржаја) Ctrl + O – Open (отварање постојећег документа) Ctrl + N – New (креирање новог документа) Ctrl + Z – Undo (враћање корак назад) Ctrl + Y – Redo (враћање враћеног корака назад) Ctrl + L – Align Left (лево поравнање) Ctrl + E – Center (централно поравнање) Ctrl + R – Align Right (десно поравнање) Ctrl + J – Justify (обострано поравнање) Ctrl + F – Find (проналажење) Ctrl + H – Replace (замена) Ctrl + P – Print (штампање) 11.8.3 Microsoft Access пречице F11 – приказ/сакривање Navigation Pane-а Ctrl + G – отварање VBA Editor-а Alt + F11 – прелазак у VBA Editor/повратак u Access-ов главни прозор Tab – премештање на следећу ћелију Shift+Tab – враћање на претходну ћелију [245]
Microsoft Access 2010
Ctrl + R – Project Explorer (отварање/затварање Project Explorer-а када сте у Visual Basic Editor-у) F5 – Run (покретање кода) F8 – кретање кроз команде у коду Shift + F8 – Step Over (прескаче потпрограм током мода за тестирање) Ctrl + Shift + F8 – Step Out (искаче из потпрограма током мода за тестирање) F9 – Toggle Breakpoint (уметање/искључивање тачке прекида у линији кода на којој се налазите) Ctrl+Shift+F9 – искључивање свих тачака прелома у коду
[246]
Microsoft Access 2010
Литература [1]
Бечејски – Вујаклија, Д., Пантелић, О., Валок, Т. (2010). Microsoft Access 2007 – Приричник, Факултет организационих наука, Београд [2] Вељовић, А. (2005). Развој информационих система и база података, Технички факултет, Чачак [3] Вељовић, А. (2011). Увод у информационе системе и базе података, Технички факултет, Чачак [4] Лазаревић, Б., Марјановић, З., Аничић, Н., Бабарогић, С. (2010). Базе података, Факултет организационих наука, Београд [5] Аccess 2010 – noviteti, ANIMA multimedijalni kurs [6] TrainSignal Access 2010 Training with Additional Content [7] Lynda.com Access 2007 Essential Training [8] Lynda – Up and Running with VBA in Access [9] Infinite Skills Microsoft Access 2010 Training Bundle [10] http://www.znanje.org/abc/tutorials/accessMMX/accessMMX_abc.htm [11] http://office.microsoft.com/sr-latn-cs/access-help/osnove-dizajniranjabaze-podataka-HA010341617.aspx?CTT=5&origin=HA010341575#BMgood
[247]